diff options
27 files changed, 38 insertions, 2990 deletions
diff --git a/doc/deprecated.txt b/doc/deprecated.txt index a2dd32a20..4e2723d68 100644 --- a/doc/deprecated.txt +++ b/doc/deprecated.txt @@ -1,8 +1,5 @@ Currently deprecated: -- PRNGs X9.31 (no longer approved) and HMAC_RNG (non-standard) - Use HMAC_DRBG - - ECB Cipher_Mode for block ciphers - 3DES and SEED ciphersuites in TLS @@ -18,10 +15,3 @@ Currently deprecated: - All built in MODP groups < 2048 bits - All pre-created DSA groups - -- All support for BeOS/Haiku including BeOS entropy source - -- EGD entropy source - -- Unix process exec entropy source - diff --git a/src/build-data/buildh.in b/src/build-data/buildh.in index c84698804..c5912e4ed 100644 --- a/src/build-data/buildh.in +++ b/src/build-data/buildh.in @@ -106,12 +106,6 @@ #define BOTAN_RNG_AUTO_RESEED_TIMEOUT std::chrono::milliseconds(10) #define BOTAN_RNG_RESEED_DEFAULT_TIMEOUT std::chrono::milliseconds(50) -/** -* Controls how AutoSeeded_RNG is instantiated -*/ -#define BOTAN_AUTO_RNG_DRBG HMAC_DRBG -#define BOTAN_AUTO_RNG_HMAC "HMAC(SHA-384)" - /* * Specifies (in order) the list of entropy sources that will be used * to seed an in-memory RNG. The first few in the default list @@ -121,8 +115,7 @@ */ #define BOTAN_ENTROPY_DEFAULT_SOURCES \ { "timestamp", "rdseed", "rdrand", "proc_info", \ - "darwin_secrandom", "dev_random", "win32_cryptoapi", "egd", \ - "proc_walk", "system_stats", "unix_procs" } + "darwin_secrandom", "dev_random", "win32_cryptoapi", "proc_walk", "system_stats" } /* * These control the RNG used by the system RNG interface @@ -273,6 +266,24 @@ Each read generates 32 bits of output */ %{local_config} +/** +* Controls how AutoSeeded_RNG is instantiated +*/ +#if !defined(BOTAN_AUTO_RNG_HMAC) + + #if defined(BOTAN_HAS_SHA2_64) + #define BOTAN_AUTO_RNG_HMAC "HMAC(SHA-384)" + #elif defined(BOTAN_HAS_SHA2_32) + #define BOTAN_AUTO_RNG_HMAC "HMAC(SHA-256)" + #elif defined(BOTAN_HAS_SHA3) + #define BOTAN_AUTO_RNG_HMAC "HMAC(SHA-3(256))" + #elif defined(BOTAN_HAS_SHA1) + #define BOTAN_AUTO_RNG_HMAC "HMAC(SHA-1)" + #endif + // Otherwise, no hash found: leave BOTAN_AUTO_RNG_HMAC undefined + +#endif + // Append to macros living outside of functions, so that invocations must end with a semicolon. // The struct is only declared to force the semicolon, it is never defined. #define BOTAN_FORCE_SEMICOLON struct BOTAN_DUMMY_STRUCT diff --git a/src/build-data/policy/bsi.txt b/src/build-data/policy/bsi.txt index 62be245d0..8e6012c64 100644 --- a/src/build-data/policy/bsi.txt +++ b/src/build-data/policy/bsi.txt @@ -55,7 +55,6 @@ aes_ssse3 clmul # entropy sources -beos_stats cryptoapi_rng darwin_secrandom dev_random @@ -150,12 +149,4 @@ poly1305 siphash x919_mac -# rng -hmac_rng -x931_rng - -# entropy sources -egd -unix_procs - </prohibited> diff --git a/src/build-data/policy/modern.txt b/src/build-data/policy/modern.txt index 95c198658..29198950c 100644 --- a/src/build-data/policy/modern.txt +++ b/src/build-data/policy/modern.txt @@ -68,7 +68,6 @@ rdrand_rng system_rng # entropy sources -beos_stats cryptoapi_rng darwin_secrandom dev_random @@ -112,12 +111,7 @@ gost_3410 emsa_x931 pbkdf1 prf_x942 -x931_rng passhash9 cryptobox - -# questionable entropy sources -egd -unix_procs </prohibited> diff --git a/src/cli/speed.cpp b/src/cli/speed.cpp index e6d4a6b7f..0cb5e9947 100644 --- a/src/cli/speed.cpp +++ b/src/cli/speed.cpp @@ -37,10 +37,6 @@ #include <botan/hmac_rng.h> #endif -#if defined(BOTAN_HAS_X931_RNG) - #include <botan/x931_rng.h> -#endif - #if defined(BOTAN_HAS_FPE_FE1) #include <botan/fpe_fe1.h> #endif @@ -447,11 +443,6 @@ class Speed final : public Command bench_rng(Botan::system_rng(), "System_RNG", msec, buf_size); #endif -#if defined(BOTAN_HAS_X931_RNG) - Botan::ANSI_X931_RNG x931_rng(Botan::BlockCipher::create("AES-256").release(), new Botan::AutoSeeded_RNG); - bench_rng(x931_rng, x931_rng.name(), msec, buf_size); -#endif - #if defined(BOTAN_HAS_HMAC_DRBG) for(std::string hash : { "SHA-256", "SHA-384", "SHA-512" }) { @@ -459,14 +450,6 @@ class Speed final : public Command bench_rng(hmac_drbg, hmac_drbg.name(), msec, buf_size); } #endif - -#if defined(BOTAN_HAS_HMAC_RNG) - for(std::string hash : { "SHA-256", "SHA-384", "SHA-512" }) - { - Botan::HMAC_RNG hmac_rng(Botan::MessageAuthenticationCode::create("HMAC(" + hash + ")")); - bench_rng(hmac_rng, hmac_rng.name(), msec, buf_size); - } -#endif } else if(algo == "entropy") { diff --git a/src/lib/base/botan.h b/src/lib/base/botan.h index 230ac4244..5054b34b1 100644 --- a/src/lib/base/botan.h +++ b/src/lib/base/botan.h @@ -37,7 +37,7 @@ namespace Botan { * <dt>Message Authentication Codes<dd> * @ref CBC_MAC "CBC-MAC", CMAC, HMAC, Poly1305, SipHash, ANSI_X919_MAC * <dt>Random Number Generators<dd> -* AutoSeeded_RNG, HMAC_DRBG, HMAC_RNG, RDRAND_RNG, System_RNG, ANSI_X931_RNG +* AutoSeeded_RNG, HMAC_DRBG, RDRAND_RNG, System_RNG * <dt>Key Derivation<dd> * HKDF, @ref KDF1 "KDF1 (IEEE 1363)", @ref KDF1_18033 "KDF1 (ISO 18033-2)", @ref KDF2 "KDF2 (IEEE 1363)", * @ref sp800_108.h "SP800-108", @ref SP800_56C "SP800-56C", @ref PKCS5_PBKDF1 "PBKDF1 (PKCS#5), diff --git a/src/lib/entropy/beos_stats/es_beos.cpp b/src/lib/entropy/beos_stats/es_beos.cpp deleted file mode 100644 index 907ca37bb..000000000 --- a/src/lib/entropy/beos_stats/es_beos.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* -* BeOS EntropySource -* (C) 1999-2008 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/internal/es_beos.h> - -#include <kernel/OS.h> -#include <kernel/image.h> -#include <interface/InterfaceDefs.h> - -namespace Botan { - -/** -* BeOS entropy poll -*/ -size_t BeOS_EntropySource::poll(RandomNumberGenerator& rng) - { - size_t bits = 0; - - system_info info_sys; - get_system_info(&info_sys); - rng.add_entropy_T(info_sys); - - key_info info_key; // current state of the keyboard - get_key_info(&info_key); - rng.add_entropy_T(info_key); - - team_info info_team; - int32 cookie_team = 0; - - while(get_next_team_info(&cookie_team, &info_team) == B_OK) - { - rng.add_entropy_T(info_team); - - team_id id = info_team.team; - int32 cookie = 0; - - thread_info info_thr; - while(get_next_thread_info(id, &cookie, &info_thr) == B_OK) - rng.add_entropy_T(info_thr); - - cookie = 0; - image_info info_img; - while(get_next_image_info(id, &cookie, &info_img) == B_OK) - rng.add_entropy_T(info_img); - - cookie = 0; - sem_info info_sem; - while(get_next_sem_info(id, &cookie, &info_sem) == B_OK) - rng.add_entropy_T(info_sem); - - cookie = 0; - area_info info_area; - while(get_next_area_info(id, &cookie, &info_area) == B_OK) - rng.add_entropy_T(info_area); - - bits += 32; - } - - return bits; - } - -} diff --git a/src/lib/entropy/beos_stats/es_beos.h b/src/lib/entropy/beos_stats/es_beos.h deleted file mode 100644 index e40433b6c..000000000 --- a/src/lib/entropy/beos_stats/es_beos.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -* BeOS EntropySource -* (C) 1999-2008 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_ENTROPY_SRC_BEOS_H__ -#define BOTAN_ENTROPY_SRC_BEOS_H__ - -#include <botan/entropy_src.h> - -namespace Botan { - -/** -* BeOS Entropy Source -*/ -class BeOS_EntropySource final : public Entropy_Source - { - private: - std::string name() const override { return "system_stats"; } - - size_t poll(RandomNumberGenerator& rng) override; - }; - -} - -#endif diff --git a/src/lib/entropy/beos_stats/info.txt b/src/lib/entropy/beos_stats/info.txt deleted file mode 100644 index 9ae527f49..000000000 --- a/src/lib/entropy/beos_stats/info.txt +++ /dev/null @@ -1,17 +0,0 @@ -define ENTROPY_SRC_BEOS 20131128 - -<source> -es_beos.cpp -</source> - -<header:internal> -es_beos.h -</header:internal> - -<os> -haiku -</os> - -<libs> -haiku -> root,be -</libs> diff --git a/src/lib/entropy/egd/es_egd.cpp b/src/lib/entropy/egd/es_egd.cpp deleted file mode 100644 index fdc1c9a0f..000000000 --- a/src/lib/entropy/egd/es_egd.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* -* EGD EntropySource -* (C) 1999-2009 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/internal/es_egd.h> -#include <botan/parsing.h> -#include <botan/exceptn.h> -#include <botan/mem_ops.h> - -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> - -#include <sys/socket.h> -#include <sys/un.h> - -#ifndef PF_LOCAL - #define PF_LOCAL PF_UNIX -#endif - -namespace Botan { - -EGD_EntropySource::EGD_Socket::EGD_Socket(const std::string& path) : - m_socket_path(path), m_fd(-1) - { - } - -/** -* Attempt a connection to an EGD/PRNGD socket -*/ -int EGD_EntropySource::EGD_Socket::open_socket(const std::string& path) - { - int fd = ::socket(PF_LOCAL, SOCK_STREAM, 0); - - if(fd >= 0) - { - sockaddr_un addr; - clear_mem(&addr, 1); - addr.sun_family = PF_LOCAL; - - if(path.length() >= sizeof(addr.sun_path)) - throw Invalid_Argument("EGD socket path is too long"); - - std::strncpy(addr.sun_path, path.c_str(), sizeof(addr.sun_path)); - - int len = sizeof(addr.sun_family) + std::strlen(addr.sun_path) + 1; - - if(::connect(fd, reinterpret_cast<struct ::sockaddr*>(&addr), len) < 0) - { - ::close(fd); - fd = -1; - } - } - - return fd; - } - -/** -* Attempt to read entropy from EGD -*/ -size_t EGD_EntropySource::EGD_Socket::read(byte outbuf[], size_t length) - { - if(length == 0) - return 0; - - if(m_fd < 0) - { - m_fd = open_socket(m_socket_path); - if(m_fd < 0) - return 0; - } - - try - { - // 1 == EGD command for non-blocking read - byte egd_read_command[2] = { - 1, static_cast<byte>(std::min<size_t>(length, 255)) }; - - if(::write(m_fd, egd_read_command, 2) != 2) - throw Exception("Writing entropy read command to EGD failed"); - - byte out_len = 0; - if(::read(m_fd, &out_len, 1) != 1) - throw Exception("Reading response length from EGD failed"); - - if(out_len > egd_read_command[1]) - throw Exception("Bogus length field received from EGD"); - - ssize_t count = ::read(m_fd, outbuf, out_len); - - if(count != out_len) - throw Exception("Reading entropy result from EGD failed"); - - return static_cast<size_t>(count); - } - catch(std::exception) - { - this->close(); - // Will attempt to reopen next poll - } - - return 0; - } - -void EGD_EntropySource::EGD_Socket::close() - { - if(m_fd >= 0) - { - ::close(m_fd); - m_fd = -1; - } - } - -/** -* EGD_EntropySource constructor -*/ -EGD_EntropySource::EGD_EntropySource(const std::vector<std::string>& paths) - { - for(size_t i = 0; i != paths.size(); ++i) - m_sockets.push_back(EGD_Socket(paths[i])); - } - -EGD_EntropySource::~EGD_EntropySource() - { - for(size_t i = 0; i != m_sockets.size(); ++i) - m_sockets[i].close(); - m_sockets.clear(); - } - -/** -* Gather Entropy from EGD -*/ -size_t EGD_EntropySource::poll(RandomNumberGenerator& rng) - { - lock_guard_type<mutex_type> lock(m_mutex); - - secure_vector<byte> buf(BOTAN_SYSTEM_RNG_POLL_REQUEST); - - for(size_t i = 0; i != m_sockets.size(); ++i) - { - size_t got = m_sockets[i].read(m_io_buf.data(), m_io_buf.size()); - - if(got) - { - rng.add_entropy(m_io_buf.data(), got); - return got * 8; - } - } - - return 0; - } - -} diff --git a/src/lib/entropy/egd/es_egd.h b/src/lib/entropy/egd/es_egd.h deleted file mode 100644 index e0fb9c2d5..000000000 --- a/src/lib/entropy/egd/es_egd.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -* EGD EntropySource -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_ENTROPY_SRC_EGD_H__ -#define BOTAN_ENTROPY_SRC_EGD_H__ - -#include <botan/entropy_src.h> -#include <string> -#include <vector> -#include <botan/mutex.h> - -namespace Botan { - -/** -* EGD Entropy Source -*/ -class EGD_EntropySource final : public Entropy_Source - { - public: - std::string name() const override { return "egd"; } - - size_t poll(RandomNumberGenerator& rng) override; - - EGD_EntropySource(const std::vector<std::string>&); - ~EGD_EntropySource(); - private: - class EGD_Socket - { - public: - EGD_Socket(const std::string& path); - - void close(); - size_t read(byte outbuf[], size_t length); - private: - static int open_socket(const std::string& path); - - std::string m_socket_path; - int m_fd; // cached fd - }; - - mutex_type m_mutex; - std::vector<EGD_Socket> m_sockets; - secure_vector<uint8_t> m_io_buf; - }; - -} - -#endif diff --git a/src/lib/entropy/egd/info.txt b/src/lib/entropy/egd/info.txt deleted file mode 100644 index b7b951c2b..000000000 --- a/src/lib/entropy/egd/info.txt +++ /dev/null @@ -1,32 +0,0 @@ -define ENTROPY_SRC_EGD 20131128 - -load_on auto - -<source> -es_egd.cpp -</source> - -<header:internal> -es_egd.h -</header:internal> - -<libs> -solaris -> socket -qnx -> socket -</libs> - -<os> -android -aix -cygwin -darwin -freebsd -dragonfly -hpux -irix -linux -netbsd -openbsd -qnx -solaris -</os> diff --git a/src/lib/entropy/entropy_srcs.cpp b/src/lib/entropy/entropy_srcs.cpp index 5c232a56e..21dfcff41 100644 --- a/src/lib/entropy/entropy_srcs.cpp +++ b/src/lib/entropy/entropy_srcs.cpp @@ -24,18 +24,6 @@ #include <botan/internal/dev_random.h> #endif -#if defined(BOTAN_HAS_ENTROPY_SRC_EGD) - #include <botan/internal/es_egd.h> -#endif - -#if defined(BOTAN_HAS_ENTROPY_SRC_UNIX_PROCESS_RUNNER) - #include <botan/internal/unix_procs.h> -#endif - -#if defined(BOTAN_HAS_ENTROPY_SRC_BEOS) - #include <botan/internal/es_beos.h> -#endif - #if defined(BOTAN_HAS_ENTROPY_SRC_CAPI) #include <botan/internal/es_capi.h> #endif @@ -116,22 +104,6 @@ std::unique_ptr<Entropy_Source> Entropy_Source::create(const std::string& name) { #if defined(BOTAN_HAS_ENTROPY_SRC_WIN32) return std::unique_ptr<Entropy_Source>(new Win32_EntropySource); -#elif defined(BOTAN_HAS_ENTROPY_SRC_BEOS) - return std::unique_ptr<Entropy_Source>(new BeOS_EntropySource); -#endif - } - - if(name == "unix_procs") - { -#if defined(BOTAN_HAS_ENTROPY_SRC_UNIX_PROCESS_RUNNER) - return std::unique_ptr<Entropy_Source>(new Unix_EntropySource(BOTAN_ENTROPY_SAFE_PATHS)); -#endif - } - - if(name == "egd") - { -#if defined(BOTAN_HAS_ENTROPY_SRC_EGD) - return std::unique_ptr<Entropy_Source>(new EGD_EntropySource(BOTAN_ENTROPY_EGD_PATHS)); #endif } diff --git a/src/lib/entropy/unix_procs/info.txt b/src/lib/entropy/unix_procs/info.txt deleted file mode 100644 index ee382d8da..000000000 --- a/src/lib/entropy/unix_procs/info.txt +++ /dev/null @@ -1,25 +0,0 @@ -define ENTROPY_SRC_UNIX_PROCESS_RUNNER 20131128 - -<source> -unix_procs.cpp -unix_proc_sources.cpp -</source> - -<header:internal> -unix_procs.h -</header:internal> - -<os> -android -aix -cygwin -darwin -freebsd -haiku -hpux -irix -linux -netbsd -qnx -solaris -</os> diff --git a/src/lib/entropy/unix_procs/unix_proc_sources.cpp b/src/lib/entropy/unix_procs/unix_proc_sources.cpp deleted file mode 100644 index 429198706..000000000 --- a/src/lib/entropy/unix_procs/unix_proc_sources.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* -* Program List for Unix_EntropySource -* (C) 1999-2007 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/internal/unix_procs.h> - -namespace Botan { - -/** -* Default Commands for Entropy Gathering -*/ -std::vector<std::vector<std::string>> Unix_EntropySource::get_default_sources() - { - std::vector<std::vector<std::string>> srcs; - - srcs.push_back({ "netstat", "-in" }); - srcs.push_back({ "pfstat" }); - srcs.push_back({ "vmstat", "-s" }); - srcs.push_back({ "vmstat" }); - - srcs.push_back({ "arp", "-a", "-n" }); - srcs.push_back({ "ifconfig", "-a" }); - srcs.push_back({ "iostat" }); - srcs.push_back({ "ipcs", "-a" }); - srcs.push_back({ "mpstat" }); - srcs.push_back({ "netstat", "-an" }); - srcs.push_back({ "netstat", "-s" }); - srcs.push_back({ "nfsstat" }); - srcs.push_back({ "portstat" }); - srcs.push_back({ "procinfo", "-a" }); - srcs.push_back({ "pstat", "-T" }); - srcs.push_back({ "pstat", "-s" }); - srcs.push_back({ "uname", "-a" }); - srcs.push_back({ "uptime" }); - - srcs.push_back({ "listarea" }); - srcs.push_back({ "listdev" }); - srcs.push_back({ "ps", "-A" }); - srcs.push_back({ "sysinfo" }); - - srcs.push_back({ "finger" }); - srcs.push_back({ "mailstats" }); - srcs.push_back({ "rpcinfo", "-p", "localhost" }); - srcs.push_back({ "who" }); - - srcs.push_back({ "df", "-l" }); - srcs.push_back({ "dmesg" }); - srcs.push_back({ "last", "-5" }); - srcs.push_back({ "ls", "-alni", "/proc" }); - srcs.push_back({ "ls", "-alni", "/tmp" }); - srcs.push_back({ "pstat", "-f" }); - - srcs.push_back({ "ps", "-elf" }); - srcs.push_back({ "ps", "aux" }); - - srcs.push_back({ "lsof", "-n" }); - srcs.push_back({ "sar", "-A" }); - - return srcs; - } - -} diff --git a/src/lib/entropy/unix_procs/unix_procs.cpp b/src/lib/entropy/unix_procs/unix_procs.cpp deleted file mode 100644 index eae1b5255..000000000 --- a/src/lib/entropy/unix_procs/unix_procs.cpp +++ /dev/null @@ -1,292 +0,0 @@ - /* -* Gather entropy by running various system commands in the hopes that -* some of the output cannot be guessed by a remote attacker. -* -* (C) 1999-2009,2013 Jack Lloyd -* 2012 Markus Wanner -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/internal/unix_procs.h> -#include <botan/exceptn.h> -#include <botan/parsing.h> -#include <algorithm> -#include <atomic> - -#include <sys/time.h> -#include <sys/stat.h> -#include <sys/wait.h> -#include <sys/resource.h> -#include <unistd.h> -#include <signal.h> -#include <stdlib.h> - -namespace Botan { - -namespace { - -std::string find_full_path_if_exists(const std::vector<std::string>& trusted_path, - const std::string& proc) - { - for(auto dir : trusted_path) - { - const std::string full_path = dir + "/" + proc; - if(::access(full_path.c_str(), X_OK) == 0) - return full_path; - } - - return ""; - } - -size_t concurrent_processes(size_t user_request) - { - const size_t DEFAULT_CONCURRENT = 2; - const size_t MAX_CONCURRENT = 8; - - if(user_request > 0) - return std::min(user_request, MAX_CONCURRENT); - - const long online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN); - - if(online_cpus > 0) - return static_cast<size_t>(online_cpus); // maybe fewer? - - return DEFAULT_CONCURRENT; - } - -} - -/** -* Unix_EntropySource Constructor -*/ -Unix_EntropySource::Unix_EntropySource(const std::vector<std::string>& trusted_paths, - size_t proc_count) : - m_trusted_paths(trusted_paths), - m_concurrent(concurrent_processes(proc_count)) - { - } - -size_t UnixProcessInfo_EntropySource::poll(RandomNumberGenerator& rng) - { - rng.add_entropy_T(::getpid()); - rng.add_entropy_T(::getppid()); - rng.add_entropy_T(::getuid()); - rng.add_entropy_T(::getgid()); - rng.add_entropy_T(::getpgrp()); - - struct ::rusage usage; - ::getrusage(RUSAGE_SELF, &usage); - rng.add_entropy_T(usage); - -#if defined(BOTAN_TARGET_OS_HAS_CLOCK_GETTIME) - -#define CLOCK_GETTIME_POLL(src) \ - do { \ - struct timespec ts; \ - ::clock_gettime(src, &ts); \ - rng.add_entropy_T(ts); \ - } while(0) - -#if defined(CLOCK_REALTIME) - CLOCK_GETTIME_POLL(CLOCK_REALTIME); -#endif - -#if defined(CLOCK_MONOTONIC) - CLOCK_GETTIME_POLL(CLOCK_MONOTONIC); -#endif - -#if defined(CLOCK_MONOTONIC_RAW) - CLOCK_GETTIME_POLL(CLOCK_MONOTONIC_RAW); -#endif - -#if defined(CLOCK_PROCESS_CPUTIME_ID) - CLOCK_GETTIME_POLL(CLOCK_PROCESS_CPUTIME_ID); -#endif - -#if defined(CLOCK_THREAD_CPUTIME_ID) - CLOCK_GETTIME_POLL(CLOCK_THREAD_CPUTIME_ID); -#endif - -#undef CLOCK_GETTIME_POLL - -#endif - - return 0; - } - -void Unix_EntropySource::Unix_Process::spawn(const std::vector<std::string>& args) - { - if(args.empty()) - throw Invalid_Argument("Cannot spawn process without path"); - - shutdown(); - - int pipe[2]; - if(::pipe(pipe) != 0) - return; - - pid_t pid = ::fork(); - - if(pid == -1) - { - ::close(pipe[0]); - ::close(pipe[1]); - } - else if(pid > 0) // in parent - { - m_pid = pid; - m_fd = pipe[0]; - ::close(pipe[1]); - } - else // in child - { - if(::dup2(pipe[1], STDOUT_FILENO) == -1) - ::exit(127); - if(::close(pipe[0]) != 0 || ::close(pipe[1]) != 0) - ::exit(127); - if(close(STDERR_FILENO) != 0) - ::exit(127); - - const char* arg0 = args[0].c_str(); - const char* arg1 = (args.size() > 1) ? args[1].c_str() : nullptr; - const char* arg2 = (args.size() > 2) ? args[2].c_str() : nullptr; - const char* arg3 = (args.size() > 3) ? args[3].c_str() : nullptr; - const char* arg4 = (args.size() > 4) ? args[4].c_str() : nullptr; - - ::execl(arg0, arg0, arg1, arg2, arg3, arg4, NULL); - ::exit(127); - } - } - -void Unix_EntropySource::Unix_Process::shutdown() - { - if(m_pid == -1) - return; - - ::close(m_fd); - m_fd = -1; - - pid_t reaped = waitpid(m_pid, nullptr, WNOHANG); - - if(reaped == 0) - { - /* - * Child is still alive - send it SIGTERM, sleep for a bit and - * try to reap again, if still alive send SIGKILL - */ - kill(m_pid, SIGTERM); - - struct ::timeval tv; - tv.tv_sec = 0; - tv.tv_usec = 1000; - select(0, nullptr, nullptr, nullptr, &tv); - - reaped = ::waitpid(m_pid, nullptr, WNOHANG); - - if(reaped == 0) - { - ::kill(m_pid, SIGKILL); - do - reaped = ::waitpid(m_pid, nullptr, 0); - while(reaped == -1); - } - } - - m_pid = -1; - } - -const std::vector<std::string>& Unix_EntropySource::next_source() - { - const auto& src = m_sources.at(m_sources_idx); - m_sources_idx = (m_sources_idx + 1) % m_sources.size(); - return src; - } - -size_t Unix_EntropySource::poll(RandomNumberGenerator& rng) - { - // refuse to run setuid or setgid, or as root - if((getuid() != geteuid()) || (getgid() != getegid()) || (geteuid() == 0)) - return 0; - - lock_guard_type<mutex_type> lock(m_mutex); - - if(m_sources.empty()) - { - auto sources = get_default_sources(); - - for(auto src : sources) - { - const std::string path = find_full_path_if_exists(m_trusted_paths, src[0]); - if(path != "") - { - src[0] = path; - m_sources.push_back(src); - } - } - } - - if(m_sources.empty()) - return 0; // still empty, really nothing to try - - const size_t MS_WAIT_TIME = 32; - - m_buf.resize(4096); - - size_t bytes = 0; - - while(bytes < 128 * 1024) // arbitrary limit... - { - while(m_procs.size() < m_concurrent) - m_procs.emplace_back(Unix_Process(next_source())); - - fd_set read_set; - FD_ZERO(&read_set); - - std::vector<int> fds; - - for(auto& proc : m_procs) - { - int fd = proc.fd(); - if(fd > 0) - { - fds.push_back(fd); - FD_SET(fd, &read_set); - } - } - - if(fds.empty()) - break; - - const int max_fd = *std::max_element(fds.begin(), fds.end()); - - struct ::timeval timeout; - timeout.tv_sec = (MS_WAIT_TIME / 1000); - timeout.tv_usec = (MS_WAIT_TIME % 1000) * 1000; - - if(::select(max_fd + 1, &read_set, nullptr, nullptr, &timeout) < 0) - break; // or continue? - - for(auto& proc : m_procs) - { - int fd = proc.fd(); - - if(FD_ISSET(fd, &read_set)) - { - const ssize_t got = ::read(fd, m_buf.data(), m_buf.size()); - - if(got > 0) - { - rng.add_entropy(m_buf.data(), got); - bytes += got; - } - else - proc.spawn(next_source()); - } - } - } - - return bytes / 1024; - } - -} diff --git a/src/lib/entropy/unix_procs/unix_procs.h b/src/lib/entropy/unix_procs/unix_procs.h deleted file mode 100644 index 24c10fff0..000000000 --- a/src/lib/entropy/unix_procs/unix_procs.h +++ /dev/null @@ -1,93 +0,0 @@ -/* -* Unix EntropySource -* (C) 1999-2009,2013 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_ENTROPY_SRC_UNIX_H__ -#define BOTAN_ENTROPY_SRC_UNIX_H__ - -#include <botan/entropy_src.h> -#include <vector> -#include <botan/mutex.h> - -namespace Botan { - -/** -* Entropy source for generic Unix. Runs various programs trying to -* gather data hard for a remote attacker to guess. Probably not too -* effective against local attackers as they can sample from the same -* distribution. -*/ -class Unix_EntropySource final : public Entropy_Source - { - public: - std::string name() const override { return "unix_procs"; } - - size_t poll(RandomNumberGenerator& rng) override; - - /** - * @param trusted_paths is a list of directories that are assumed - * to contain only 'safe' binaries. If an attacker can write - * an executable to one of these directories then we will - * run arbitrary code. - * @param proc_count number of concurrent processes executing, - * when set to zero, number of processors is used - */ - Unix_EntropySource(const std::vector<std::string>& trusted_paths, - size_t proc_count = 0); - private: - static std::vector<std::vector<std::string>> get_default_sources(); - - class Unix_Process - { - public: - int fd() const { return m_fd; } - - void spawn(const std::vector<std::string>& args); - void shutdown(); - - Unix_Process() {} - - Unix_Process(const std::vector<std::string>& args) { spawn(args); } - - ~Unix_Process() { shutdown(); } - - Unix_Process(Unix_Process&& other) - { - std::swap(m_fd, other.m_fd); - std::swap(m_pid, other.m_pid); - } - - Unix_Process(const Unix_Process&) = delete; - Unix_Process& operator=(const Unix_Process&) = delete; - private: - int m_fd = -1; - int m_pid = -1; - }; - - const std::vector<std::string>& next_source(); - - mutex_type m_mutex; - const std::vector<std::string> m_trusted_paths; - const size_t m_concurrent; - - std::vector<std::vector<std::string>> m_sources; - size_t m_sources_idx = 0; - - std::vector<Unix_Process> m_procs; - secure_vector<byte> m_buf; - }; - -class UnixProcessInfo_EntropySource final : public Entropy_Source - { - public: - std::string name() const override { return "proc_info"; } - - size_t poll(RandomNumberGenerator& rng) override; - }; - -} - -#endif diff --git a/src/lib/rng/auto_rng/auto_rng.cpp b/src/lib/rng/auto_rng/auto_rng.cpp index a9da085bc..e631604c9 100644 --- a/src/lib/rng/auto_rng/auto_rng.cpp +++ b/src/lib/rng/auto_rng/auto_rng.cpp @@ -6,19 +6,16 @@ #include <botan/auto_rng.h> #include <botan/entropy_src.h> - -#if defined(BOTAN_HAS_HMAC_DRBG) - #include <botan/hmac_drbg.h> -#endif - -#if defined(BOTAN_HAS_HMAC_RNG) - #include <botan/hmac_rng.h> -#endif +#include <botan/hmac_drbg.h> #if defined(BOTAN_HAS_SYSTEM_RNG) #include <botan/system_rng.h> #endif +#if !defined(BOTAN_AUTO_RNG_HMAC) +#error "No hash function defined for AutoSeeded_RNG in build.h (try enabling sha2_32)" +#endif + namespace Botan { AutoSeeded_RNG::~AutoSeeded_RNG() @@ -29,18 +26,18 @@ AutoSeeded_RNG::~AutoSeeded_RNG() AutoSeeded_RNG::AutoSeeded_RNG(RandomNumberGenerator& underlying_rng, size_t reseed_interval) { - m_rng.reset(new BOTAN_AUTO_RNG_DRBG(MessageAuthenticationCode::create(BOTAN_AUTO_RNG_HMAC), - underlying_rng, - reseed_interval)); + m_rng.reset(new HMAC_DRBG(MessageAuthenticationCode::create_or_throw(BOTAN_AUTO_RNG_HMAC), + underlying_rng, + reseed_interval)); force_reseed(); } AutoSeeded_RNG::AutoSeeded_RNG(Entropy_Sources& entropy_sources, size_t reseed_interval) { - m_rng.reset(new BOTAN_AUTO_RNG_DRBG(MessageAuthenticationCode::create(BOTAN_AUTO_RNG_HMAC), - entropy_sources, - reseed_interval)); + m_rng.reset(new HMAC_DRBG(MessageAuthenticationCode::create_or_throw(BOTAN_AUTO_RNG_HMAC), + entropy_sources, + reseed_interval)); force_reseed(); } @@ -48,10 +45,9 @@ AutoSeeded_RNG::AutoSeeded_RNG(RandomNumberGenerator& underlying_rng, Entropy_Sources& entropy_sources, size_t reseed_interval) { - m_rng.reset(new BOTAN_AUTO_RNG_DRBG(MessageAuthenticationCode::create(BOTAN_AUTO_RNG_HMAC), - underlying_rng, - entropy_sources, - reseed_interval)); + m_rng.reset(new HMAC_DRBG( + MessageAuthenticationCode::create_or_throw(BOTAN_AUTO_RNG_HMAC), + underlying_rng, entropy_sources, reseed_interval)); force_reseed(); } diff --git a/src/lib/rng/auto_rng/info.txt b/src/lib/rng/auto_rng/info.txt index b77e6aa54..b66aafb45 100644 --- a/src/lib/rng/auto_rng/info.txt +++ b/src/lib/rng/auto_rng/info.txt @@ -1 +1,5 @@ define AUTO_SEEDING_RNG 20160821 + +<requires> +hmac_drbg +</requires> diff --git a/src/lib/rng/hmac_rng/hmac_rng.cpp b/src/lib/rng/hmac_rng/hmac_rng.cpp deleted file mode 100644 index 081d8b38a..000000000 --- a/src/lib/rng/hmac_rng/hmac_rng.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/* -* HMAC_RNG -* (C) 2008,2009,2013,2015,2016 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/hmac_rng.h> -#include <botan/entropy_src.h> -#include <botan/internal/os_utils.h> -#include <algorithm> - -namespace Botan { - -HMAC_RNG::HMAC_RNG(std::unique_ptr<MessageAuthenticationCode> prf, - RandomNumberGenerator& underlying_rng, - Entropy_Sources& entropy_sources, - size_t reseed_interval) : - Stateful_RNG(underlying_rng, entropy_sources, reseed_interval), - m_prf(std::move(prf)) - { - BOTAN_ASSERT_NONNULL(m_prf); - - if(!m_prf->valid_keylength(m_prf->output_length())) - { - throw Invalid_Argument("HMAC_RNG cannot use " + m_prf->name()); - } - - m_extractor.reset(m_prf->clone()); - this->clear(); - } - -HMAC_RNG::HMAC_RNG(std::unique_ptr<MessageAuthenticationCode> prf, - RandomNumberGenerator& underlying_rng, - size_t reseed_interval) : - Stateful_RNG(underlying_rng, reseed_interval), - m_prf(std::move(prf)) - { - BOTAN_ASSERT_NONNULL(m_prf); - - if(!m_prf->valid_keylength(m_prf->output_length())) - { - throw Invalid_Argument("HMAC_RNG cannot use " + m_prf->name()); - } - - m_extractor.reset(m_prf->clone()); - this->clear(); - } - -HMAC_RNG::HMAC_RNG(std::unique_ptr<MessageAuthenticationCode> prf, - Entropy_Sources& entropy_sources, - size_t reseed_interval) : - Stateful_RNG(entropy_sources, reseed_interval), - m_prf(std::move(prf)), - m_extractor(m_prf->clone()) - { - BOTAN_ASSERT_NONNULL(m_prf); - - if(!m_prf->valid_keylength(m_prf->output_length())) - { - throw Invalid_Argument("HMAC_RNG cannot use " + m_prf->name()); - } - - m_extractor.reset(m_prf->clone()); - this->clear(); - } - -HMAC_RNG::HMAC_RNG(std::unique_ptr<MessageAuthenticationCode> prf) : - Stateful_RNG(), - m_prf(std::move(prf)) - { - BOTAN_ASSERT_NONNULL(m_prf); - - if(!m_prf->valid_keylength(m_prf->output_length())) - { - throw Invalid_Argument("HMAC_RNG cannot use " + m_prf->name()); - } - - m_extractor.reset(m_prf->clone()); - this->clear(); - } - -void HMAC_RNG::clear() - { - Stateful_RNG::clear(); - m_counter = 0; - - // First PRF inputs are all zero, as specified in section 2 - m_K.resize(m_prf->output_length()); - zeroise(m_K); - - /* - Normally we want to feedback PRF outputs to the extractor function - to ensure a single bad poll does not reduce entropy. Thus in reseed - we'll want to invoke the PRF before we reset the PRF key, but until - the first reseed the PRF is unkeyed. Rather than trying to keep - track of this, just set the initial PRF key to constant zero. - Since all PRF inputs in the first reseed are constants, this - amounts to suffixing the seed in the first poll with a fixed - constant string. - - The PRF key will not be used to generate outputs until after reseed - sets m_seeded to true. - */ - std::vector<byte> prf_zero_key(m_extractor->output_length()); - m_prf->set_key(prf_zero_key.data(), prf_zero_key.size()); - - /* - Use PRF("Botan HMAC_RNG XTS") as the intitial XTS key. - - This will be used during the first extraction sequence; XTS values - after this one are generated using the PRF. - - If I understand the E-t-E paper correctly (specifically Section 4), - using this fixed initial extractor key is safe to do. - */ - m_extractor->set_key(m_prf->process("Botan HMAC_RNG XTS")); - } - -void HMAC_RNG::new_K_value(byte label) - { - m_prf->update(m_K); - m_prf->update_be(last_pid()); - m_prf->update_be(OS::get_processor_timestamp()); - m_prf->update_be(OS::get_system_timestamp_ns()); - m_prf->update_be(m_counter++); - m_prf->update(label); - m_prf->final(m_K.data()); - } - -/* -* Generate a buffer of random bytes -*/ -void HMAC_RNG::randomize(byte out[], size_t length) - { - reseed_check(); - - while(length) - { - new_K_value(Running); - - const size_t copied = std::min<size_t>(length, m_prf->output_length()); - - copy_mem(out, m_K.data(), copied); - out += copied; - length -= copied; - } - - new_K_value(BlockFinished); - } - -size_t HMAC_RNG::reseed(Entropy_Sources& srcs, - size_t poll_bits, - std::chrono::milliseconds timeout) - { - new_K_value(Reseed); - m_extractor->update(m_K); // m_K is the PRF output - - /* - * This ends up calling add_entropy which provides input to the extractor - */ - size_t bits_collected = Stateful_RNG::reseed(srcs, poll_bits, timeout); - - /* - Now derive the new PRK using everything that has been fed into - the extractor, and set the PRF key to that - */ - m_prf->set_key(m_extractor->final()); - - // Now generate a new PRF output to use as the XTS extractor salt - new_K_value(ExtractorSeed); - m_extractor->set_key(m_K); - - // Reset state - zeroise(m_K); - m_counter = 0; - - return bits_collected; - } - -/* -* Add user-supplied entropy to the extractor input then set remaining -* output length to for a reseed on next use. -*/ -void HMAC_RNG::add_entropy(const byte input[], size_t length) - { - m_extractor->update(input, length); - force_reseed(); - } - -/* -* Return the name of this type -*/ -std::string HMAC_RNG::name() const - { - return "HMAC_RNG(" + m_extractor->name() + "," + m_prf->name() + ")"; - } - -} diff --git a/src/lib/rng/hmac_rng/hmac_rng.h b/src/lib/rng/hmac_rng/hmac_rng.h deleted file mode 100644 index e4cb4a2bf..000000000 --- a/src/lib/rng/hmac_rng/hmac_rng.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -* HMAC RNG -* (C) 2008,2013,2016 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_HMAC_RNG_H__ -#define BOTAN_HMAC_RNG_H__ - -#include <botan/stateful_rng.h> -#include <botan/mac.h> - -namespace Botan { - -/** -* HMAC_RNG - based on the design described in "On Extract-then-Expand -* Key Derivation Functions and an HMAC-based KDF" by Hugo Krawczyk -* (henceforce, 'E-t-E') -* -* However it actually could be parameterized with any two MAC functions, -* not restricted to HMAC (this variation is also described in -* Krawczyk's paper), for instance one could use HMAC(SHA-512) as the -* extractor and CMAC(AES-256) as the PRF. -*/ -class BOTAN_DLL HMAC_RNG final : public Stateful_RNG - { - public: - /** - * Initialize an HMAC_RNG instance with the given MAC as PRF (normally HMAC) - * @param prf MAC to use as a PRF - * @param underlying_rng is a reference to some RNG which will be used - * to perform the periodic reseeding. - * @param entropy_sources will be polled to perform reseeding periodically - * @param reseed_interval specifies a limit of how many times - * the RNG will be called before automatic reseeding is performed. - */ - HMAC_RNG(std::unique_ptr<MessageAuthenticationCode> prf, - RandomNumberGenerator& underlying_rng, - Entropy_Sources& entropy_sources, - size_t reseed_interval = BOTAN_RNG_DEFAULT_RESEED_INTERVAL); - - /** - * Initialize an HMAC_RNG instance with the given MAC as PRF (normally HMAC) - * @param prf MAC to use as a PRF - * @param underlying_rng is a reference to some RNG which will be used - * to perform the periodic reseeding. - * @param reseed_interval specifies a limit of how many times - * the RNG will be called before automatic reseeding is performed. - */ - HMAC_RNG(std::unique_ptr<MessageAuthenticationCode> prf, - RandomNumberGenerator& underlying_rng, - size_t reseed_interval = BOTAN_RNG_DEFAULT_RESEED_INTERVAL); - - /* - * Initialize an HMAC_RNG instance with the given MAC as PRF (normally HMAC) - * @param prf MAC to use as a PRF - * @param entropy_sources will be polled to perform reseeding periodically - * @param reseed_interval specifies a limit of how many times - * the RNG will be called before automatic reseeding is performed. - */ - HMAC_RNG(std::unique_ptr<MessageAuthenticationCode> prf, - Entropy_Sources& entropy_sources, - size_t reseed_interval = BOTAN_RNG_DEFAULT_RESEED_INTERVAL); - - /** - * Initialize an HMAC_RNG instance with the given MAC as PRF (normally HMAC) - * Automatic reseeding is disabled completely. - * @param prf MAC to use as a PRF - */ - HMAC_RNG(std::unique_ptr<MessageAuthenticationCode> prf); - - void randomize(byte buf[], size_t len) override; - void clear() override; - std::string name() const override; - - size_t reseed(Entropy_Sources& srcs, - size_t poll_bits, - std::chrono::milliseconds poll_timeout) override; - - void add_entropy(const byte[], size_t) override; - - size_t security_level() const override { return m_prf->output_length() * 8 / 2; } - - private: - std::unique_ptr<MessageAuthenticationCode> m_prf; - std::unique_ptr<MessageAuthenticationCode> m_extractor; - - enum HMAC_PRF_Label { - Running, - BlockFinished, - Reseed, - ExtractorSeed, - }; - void new_K_value(byte label); - - secure_vector<byte> m_K; - u32bit m_counter = 0; - }; - -} - -#endif diff --git a/src/lib/rng/hmac_rng/info.txt b/src/lib/rng/hmac_rng/info.txt deleted file mode 100644 index 2b7f49c8a..000000000 --- a/src/lib/rng/hmac_rng/info.txt +++ /dev/null @@ -1,6 +0,0 @@ -define HMAC_RNG 20131128 - -<requires> -mac -stateful_rng -</requires> diff --git a/src/lib/rng/x931_rng/info.txt b/src/lib/rng/x931_rng/info.txt deleted file mode 100644 index 4a4418083..000000000 --- a/src/lib/rng/x931_rng/info.txt +++ /dev/null @@ -1,5 +0,0 @@ -define X931_RNG 20131128 - -<requires> -stateful_rng -</requires> diff --git a/src/lib/rng/x931_rng/x931_rng.cpp b/src/lib/rng/x931_rng/x931_rng.cpp deleted file mode 100644 index ed44dc743..000000000 --- a/src/lib/rng/x931_rng/x931_rng.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* -* ANSI X9.31 RNG -* (C) 1999-2009,2014 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/x931_rng.h> -#include <algorithm> - -namespace Botan { - -void ANSI_X931_RNG::randomize(byte out[], size_t length) - { - if(!is_seeded()) - { - rekey(); - - if(!is_seeded()) - throw PRNG_Unseeded(name()); - } - - while(length) - { - if(m_R_pos == m_R.size()) - update_buffer(); - - const size_t copied = std::min<size_t>(length, m_R.size() - m_R_pos); - - copy_mem(out, &m_R[m_R_pos], copied); - out += copied; - length -= copied; - m_R_pos += copied; - } - } - -/* -* Refill the internal state -*/ -void ANSI_X931_RNG::update_buffer() - { - const size_t BLOCK_SIZE = m_cipher->block_size(); - - secure_vector<byte> DT = m_prng->random_vec(BLOCK_SIZE); - m_cipher->encrypt(DT); - - xor_buf(m_R.data(), m_V.data(), DT.data(), BLOCK_SIZE); - m_cipher->encrypt(m_R); - - xor_buf(m_V.data(), m_R.data(), DT.data(), BLOCK_SIZE); - m_cipher->encrypt(m_V); - - m_R_pos = 0; - } - -/* -* Reset V and the cipher key with new values -*/ -void ANSI_X931_RNG::rekey() - { - const size_t BLOCK_SIZE = m_cipher->block_size(); - - if(m_prng->is_seeded()) - { - m_cipher->set_key(m_prng->random_vec(m_cipher->maximum_keylength())); - - if(m_V.size() != BLOCK_SIZE) - m_V.resize(BLOCK_SIZE); - m_prng->randomize(m_V.data(), m_V.size()); - - update_buffer(); - } - } - -size_t ANSI_X931_RNG::reseed(Entropy_Sources& srcs, - size_t poll_bits, - std::chrono::milliseconds poll_timeout) - { - size_t bits = m_prng->reseed(srcs, poll_bits, poll_timeout); - rekey(); - return bits; - } - -void ANSI_X931_RNG::add_entropy(const byte input[], size_t length) - { - m_prng->add_entropy(input, length); - rekey(); - } - -bool ANSI_X931_RNG::is_seeded() const - { - return (m_V.size() > 0); - } - -void ANSI_X931_RNG::clear() - { - m_cipher->clear(); - m_prng->clear(); - zeroise(m_R); - m_V.clear(); - - m_R_pos = 0; - } - -std::string ANSI_X931_RNG::name() const - { - return "X9.31(" + m_cipher->name() + ")"; - } - -ANSI_X931_RNG::ANSI_X931_RNG(BlockCipher* cipher, - RandomNumberGenerator* prng) : - m_cipher(cipher), - m_prng(prng), - m_R(m_cipher->block_size()), - m_R_pos(0) - { - } - -} diff --git a/src/lib/rng/x931_rng/x931_rng.h b/src/lib/rng/x931_rng/x931_rng.h deleted file mode 100644 index 861fcffde..000000000 --- a/src/lib/rng/x931_rng/x931_rng.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -* ANSI X9.31 RNG -* (C) 1999-2009 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_ANSI_X931_RNG_H__ -#define BOTAN_ANSI_X931_RNG_H__ - -#include <botan/rng.h> -#include <botan/block_cipher.h> - -namespace Botan { - -/** -* ANSI X9.31 RNG -*/ -class BOTAN_DLL ANSI_X931_RNG final : public RandomNumberGenerator - { - public: - void randomize(byte[], size_t) override; - bool is_seeded() const override; - void clear() override; - std::string name() const override; - - size_t reseed(Entropy_Sources& srcs, - size_t poll_bits, - std::chrono::milliseconds poll_timeout) override; - - void add_entropy(const byte[], size_t) override; - - /** - * @param cipher the block cipher to use in this PRNG - * @param rng the underlying PRNG for generating inputs - * (eg, an HMAC_RNG) - */ - BOTAN_DEPRECATED("X9.31 RNG is deprecated and will be removed soon") - ANSI_X931_RNG(BlockCipher* cipher, - RandomNumberGenerator* rng); - - private: - void rekey(); - void update_buffer(); - - std::unique_ptr<BlockCipher> m_cipher; - std::unique_ptr<RandomNumberGenerator> m_prng; - secure_vector<byte> m_V, m_R; - size_t m_R_pos; - }; - -} - -#endif diff --git a/src/tests/data/x931.vec b/src/tests/data/x931.vec deleted file mode 100644 index 4a2c33a86..000000000 --- a/src/tests/data/x931.vec +++ /dev/null @@ -1,1541 +0,0 @@ -# X9.31 RNG tests - -[AES-128] -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BC80000000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642BA -Out = CF08AD39D7DA4FCDBE158347EE3752A3 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCC0000000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642BB -Out = 07BDFB5F94D0CB20F668161CE7E25E36 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCE0000000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642BC -Out = 81A997CAAA8EE7403D03A8F0AA6A588C - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCF0000000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642BD -Out = B00B42011B37494912AA2DE456FE6284 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCF8000000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642BE -Out = D42AA72455C3AE5AD634A5A4B3D577D2 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFC000000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642BF -Out = 0D06CB87B99641C38A5411EC3D273E70 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFE000000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C0 -Out = 459E5E2D6976A5B34FD18926EE1E0BB7 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFF000000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C1 -Out = 53F2D091AD47E858555371AC9BE9F3DA - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFF800000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C2 -Out = 1A72444D745503F63B340E0F294726DC - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFC00000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C3 -Out = 6FA57C78F09768AEA09ABB7DC5EA2944 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFE00000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C4 -Out = 6E549FCCD3BE7B6B70B317BC04B5AB01 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFF00000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C5 -Out = 7FF7C3F80E9A7C323B822FA436D6AA2F - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFF80000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C6 -Out = 52FF54A163E97610EAF318E7EE7CEC7E - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFC0000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C7 -Out = 4FF5C162147653F594105D480D9F24F7 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFE0000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C8 -Out = 1F863D1EA9EA0E1D741D195249B6AF21 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFF0000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642C9 -Out = A87313E2771F16B842DB27D3E55AB0B0 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFF8000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642CA -Out = A45BBF6E2ED76655119273112AFE1C6A - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFC000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642CB -Out = E135FBD5BE6CB13B0A5A76696BCF46F6 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFE000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642CC -Out = 5A0601F625C622CC97D6CAE9BA0AB6BB - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFF000000000000000000000000000EB8DE39CF261EE2C7389B748F8B642CD -Out = A9662449F9AC50293766DEC60334B8F0 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFF800000000000000000000000000EB8DE39CF261EE2C7389B748F8B642CE -Out = F80A41023F9E350E1D2F86DB10CBB329 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFC00000000000000000000000000EB8DE39CF261EE2C7389B748F8B642CF -Out = 334EB3E404DE9F452C647C05EE09E3E6 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFE00000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D0 -Out = 5B2C202C018A5E482D5035B18905BF46 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFF00000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D1 -Out = 9E9E63D29CFB4757FDDEC2B35147D830 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFF80000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D2 -Out = EAAC43B87260BC73BFFDFABF5BCF94A9 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFC0000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D3 -Out = 4B378D2FF53B5FF913AA2064D04285D5 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFE0000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D4 -Out = DBC25FE1203EA0E64F1D5C2E2F056F87 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFF0000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D5 -Out = D3C96C9C5905DC56A292A7A98AAC9234 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFF8000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D6 -Out = 0A9223570A1288EB47595D6D18994353 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFC000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D7 -Out = E43B8F94C2B557259920C10A51A38543 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFE000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D8 -Out = 9B86C73D371FDAD1432065F9EB6BB6D2 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFF000000000000000000000000EB8DE39CF261EE2C7389B748F8B642D9 -Out = 13F949FF373A58947D8C6543FEB81F93 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFF800000000000000000000000EB8DE39CF261EE2C7389B748F8B642DA -Out = 2F7D996CB269EDC9B7902FF6D061C302 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFC00000000000000000000000EB8DE39CF261EE2C7389B748F8B642DB -Out = 801AF9A32F49A1F3A43DBB22DB281DFC - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFE00000000000000000000000EB8DE39CF261EE2C7389B748F8B642DC -Out = 8914E2CE1F46B13624AB93FDE9104214 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFF00000000000000000000000EB8DE39CF261EE2C7389B748F8B642DD -Out = C1D223A2A1785EF3CE6128333DD95347 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFF80000000000000000000000EB8DE39CF261EE2C7389B748F8B642DE -Out = 538FEEC081411A95767AA722BCFB8C0E - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFC0000000000000000000000EB8DE39CF261EE2C7389B748F8B642DF -Out = 0CCDCCA45FF772D0D02F53D823BB4C9E - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFE0000000000000000000000EB8DE39CF261EE2C7389B748F8B642E0 -Out = 550B87DA4C940750ABB829E43522F4D7 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFF0000000000000000000000EB8DE39CF261EE2C7389B748F8B642E1 -Out = 3E17DE96FFF84D276E8156ADC9E35007 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFF8000000000000000000000EB8DE39CF261EE2C7389B748F8B642E2 -Out = 06F0855A2F6CE7DFF53F59A6994017AE - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFC000000000000000000000EB8DE39CF261EE2C7389B748F8B642E3 -Out = 741FA68C1FEF02AF6DFCE803379AF7B8 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFE000000000000000000000EB8DE39CF261EE2C7389B748F8B642E4 -Out = A7F64667398AECDEC34481265FE59235 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFF000000000000000000000EB8DE39CF261EE2C7389B748F8B642E5 -Out = F19F46D46822951708F4E194F4960A56 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFF800000000000000000000EB8DE39CF261EE2C7389B748F8B642E6 -Out = 6E7AF2F730E9CF4CCA2E69D5067DDC76 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFC00000000000000000000EB8DE39CF261EE2C7389B748F8B642E7 -Out = CA15A95DFB686938D97D804298D094AA - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFE00000000000000000000EB8DE39CF261EE2C7389B748F8B642E8 -Out = F76DAEB0ED23167614294AC2F8E9EE9A - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFF00000000000000000000EB8DE39CF261EE2C7389B748F8B642E9 -Out = C66A4B38050953805598F4EAF203CDE4 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFF80000000000000000000EB8DE39CF261EE2C7389B748F8B642EA -Out = 76A726ED76276D5E7119AF0CCAED854A - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFC0000000000000000000EB8DE39CF261EE2C7389B748F8B642EB -Out = EB8FE9FF9A053DD2F132B11F17F53D78 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFE0000000000000000000EB8DE39CF261EE2C7389B748F8B642EC -Out = A6C5E4E13C36E80E1BBB046E6377D290 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFF0000000000000000000EB8DE39CF261EE2C7389B748F8B642ED -Out = 75B476973CF532F655B8BF80CB6AC2A3 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFF8000000000000000000EB8DE39CF261EE2C7389B748F8B642EE -Out = 3AC698CFC1EF3ED72C26CAF5347DF997 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFC000000000000000000EB8DE39CF261EE2C7389B748F8B642EF -Out = 167ECAE8C6F793FEB00A69E3A9FAF332 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFE000000000000000000EB8DE39CF261EE2C7389B748F8B642F0 -Out = 8F2906AF93A28FFFBFD83D5D7E6D7F72 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFF000000000000000000EB8DE39CF261EE2C7389B748F8B642F1 -Out = 5BBA7C625C23F69354A61CCF2289A1B3 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFF800000000000000000EB8DE39CF261EE2C7389B748F8B642F2 -Out = 0083A3EC21348F22B0039759AE762A2F - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFC00000000000000000EB8DE39CF261EE2C7389B748F8B642F3 -Out = 5E2864DD971DB13227F06535D52C24AE - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFE00000000000000000EB8DE39CF261EE2C7389B748F8B642F4 -Out = D5792243D3B9BD5C7299151685192BBA - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFF00000000000000000EB8DE39CF261EE2C7389B748F8B642F5 -Out = 7B26CD6C3468209850FDF7F67448FAB7 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFF80000000000000000EB8DE39CF261EE2C7389B748F8B642F6 -Out = 717586F8B816B273A691D3379005301E - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFC0000000000000000EB8DE39CF261EE2C7389B748F8B642F7 -Out = 33D8F8DDF2A5E97E9CB1C032735BEF21 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFE0000000000000000EB8DE39CF261EE2C7389B748F8B642F8 -Out = B277E4BA071293C54D84A29637273B04 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFF0000000000000000EB8DE39CF261EE2C7389B748F8B642F9 -Out = FBD6F5662D222FC9C55332A60F747879 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFF8000000000000000EB8DE39CF261EE2C7389B748F8B642FA -Out = 88FF65F58F6F4BF35DB846BB2132DEC6 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFC000000000000000EB8DE39CF261EE2C7389B748F8B642FB -Out = BE12ADEDECB8DCFF2723E1D5F0D9C753 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFE000000000000000EB8DE39CF261EE2C7389B748F8B642FC -Out = 5A368FCCC787680145BBFBDA64BE16C6 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFF000000000000000EB8DE39CF261EE2C7389B748F8B642FD -Out = A804DC10C6223194AE4310D7C628DBAF - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFF800000000000000EB8DE39CF261EE2C7389B748F8B642FE -Out = 1DE5494C7B609ABD1406FB318B572DE7 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFC00000000000000EB8DE39CF261EE2C7389B748F8B642FF -Out = 78566AA937E9C90D764DFB1D5723140B - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFE00000000000000EB8DE39CF261EE2C7389B748F8B64300 -Out = 9F42A9F1512DA372008DF3D469B4AD04 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFF00000000000000EB8DE39CF261EE2C7389B748F8B64301 -Out = C80993A52AE00A74A64FAD42EC586FF5 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFF80000000000000EB8DE39CF261EE2C7389B748F8B64302 -Out = 3AFC74E774FE9B27202B8596C5B1396E - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFC0000000000000EB8DE39CF261EE2C7389B748F8B64303 -Out = 64829EB2B232687C9CE32F8A91274497 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFE0000000000000EB8DE39CF261EE2C7389B748F8B64304 -Out = E9795D38B5A1AAD7901C7765CF4F23B2 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFF0000000000000EB8DE39CF261EE2C7389B748F8B64305 -Out = 28989B6F2458E95A32485C7050DB4155 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFF8000000000000EB8DE39CF261EE2C7389B748F8B64306 -Out = 3DFFB7C3CDBB9C3B27A5CCCFDAFA9AAE - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFC000000000000EB8DE39CF261EE2C7389B748F8B64307 -Out = 4B42865DA59E224D8CD7587D8C4AD73E - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFE000000000000EB8DE39CF261EE2C7389B748F8B64308 -Out = 19316BB7F4041A621BD659FBD34397D6 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFF000000000000EB8DE39CF261EE2C7389B748F8B64309 -Out = 963835BE55A1E143D1F2F56BCA837BBE - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFF800000000000EB8DE39CF261EE2C7389B748F8B6430A -Out = 2C614F8E813AF275902D7139B08C0998 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFC00000000000EB8DE39CF261EE2C7389B748F8B6430B -Out = 6B0F6D50554C31C8439ECEAC28B2C256 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFE00000000000EB8DE39CF261EE2C7389B748F8B6430C -Out = B6D80EEEC39FBB091ADC6BB3BB5D5A67 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFF00000000000EB8DE39CF261EE2C7389B748F8B6430D -Out = 6C8D5E16792215E76E73FD4650A407DB - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFF80000000000EB8DE39CF261EE2C7389B748F8B6430E -Out = AA6E5BE4C0C26EEC0161D364F0FF7DE3 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFC0000000000EB8DE39CF261EE2C7389B748F8B6430F -Out = 1CC202A40F8ED80D5559BB2B29E96A65 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFE0000000000EB8DE39CF261EE2C7389B748F8B64310 -Out = 0B4B9B6139443912D9492EE91A1769CB - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFF0000000000EB8DE39CF261EE2C7389B748F8B64311 -Out = C10EBF773A13A852500F2025AB965540 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFF8000000000EB8DE39CF261EE2C7389B748F8B64312 -Out = 5221FDCFA12F36E4E893E902A54999E8 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFC000000000EB8DE39CF261EE2C7389B748F8B64313 -Out = E9090364194100265EF53E91299865FB - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFE000000000EB8DE39CF261EE2C7389B748F8B64314 -Out = 8CD5E4284B02C8B711DE7B234F6484F7 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFF000000000EB8DE39CF261EE2C7389B748F8B64315 -Out = 76F5D704C6B17CF7397C58D3021C2FBC - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFF800000000EB8DE39CF261EE2C7389B748F8B64316 -Out = F157BFB5FBF1011BD22292D947D12986 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFC00000000EB8DE39CF261EE2C7389B748F8B64317 -Out = 2D2BD62F2AD0EE7854072B7F6860FFCA - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFE00000000EB8DE39CF261EE2C7389B748F8B64318 -Out = 3D96768C1F0796A39077BE1C70301FD4 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFF00000000EB8DE39CF261EE2C7389B748F8B64319 -Out = D5073B8CF890C43AEE43AE333D57D642 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFF80000000EB8DE39CF261EE2C7389B748F8B6431A -Out = D38ADEA6FE821453B9EB88D9CADAD3F4 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFC0000000EB8DE39CF261EE2C7389B748F8B6431B -Out = F4F66618DBFED3C4B90AD93FAC1083F8 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFE0000000EB8DE39CF261EE2C7389B748F8B6431C -Out = 930AD1D86D3ECA7A0692766CD1E40490 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFF0000000EB8DE39CF261EE2C7389B748F8B6431D -Out = 63D8247A053BBE984B9840CFB7D90DD2 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFF8000000EB8DE39CF261EE2C7389B748F8B6431E -Out = 827D954277E357D0453BBC537C9AB221 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFC000000EB8DE39CF261EE2C7389B748F8B6431F -Out = 9E2BDF167485A3AE004F0643E775CF42 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFE000000EB8DE39CF261EE2C7389B748F8B64320 -Out = 445A3F86B2FC284BB933CBC68649E4CC - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFF000000EB8DE39CF261EE2C7389B748F8B64321 -Out = F6AEADC9A5A8DF7A1664B4CD055E42B4 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFF800000EB8DE39CF261EE2C7389B748F8B64322 -Out = 1B43269E05CD108EE91AAA0ECC1CA831 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFC00000EB8DE39CF261EE2C7389B748F8B64323 -Out = 857EEB71AB8F12AE4051B825F6B7B686 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFE00000EB8DE39CF261EE2C7389B748F8B64324 -Out = C92EF523170FDEBA77CFA50D84742D68 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFF00000EB8DE39CF261EE2C7389B748F8B64325 -Out = DC8C52D3698E8356F9D0F77361D8F26E - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFF80000EB8DE39CF261EE2C7389B748F8B64326 -Out = 86A95BA023CBE3E5A5911D5CA22C504E - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000EB8DE39CF261EE2C7389B748F8B64327 -Out = 6E9CACEB9D51D7D05E1FD06B1BE031C7 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000EB8DE39CF261EE2C7389B748F8B64328 -Out = 556ECC72A98D46912ADDD08FDE7BA0A3 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000EB8DE39CF261EE2C7389B748F8B64329 -Out = 3A404D891C30FBBA2EED516E81B82391 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000EB8DE39CF261EE2C7389B748F8B6432A -Out = 7BC825F8C9CB40A71E6B714171A77436 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000EB8DE39CF261EE2C7389B748F8B6432B -Out = EC8430466E19133B11D9B99DA3C614B8 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000EB8DE39CF261EE2C7389B748F8B6432C -Out = DCB6690389626F5392FD37E486490649 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000EB8DE39CF261EE2C7389B748F8B6432D -Out = 73A591DF83E5F8E819BC63702471DD4A - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800EB8DE39CF261EE2C7389B748F8B6432E -Out = 76B3B1D6EB12BBD6C3F17E73E9E2EB30 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00EB8DE39CF261EE2C7389B748F8B6432F -Out = FEC46BE2B11B2FA1C7D7A5CC3012F5DC - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00EB8DE39CF261EE2C7389B748F8B64330 -Out = 393389AC2C7FBA821920F6DC2193A4E0 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EB8DE39CF261EE2C7389B748F8B64331 -Out = 43D7D429B793F150173FCFEC35D9A4E8 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80EB8DE39CF261EE2C7389B748F8B64332 -Out = 8EAE659DF12B19C428CFC37E3432683D - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0EB8DE39CF261EE2C7389B748F8B64333 -Out = 5080B7459858EA77FFC5AEAD88DEE1B5 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0EB8DE39CF261EE2C7389B748F8B64334 -Out = ACBEEAFC7D2C5DCE6AC63452E07D6A95 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0EB8DE39CF261EE2C7389B748F8B64335 -Out = 95407BD82770032D496FD3F54478A589 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8EB8DE39CF261EE2C7389B748F8B64336 -Out = F3B8D4093A4D2845A2C411C8EA1E9F12 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCEB8DE39CF261EE2C7389B748F8B64337 -Out = 6B232AD852E9D6EB2CA54E8C9B5163C3 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB8DE39CF261EE2C7389B748F8B64338 -Out = C3CB4B5855323C13C8973982E9EA33E7 - -IKM = C592BF6A04D72BB1CBEAF590B7CCA6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB8DE39CF261EE2C7389B748F8B64339 -Out = 504D101AC84F9B4542C1B0264B947410 - -[AES-192] -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163800000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C82 -Out = 765F8B450404187233E6F7C30A9C3033 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163C00000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C83 -Out = 3636889C7E3720C3E0DCF399104597A4 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163E00000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C84 -Out = 2845D5BCACD8C65B5B4B5A168E778DF7 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163F00000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C85 -Out = 41CDAA700F6E179354AD61B7CBD5E272 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163F80000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C86 -Out = E08638EAEC7EA84B43AC7EB48296B94C - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FC0000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C87 -Out = A7AFADA8824F5B94EB20E31B30519A91 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FE0000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C88 -Out = F5CAB3443DA2C48B0C309FC64FB903C6 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FF0000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C89 -Out = 6CCEBF22A49BB4921E4E30D0663F90DC - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FF8000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C8A -Out = D8CCE94DE9CFE74E3392418BCC843B14 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFC000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C8B -Out = D56EEA4E0B3963E370E6145352F170F0 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFE000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C8C -Out = 43894E0870AD99C2CF7116FF3F076AA3 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFF000000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C8D -Out = 0181C2495F3DDB5BBA9F52634A3CA1A1 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFF800000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C8E -Out = AE97729D2D864B54619DCCA39F7C1E3E - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFC00000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C8F -Out = E7F674C418E2CF20CE7152BFD184428D - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFE00000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C90 -Out = DA0CCB4303614FE6F975AAC0A6B79C0C - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFF00000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C91 -Out = 02AAAFF23E2D38885670604C1356CAFA - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFF80000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C92 -Out = 649A70DFBEEBAFE24F102BB45302CA90 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFC0000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C93 -Out = 2E2CE97AD3E20C8F5E676D453FC0573A - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFE0000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C94 -Out = 147AA9D83747429EB9E642190331E140 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFF0000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C95 -Out = CA64870FDF1A3DFD3206EC3C39E37831 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFF8000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C96 -Out = 9D91BBFA64EC181C0FEA5B620338C93F - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFC000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C97 -Out = DBF7E2FFD26CC3DE9E58F06EA4AA108B - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFE000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C98 -Out = 172248D875492388F40E465884809BEC - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFF000000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C99 -Out = 9CDDA74369BCE1E0545AC7BB33ED56C6 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFF800000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C9A -Out = 58F86FD5A8CE9F2DE1D7B036646C3CF0 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFC00000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C9B -Out = 22B087E72247F42628C4EED66DAC2857 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFE00000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C9C -Out = 2C5A29C655986B70CF4D824DA14CCC51 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFF00000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C9D -Out = 166EA4679813A0BC390389EC305336FB - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFF80000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C9E -Out = BF11A059C4081554C66DA4BD62B20954 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFC0000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0C9F -Out = 566904C94E52FC620F980EDF352428CA - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFE0000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA0 -Out = DC3EFF7EAC7A8EBD840DF5F621A3449A - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFF0000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA1 -Out = EADDA03E98C5B8A6A28C92B7EBC7AC97 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFF8000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA2 -Out = 99F41647A63D58E862E3AC10FC5AEE92 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFC000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA3 -Out = B5D386B2184EDFD9726DA021B0F34142 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFE000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA4 -Out = FAAE880D0C2DADC2015C66BE8AD6BC1E - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFF000000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA5 -Out = 250DCFF45916E9F8FA2219F62A422B00 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFF800000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA6 -Out = 853BAB572DCE44B910DDE9D74D6EC4A9 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFC00000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA7 -Out = EBFC3DFD08EE68B825F47F63F47FFC2D - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFE00000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA8 -Out = 6D25021AE6865BC70971485E1888CB35 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFF00000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CA9 -Out = A1D2584BBE712619CABD295ADE48D132 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFF80000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CAA -Out = 8EA62AAFD310009DE585FCA2542128C6 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFC0000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CAB -Out = 5DBEEB2438CDC2E4B0727F537EB6BCEE - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFE0000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CAC -Out = 81A884DD17A78D57BB00FC23B372A003 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFF0000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CAD -Out = 22ECAAC6F2884CC9F2977C63A7F429AF - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFF8000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CAE -Out = 35A2E0D7BE633C0E24C09E6F7EB681A5 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFC000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CAF -Out = FAA2B324614E430AF7168D3BE22AB8F5 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFE000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB0 -Out = FEEB51786DA2CAD7C17EB084F16ED95C - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFF000000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB1 -Out = 60C5CC3D4FA90CAE8F800FE0EBC3BD7D - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFF800000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB2 -Out = F4F4B400DE91585909EC6C772A616331 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFC00000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB3 -Out = 10A1126BFCF62DE266240BEBC70345D4 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFE00000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB4 -Out = 7E54A01950089CECD54EF526C2CA4D32 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFF00000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB5 -Out = 878880E754C0835B28EE7ABBAC5483BE - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFF80000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB6 -Out = 5818CF8CCCF36E2FD381F40E8E6B6C22 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFC0000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB7 -Out = 5342E61C5CE89EFC82790297315BC6BE - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFE0000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB8 -Out = C1A6F265700B4B032B82A8DDECE58FA8 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFF0000000000000000008159E43DB66ECF3EABE5A44E0D4C0CB9 -Out = 4206F2CBF9FBBC6CF774642B552754A6 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFF8000000000000000008159E43DB66ECF3EABE5A44E0D4C0CBA -Out = 0839EF91752B19D1B4D853BF27945C98 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFC000000000000000008159E43DB66ECF3EABE5A44E0D4C0CBB -Out = 3AA99E43E643F56D51EAE0DD94D53FAD - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFE000000000000000008159E43DB66ECF3EABE5A44E0D4C0CBC -Out = 8A17C2B4992E26A7A0E709F05C3B81EC - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFF000000000000000008159E43DB66ECF3EABE5A44E0D4C0CBD -Out = 9D14DA0A5F6D0E5F7B9FC38BBD598196 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFF800000000000000008159E43DB66ECF3EABE5A44E0D4C0CBE -Out = 709CAED6B876ECE41FF7AE78C3892CAC - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFC00000000000000008159E43DB66ECF3EABE5A44E0D4C0CBF -Out = 5AD091FF7C2677F8E3DFB98F8E85E54A - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFE00000000000000008159E43DB66ECF3EABE5A44E0D4C0CC0 -Out = 989D89F341AB464BE89E17B06467A8FD - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFF00000000000000008159E43DB66ECF3EABE5A44E0D4C0CC1 -Out = 3257273E13063BCFB64C7A0B090B0A2D - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFF80000000000000008159E43DB66ECF3EABE5A44E0D4C0CC2 -Out = 431D551090D4E840432CD0D8E7170666 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFC0000000000000008159E43DB66ECF3EABE5A44E0D4C0CC3 -Out = F3EBF6C275C41C7015BFEE14DE87F372 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFE0000000000000008159E43DB66ECF3EABE5A44E0D4C0CC4 -Out = 13EE442069EC7B852034397B1F09EB3D - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFF0000000000000008159E43DB66ECF3EABE5A44E0D4C0CC5 -Out = ACFAA2C816C9ECAD0A19BA783BCAB411 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFF8000000000000008159E43DB66ECF3EABE5A44E0D4C0CC6 -Out = 2AAEB898354B9E1358CA6DF57369C361 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFC000000000000008159E43DB66ECF3EABE5A44E0D4C0CC7 -Out = 52C35276866C0DA1277FC4952B732EEA - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFE000000000000008159E43DB66ECF3EABE5A44E0D4C0CC8 -Out = BAEEB093F380B5D887DC48B7DE672D33 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFF000000000000008159E43DB66ECF3EABE5A44E0D4C0CC9 -Out = D524C38205AD436D54199E0F8E04D8D9 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFF800000000000008159E43DB66ECF3EABE5A44E0D4C0CCA -Out = A0D1315745F15F0DDC468DBDD9E56714 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFC00000000000008159E43DB66ECF3EABE5A44E0D4C0CCB -Out = 2776D4FFDFFB344EC55FC22FFE450A3C - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFE00000000000008159E43DB66ECF3EABE5A44E0D4C0CCC -Out = BC0716E00000562CC8A9E2470F3D8B63 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFF00000000000008159E43DB66ECF3EABE5A44E0D4C0CCD -Out = E29DD29D73D883CD8DAF74838BBEFC7C - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFF80000000000008159E43DB66ECF3EABE5A44E0D4C0CCE -Out = 84CBCBB352E2D3CB77E04C954280694E - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFC0000000000008159E43DB66ECF3EABE5A44E0D4C0CCF -Out = 558744FEBFFE7A0AE424D45921B87309 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFE0000000000008159E43DB66ECF3EABE5A44E0D4C0CD0 -Out = 7FF9325EA7576D41B4A1B557533432FB - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFF0000000000008159E43DB66ECF3EABE5A44E0D4C0CD1 -Out = 01CC9B4887AD0B270EC55F6527AB90A6 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFF8000000000008159E43DB66ECF3EABE5A44E0D4C0CD2 -Out = 044176DA3370910AE0BCBDCF1D895CC0 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFC000000000008159E43DB66ECF3EABE5A44E0D4C0CD3 -Out = BCA18B1630EAEC7CBDDF5C513A53D456 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFE000000000008159E43DB66ECF3EABE5A44E0D4C0CD4 -Out = 19D1D3DA04BDAD8D710DD14A611F8F17 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFF000000000008159E43DB66ECF3EABE5A44E0D4C0CD5 -Out = 615BC0AF497F862399EF275E649746F0 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFF800000000008159E43DB66ECF3EABE5A44E0D4C0CD6 -Out = 58F46ACF8BB0D1B56EF0AD46D90DA340 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFC00000000008159E43DB66ECF3EABE5A44E0D4C0CD7 -Out = 2F2DBE7F2123A2E66CD8DD478688A07E - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFE00000000008159E43DB66ECF3EABE5A44E0D4C0CD8 -Out = AA80B113C8E106723409B3F31969965A - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFF00000000008159E43DB66ECF3EABE5A44E0D4C0CD9 -Out = DFC761136BCB3B2E1E13E0291BA85972 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFF80000000008159E43DB66ECF3EABE5A44E0D4C0CDA -Out = E0944C42C6EE12FAA28286B0ED4F5DC7 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFC0000000008159E43DB66ECF3EABE5A44E0D4C0CDB -Out = DAF99970E52C6639188262C5DAD13123 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFE0000000008159E43DB66ECF3EABE5A44E0D4C0CDC -Out = 0E07202C26F31E74004015F6BC7E2100 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFF0000000008159E43DB66ECF3EABE5A44E0D4C0CDD -Out = 93DCAC92FB0DA5976DF8A75DBDC61C9B - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFF8000000008159E43DB66ECF3EABE5A44E0D4C0CDE -Out = 9370C5EC398DE376E319370A4C5F26E2 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFC000000008159E43DB66ECF3EABE5A44E0D4C0CDF -Out = 83C03F2B1B64E72ED21D0A5F59FA7F8C - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFE000000008159E43DB66ECF3EABE5A44E0D4C0CE0 -Out = AA1159B23592ADECC168B2268952A92B - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFF000000008159E43DB66ECF3EABE5A44E0D4C0CE1 -Out = 14EEE0E44CA217E45440EC84011D89A5 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFF800000008159E43DB66ECF3EABE5A44E0D4C0CE2 -Out = B2C88BBA8B055BA74622297E8BC8D95D - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFC00000008159E43DB66ECF3EABE5A44E0D4C0CE3 -Out = FADFBA23CC801A926A119F78B37A9307 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFE00000008159E43DB66ECF3EABE5A44E0D4C0CE4 -Out = 4CB2D5484366D91C9243C4797DA983DD - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFF00000008159E43DB66ECF3EABE5A44E0D4C0CE5 -Out = 367EF2BDC4163545C4C9011AE53755DE - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFF80000008159E43DB66ECF3EABE5A44E0D4C0CE6 -Out = 51888B85AD78889BACEA726798C30C95 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFC0000008159E43DB66ECF3EABE5A44E0D4C0CE7 -Out = 1D3CEC46E078E44BF11603DB2726D8F2 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFE0000008159E43DB66ECF3EABE5A44E0D4C0CE8 -Out = A369189A3667F44FFA8DA2E5E9425D6F - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFF0000008159E43DB66ECF3EABE5A44E0D4C0CE9 -Out = ED8C0F37154A57D27A9A11CAE3F3131E - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFF8000008159E43DB66ECF3EABE5A44E0D4C0CEA -Out = 8B04BF18036328006D9A7FC4C1BCF818 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFC000008159E43DB66ECF3EABE5A44E0D4C0CEB -Out = 0E1E3F517E7502E4CC98A3A312692666 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFE000008159E43DB66ECF3EABE5A44E0D4C0CEC -Out = 306CA0902C2B572BB5E2CE0848D6280E - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFF000008159E43DB66ECF3EABE5A44E0D4C0CED -Out = 8F8479252EF0C104D27B38C52F4F40EB - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFF800008159E43DB66ECF3EABE5A44E0D4C0CEE -Out = D5C6F739A2B316B8CAFBC39999C731CB - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFC00008159E43DB66ECF3EABE5A44E0D4C0CEF -Out = 5C153EA9F8580BE16B093EE1CF83529B - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFE00008159E43DB66ECF3EABE5A44E0D4C0CF0 -Out = 13A3DF5F58736008E8101087B5B49563 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFF00008159E43DB66ECF3EABE5A44E0D4C0CF1 -Out = 2CB0DC2125C33149703A9A86CB0FB7D2 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFF80008159E43DB66ECF3EABE5A44E0D4C0CF2 -Out = 5453577F4F95E85D729DCFD84B297381 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFC0008159E43DB66ECF3EABE5A44E0D4C0CF3 -Out = 588702C309F54A76467B8F587FE17096 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0008159E43DB66ECF3EABE5A44E0D4C0CF4 -Out = 7779A89AD48BB3FD8BBFDC5BD8C9101E - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0008159E43DB66ECF3EABE5A44E0D4C0CF5 -Out = 9EDB48F7416AE0BD9802172515AA3D80 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8008159E43DB66ECF3EABE5A44E0D4C0CF6 -Out = 84AEA377BDDC54012F710254A435E1D1 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC008159E43DB66ECF3EABE5A44E0D4C0CF7 -Out = 4BEE75DC775926F27373A958BF64A168 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE008159E43DB66ECF3EABE5A44E0D4C0CF8 -Out = 76B563BA44BFF0D9CB460CD5E8D55C32 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF008159E43DB66ECF3EABE5A44E0D4C0CF9 -Out = 0682EA4560113BE4D3F3E92256D2BAAC - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808159E43DB66ECF3EABE5A44E0D4C0CFA -Out = 65D98A2BC1A84569FC553ED36C28FF45 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08159E43DB66ECF3EABE5A44E0D4C0CFB -Out = 0AABEB6CE77559F813C8257E57938C2C - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE08159E43DB66ECF3EABE5A44E0D4C0CFC -Out = 5ED815849F9F2480202FDAE7C05CC83B - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08159E43DB66ECF3EABE5A44E0D4C0CFD -Out = 5F453DBC5FED77520B0AFB71DAE3C083 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88159E43DB66ECF3EABE5A44E0D4C0CFE -Out = 14CAA4D84D923CCDAD2CD1CCD0377833 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8159E43DB66ECF3EABE5A44E0D4C0CFF -Out = 573691CD8E310DC33A645582BA51DE9A - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8159E43DB66ECF3EABE5A44E0D4C0D00 -Out = 8B77DFB1C9BD1FBF4B379B159230A7A6 - -IKM = E8BF7880FD391D95F3F83B700422E91B22ACDEC4D2D9E163FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8159E43DB66ECF3EABE5A44E0D4C0D01 -Out = CCAE97D6E56FBDA46C9B0DF5B6AF71C3 - -[AES-256] -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D468000000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666C2 -Out = 6C5EE8D10201D608874E6AE8C8A2BA79 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46C000000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666C3 -Out = 3790A9D44DE68EF0800837B32E2ED032 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46E000000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666C4 -Out = 72A1742C79E8B1D4F62E0669657F744D - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46F000000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666C5 -Out = 9E5708E79B379B9D393C766CFD802C98 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46F800000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666C6 -Out = AF7A0A13DE0B16512986538D5FECDC7D - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FC00000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666C7 -Out = D885CBF7B4E38B9FAC1C8EB625DDABCA - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FE00000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666C8 -Out = 7AEF038A328D1827D52DA4A36567C7BA - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FF00000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666C9 -Out = 14169D5DE6E79DEA20E261DA55DBA593 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FF80000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666CA -Out = DFE31312A96369CF41CAED493D4DFF4B - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFC0000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666CB -Out = BAFFD64502B19D26DCA93D09E43D8036 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFE0000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666CC -Out = 8BDEF0F95AB8F3B5A591A78364B723C7 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFF0000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666CD -Out = 38145A8F807E13CB05B2810E752BABDE - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFF8000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666CE -Out = 98EA671222B7332AEA395F37A355B1CC - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFC000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666CF -Out = 20C8AB02049C9987A7B00B4498B2C6E3 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFE000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D0 -Out = 67B8ACDE366BD5D064CB53C09EB0A95A - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFF000000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D1 -Out = 137721E4A673550141E2E3CF652A0819 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFF800000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D2 -Out = 29C0369E50A4B5494166E60E7E394149 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFC00000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D3 -Out = 09FAA6F94FE3DAFE3E10A38D8B9ABDE4 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFE00000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D4 -Out = 5F976E965ABC8C93D1C175AA750C16DC - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFF00000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D5 -Out = 25C386A980D1E75632566AD290FE3333 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFF80000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D6 -Out = D0CB44688ADA0966204B3D53FA89D534 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFC0000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D7 -Out = D2D11DD6ABE3B30BAECAADE50A2E9642 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFE0000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D8 -Out = 068451BECF49C9AD8BF47F176B154092 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFF0000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666D9 -Out = A8B505B0B75D061A1111FF97EE70CB2D - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFF8000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666DA -Out = 0479DBD05E14286F769AD495AE114D56 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFC000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666DB -Out = 9C62B0A336593C307F2144658DA20BA2 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFE000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666DC -Out = D68EFECC5CA3C1109769F14288202779 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFF000000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666DD -Out = DE6A7F99826A4F60BD70A2839B269A39 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFF800000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666DE -Out = F03D08EDF438E946E056B6D085C27B28 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFC00000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666DF -Out = 4DB84EFD6F81DC4B70CAB3E365C70B21 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFE00000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E0 -Out = 2D78FEC4CA1917B5070D4B5246D5CD11 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFF00000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E1 -Out = CE9228E22BD9E7A39FF05E194805F730 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFF80000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E2 -Out = D8912B41584C29C70874CBB947833B38 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFC0000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E3 -Out = 83644C0D80557650F719DF1B28A0CB3F - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFE0000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E4 -Out = 032A88989BB02C57501CC05D4D72E8A1 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFF0000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E5 -Out = 7C3607B5F5193A51DF18A19CF4577795 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFF8000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E6 -Out = 76B055658ADF07D15422895951F692E0 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFC000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E7 -Out = 7F87F363569F479DA806ABF988002705 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFE000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E8 -Out = 9A830D8126A8D39BA023B4F545670618 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFF000000000000000000000097B45F0EE0FB64AC3B8A1B9B750666E9 -Out = 7C0907F8FEBC6DCF1A4D83D420E5DC85 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFF800000000000000000000097B45F0EE0FB64AC3B8A1B9B750666EA -Out = F84F6500F554CAF20FF785C28E70AA69 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFC00000000000000000000097B45F0EE0FB64AC3B8A1B9B750666EB -Out = 876052A291745E5479FD0ADB65AB3CFD - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFE00000000000000000000097B45F0EE0FB64AC3B8A1B9B750666EC -Out = 69F6A409470573A5DEB23744A9FE8C26 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFF00000000000000000000097B45F0EE0FB64AC3B8A1B9B750666ED -Out = 455FF206B8BA6D99DDA0B0E645DD03A0 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFF80000000000000000000097B45F0EE0FB64AC3B8A1B9B750666EE -Out = A82E4437632E216EA6E5F75AEB6DC148 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFC0000000000000000000097B45F0EE0FB64AC3B8A1B9B750666EF -Out = A7B1E69A85CC0E01CD2F59E7AFAF790F - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFE0000000000000000000097B45F0EE0FB64AC3B8A1B9B750666F0 -Out = 68FFCB667FCD6113A1B3E6F20ADBADFE - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFF0000000000000000000097B45F0EE0FB64AC3B8A1B9B750666F1 -Out = CEE4E4C331CE6AF61D07617079420E4E - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFF8000000000000000000097B45F0EE0FB64AC3B8A1B9B750666F2 -Out = E7CFD60A04AE3875F6E460FE73FC151E - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFC000000000000000000097B45F0EE0FB64AC3B8A1B9B750666F3 -Out = 301E3DA5BD96188B3154AAC685EB8B6F - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFE000000000000000000097B45F0EE0FB64AC3B8A1B9B750666F4 -Out = 12588D677D871E4B042F16E98693167F - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFF000000000000000000097B45F0EE0FB64AC3B8A1B9B750666F5 -Out = 938DF998D725B8EF5363C99A82D447F8 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFF800000000000000000097B45F0EE0FB64AC3B8A1B9B750666F6 -Out = 6588A7E9B2D3F82BEACB086A24F05730 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFC00000000000000000097B45F0EE0FB64AC3B8A1B9B750666F7 -Out = CA0BBDDD004301639B1644A8CB9360B2 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFE00000000000000000097B45F0EE0FB64AC3B8A1B9B750666F8 -Out = 35B609CE89EE33F267A4E875FA4128F3 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFF00000000000000000097B45F0EE0FB64AC3B8A1B9B750666F9 -Out = BAC817B7C3E5B617FFC977F23BBF755B - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFF80000000000000000097B45F0EE0FB64AC3B8A1B9B750666FA -Out = 46487C6F7B5EEDCDAB5BB08234EE4C76 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFC0000000000000000097B45F0EE0FB64AC3B8A1B9B750666FB -Out = 752D69F5FFAAB3D22A07B5E8CC02C7DA - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFE0000000000000000097B45F0EE0FB64AC3B8A1B9B750666FC -Out = 46688ED5C008A8431D25FECADCAC511E - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFF0000000000000000097B45F0EE0FB64AC3B8A1B9B750666FD -Out = 2A5BCBE76FE95C1274F4B9315D4286CE - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFF8000000000000000097B45F0EE0FB64AC3B8A1B9B750666FE -Out = C9BD29164997EB53E05D41B4A5654AE8 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFC000000000000000097B45F0EE0FB64AC3B8A1B9B750666FF -Out = EB5C8D67F1B7A2183A0B196E8450B873 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFE000000000000000097B45F0EE0FB64AC3B8A1B9B75066700 -Out = CD9231AF1BB1CA82226F5C5852BA17C2 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFF000000000000000097B45F0EE0FB64AC3B8A1B9B75066701 -Out = 5C0DA74392E5BE679DBD40FC95EE03D4 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFF800000000000000097B45F0EE0FB64AC3B8A1B9B75066702 -Out = 786D6BA1C0BA6FC1AF0F11EC5875A1F5 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFC00000000000000097B45F0EE0FB64AC3B8A1B9B75066703 -Out = 1F251DD8210AAEDCB79D4152369CD76B - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFE00000000000000097B45F0EE0FB64AC3B8A1B9B75066704 -Out = 1B291C0DBDB2075E9B9C709A15016ED7 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFF00000000000000097B45F0EE0FB64AC3B8A1B9B75066705 -Out = 8465C72B7319CD4D0E35A05D49C5508D - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFF80000000000000097B45F0EE0FB64AC3B8A1B9B75066706 -Out = 07F04A0749B6DE3B5C668729B28AFB54 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFC0000000000000097B45F0EE0FB64AC3B8A1B9B75066707 -Out = 6C97CB048F5B4E7C32196C14E678A0E1 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFE0000000000000097B45F0EE0FB64AC3B8A1B9B75066708 -Out = BE029441D7AF7EE8CE7310F6F5006809 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFF0000000000000097B45F0EE0FB64AC3B8A1B9B75066709 -Out = 31074BC8D063E87E2FF1F9E0EAA404D9 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFF8000000000000097B45F0EE0FB64AC3B8A1B9B7506670A -Out = 37A677D029773FE867F07020F65F0246 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFC000000000000097B45F0EE0FB64AC3B8A1B9B7506670B -Out = 89DF0BD0FA7D852EAC6B564AB8E6F3F3 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFE000000000000097B45F0EE0FB64AC3B8A1B9B7506670C -Out = CA7747BEFE61CFA622F7A821116E43C2 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFF000000000000097B45F0EE0FB64AC3B8A1B9B7506670D -Out = 82D1BA96DF72AC93CD57E9234509FB08 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFF800000000000097B45F0EE0FB64AC3B8A1B9B7506670E -Out = 299ECF7AAFADB0F2B21812B8B2977470 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFC00000000000097B45F0EE0FB64AC3B8A1B9B7506670F -Out = 7A7A2015F797F943F75F70994F43E523 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFE00000000000097B45F0EE0FB64AC3B8A1B9B75066710 -Out = 88F208943716B38D25EC02E164357DBF - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFF00000000000097B45F0EE0FB64AC3B8A1B9B75066711 -Out = 2420712BC5A2187E71436DF0C7D9E5D7 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFF80000000000097B45F0EE0FB64AC3B8A1B9B75066712 -Out = A95EC3F73418436AD057F861BBC1811C - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFC0000000000097B45F0EE0FB64AC3B8A1B9B75066713 -Out = 713E1A0B1C56DD8D219921C8FEB462EF - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFE0000000000097B45F0EE0FB64AC3B8A1B9B75066714 -Out = B5AA2282CC8D2F0003A6492CDE8BD888 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFF0000000000097B45F0EE0FB64AC3B8A1B9B75066715 -Out = BD38241AF3C4E5CC844CED745CF65B7D - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFF8000000000097B45F0EE0FB64AC3B8A1B9B75066716 -Out = D6DF902987B9C3D5826BA71F1A5FA271 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFC000000000097B45F0EE0FB64AC3B8A1B9B75066717 -Out = DCD0CA7E3C0422E4723AE53641DF1E47 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFE000000000097B45F0EE0FB64AC3B8A1B9B75066718 -Out = 757E483E335672145C0C0C2097DACDA5 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFF000000000097B45F0EE0FB64AC3B8A1B9B75066719 -Out = 3BAE296E2434A5331383085CC7704988 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFF800000000097B45F0EE0FB64AC3B8A1B9B7506671A -Out = F2CE3B5AA3DCCAF64722D1AE10DE005E - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFC00000000097B45F0EE0FB64AC3B8A1B9B7506671B -Out = 58DEC1DEF6FD5E09D814AE6F8641A219 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFE00000000097B45F0EE0FB64AC3B8A1B9B7506671C -Out = 2F28B31722EE508F8679234F458BDA26 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFF00000000097B45F0EE0FB64AC3B8A1B9B7506671D -Out = B89DE1B9E3937F115EEE36CE1C1BDD74 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFF80000000097B45F0EE0FB64AC3B8A1B9B7506671E -Out = B6B987E6C49B5BC452F97991838DDCEB - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFC0000000097B45F0EE0FB64AC3B8A1B9B7506671F -Out = E363D02F055C097BF19CD491654FF798 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFE0000000097B45F0EE0FB64AC3B8A1B9B75066720 -Out = 654A5415175E6343672AE4C63D6643A2 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFF0000000097B45F0EE0FB64AC3B8A1B9B75066721 -Out = ED2313EFC077667BD26DB08F581F3C74 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFF8000000097B45F0EE0FB64AC3B8A1B9B75066722 -Out = FC6348FC174F45C96F5A3C78C13B220B - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFC000000097B45F0EE0FB64AC3B8A1B9B75066723 -Out = 65AEDCD56236E056217C94642BFEF8BC - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFE000000097B45F0EE0FB64AC3B8A1B9B75066724 -Out = 920A3A154BD41CB775BA25C2EB3A6885 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFF000000097B45F0EE0FB64AC3B8A1B9B75066725 -Out = 07953BBE0BE803D75E3B8A0EDBEF1D36 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFF800000097B45F0EE0FB64AC3B8A1B9B75066726 -Out = A0BCB7A68C7C29E13306E5BD11AD6746 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFC00000097B45F0EE0FB64AC3B8A1B9B75066727 -Out = 6DEB2CEA2F4AC6AADB7D3A22A3DA0B65 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFE00000097B45F0EE0FB64AC3B8A1B9B75066728 -Out = 9D70BC79E81D6279EDCBEFD2C0EF1C5D - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFF00000097B45F0EE0FB64AC3B8A1B9B75066729 -Out = AEF03890D852369F48651CF873E30710 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFF80000097B45F0EE0FB64AC3B8A1B9B7506672A -Out = F189987D9AA73395765EF29A72B8B058 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFC0000097B45F0EE0FB64AC3B8A1B9B7506672B -Out = 87F833C8D5200898FF3B6BDD0B869F94 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFE0000097B45F0EE0FB64AC3B8A1B9B7506672C -Out = 5A7B8BB4F19D6DAC3AB19C2F9E2C65DA - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFF0000097B45F0EE0FB64AC3B8A1B9B7506672D -Out = CBDBA79302A31040BEB82623B832DF92 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFF8000097B45F0EE0FB64AC3B8A1B9B7506672E -Out = 38E92CC8333025DC803CE15A2628E34A - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFC000097B45F0EE0FB64AC3B8A1B9B7506672F -Out = FB033A85B5CD43564D80C0280D70B92F - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFE000097B45F0EE0FB64AC3B8A1B9B75066730 -Out = 21EC2A86B6A717DB2A3FC7F1DFF2ECEB - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFF000097B45F0EE0FB64AC3B8A1B9B75066731 -Out = 7DDECD08BA8101F3CD61C42C33B987A7 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFF800097B45F0EE0FB64AC3B8A1B9B75066732 -Out = 784E688C7D87FC3C9D31B2B45885DB6E - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFC00097B45F0EE0FB64AC3B8A1B9B75066733 -Out = 08610008A6FF151C4DD5DE24D578A284 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFE00097B45F0EE0FB64AC3B8A1B9B75066734 -Out = 91F83EC50CE5A5885659D15A3A50FF3E - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00097B45F0EE0FB64AC3B8A1B9B75066735 -Out = B4CE519B707EA0791AF63F4344207CB4 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFF80097B45F0EE0FB64AC3B8A1B9B75066736 -Out = 94D92918083BF232F8D6580E6A0DEF10 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0097B45F0EE0FB64AC3B8A1B9B75066737 -Out = F62EE1B2DB6D84D57BEFC1C99C7F4B60 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0097B45F0EE0FB64AC3B8A1B9B75066738 -Out = 5E4B8514D4CDFDD77796B3ED0E310AFE - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0097B45F0EE0FB64AC3B8A1B9B75066739 -Out = 3175BBBFE5ED208D189E6B25ADEEB78B - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8097B45F0EE0FB64AC3B8A1B9B7506673A -Out = 5AC67D25AA2BEFA746FCD6B3FF5BE1DA - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC097B45F0EE0FB64AC3B8A1B9B7506673B -Out = 6842AA6307CC06A719828A0039FFC800 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE097B45F0EE0FB64AC3B8A1B9B7506673C -Out = 664C66BDE4DEA06C4A79E2EC36DBA148 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF097B45F0EE0FB64AC3B8A1B9B7506673D -Out = F14CE6B410049F5601E8426C4DBAB6F8 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF897B45F0EE0FB64AC3B8A1B9B7506673E -Out = 262051DCA403EFBABE2B6BD45C9952D5 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC97B45F0EE0FB64AC3B8A1B9B7506673F -Out = 4B4D035F1419C491D8FB486510EA97D8 - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE97B45F0EE0FB64AC3B8A1B9B75066740 -Out = 152AF024DA001782BFEB875224F2622E - -IKM = A53E052EA80A62133EB26B3372A71EA2CCDDF10E1A7CB80B6FD9C8A86DA45D46FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97B45F0EE0FB64AC3B8A1B9B75066741 -Out = 8D7040135B3F89F28277A2527111CF36 - -[X9.31-RNG(TripleDES)] -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF768000000000000000F03E2147D5D7BC7F -Out = 667BC708CC798ABE - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76C000000000000000F03E2147D5D7BC80 -Out = E721EE3C0A2D3886 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76E000000000000000F03E2147D5D7BC81 -Out = CB0FA40E1752F8B4 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76F000000000000000F03E2147D5D7BC82 -Out = DF0351A5B44144A8 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76F800000000000000F03E2147D5D7BC83 -Out = 2110E29B7345A88D - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FC00000000000000F03E2147D5D7BC84 -Out = 78B751774AF554FB - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FE00000000000000F03E2147D5D7BC85 -Out = E6BC50D6F128D30B - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FF00000000000000F03E2147D5D7BC86 -Out = 6B7A3116248AE121 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FF80000000000000F03E2147D5D7BC87 -Out = B9B973F5CFA262BD - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFC0000000000000F03E2147D5D7BC88 -Out = CF0A02808E4416F5 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFE0000000000000F03E2147D5D7BC89 -Out = 57AAA1031665A0F6 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFF0000000000000F03E2147D5D7BC8A -Out = C5DA694741C400B8 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFF8000000000000F03E2147D5D7BC8B -Out = 827985C4BEED13AD - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFC000000000000F03E2147D5D7BC8C -Out = 4C959F98D557367B - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFE000000000000F03E2147D5D7BC8D -Out = FEB783CEC07F19E0 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFF000000000000F03E2147D5D7BC8E -Out = B2729B4BC2D30E9A - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFF800000000000F03E2147D5D7BC8F -Out = 09F52DED6D12850F - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFC00000000000F03E2147D5D7BC90 -Out = 84255B4BEA0AD20E - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFE00000000000F03E2147D5D7BC91 -Out = D85EC40C40BCA823 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFF00000000000F03E2147D5D7BC92 -Out = 66E000E798487EDB - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFF80000000000F03E2147D5D7BC93 -Out = DA51E314770DC073 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFC0000000000F03E2147D5D7BC94 -Out = 3C9876ABFCD744E1 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFE0000000000F03E2147D5D7BC95 -Out = 35C48069FB403A05 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFF0000000000F03E2147D5D7BC96 -Out = 167E7A420F8CE115 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFF8000000000F03E2147D5D7BC97 -Out = 3F5F4A0BA480A18B - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFC000000000F03E2147D5D7BC98 -Out = F8A5AB2EFFBE6588 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFE000000000F03E2147D5D7BC99 -Out = 49D255DCA42D2980 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFF000000000F03E2147D5D7BC9A -Out = 01FD7EA6AC37D847 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFF800000000F03E2147D5D7BC9B -Out = 94A77C76071734A9 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFC00000000F03E2147D5D7BC9C -Out = BF7E82A8F9ACEE71 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFE00000000F03E2147D5D7BC9D -Out = F7CD2DB61C062B70 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFF00000000F03E2147D5D7BC9E -Out = 5D5FC3205EA443CB - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFF80000000F03E2147D5D7BC9F -Out = 177BA1ABE977A3BC - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFC0000000F03E2147D5D7BCA0 -Out = A216FB8EBB474E43 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFE0000000F03E2147D5D7BCA1 -Out = EC01B37568C1C8E6 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFF0000000F03E2147D5D7BCA2 -Out = 5C99E5EC34992209 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFF8000000F03E2147D5D7BCA3 -Out = 7CA695FA30B7274C - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFC000000F03E2147D5D7BCA4 -Out = C4FEE5C7491D331A - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFE000000F03E2147D5D7BCA5 -Out = E478C7F21574449D - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFF000000F03E2147D5D7BCA6 -Out = A11D4FBD732DFD01 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFF800000F03E2147D5D7BCA7 -Out = 2C44DD477C786C0D - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFC00000F03E2147D5D7BCA8 -Out = 850D5D9DA85BC0FF - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFE00000F03E2147D5D7BCA9 -Out = A3A6DDB46772D1B1 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFF00000F03E2147D5D7BCAA -Out = 97FF98957CF38B00 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFF80000F03E2147D5D7BCAB -Out = BC9E368D91CD2271 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFC0000F03E2147D5D7BCAC -Out = 6B47A38A2BBDD3C8 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFE0000F03E2147D5D7BCAD -Out = 123A41498F2F64E0 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFF0000F03E2147D5D7BCAE -Out = 7362426810CB6EAF - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFF8000F03E2147D5D7BCAF -Out = 42FB3B0EC5DBC02C - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFC000F03E2147D5D7BCB0 -Out = B7524AB40D565D49 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFE000F03E2147D5D7BCB1 -Out = 811C84CD8E223FB5 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFF000F03E2147D5D7BCB2 -Out = 16DDAFC9DBA1194D - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFF800F03E2147D5D7BCB3 -Out = 390B6AB9069DC5B4 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFC00F03E2147D5D7BCB4 -Out = 009F167DC8664555 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFE00F03E2147D5D7BCB5 -Out = 47645D90B39B319F - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFF00F03E2147D5D7BCB6 -Out = D75CEC7FBA2064DF - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFF80F03E2147D5D7BCB7 -Out = F59DDE3C02AD7C11 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFFC0F03E2147D5D7BCB8 -Out = 35AC2155446CCE9F - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFFE0F03E2147D5D7BCB9 -Out = 1DFEBF13320F7758 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFFF0F03E2147D5D7BCBA -Out = 017CA3327FC53831 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFFF8F03E2147D5D7BCBB -Out = 999A450B6E2040B9 - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFFFCF03E2147D5D7BCBC -Out = 49C1CAAC8C229EDE - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFFFEF03E2147D5D7BCBD -Out = 2C9D8D0F5D014F7B - -IKM = E92C8F13F897BF76193DF2DAAB98DF49E92C8F13F897BF76FFFFFFFFFFFFFFFFF03E2147D5D7BCBE -Out = 16D7C77223C2FAED - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5E80000000000000000167E25F4EBC7336 -Out = 4AACAD89C236FA2B - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EC0000000000000000167E25F4EBC7337 -Out = A255A79AAB2211BA - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EE0000000000000000167E25F4EBC7338 -Out = 061EFE779DAB818D - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EF0000000000000000167E25F4EBC7339 -Out = 23214F0B19BF16B4 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EF8000000000000000167E25F4EBC733A -Out = 52D38F9D53B530AF - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFC000000000000000167E25F4EBC733B -Out = B9F4BA694FE9BC3E - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFE000000000000000167E25F4EBC733C -Out = 2384398BBFBD3010 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFF000000000000000167E25F4EBC733D -Out = D33ECF451E367919 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFF800000000000000167E25F4EBC733E -Out = FAA94CA00765794C - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFC00000000000000167E25F4EBC733F -Out = 14C1303AAEE1B314 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFE00000000000000167E25F4EBC7340 -Out = DC3A4F07DC68AC93 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFF00000000000000167E25F4EBC7341 -Out = A4872C92A093B379 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFF80000000000000167E25F4EBC7342 -Out = 3EE74CDFFBEED032 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFC0000000000000167E25F4EBC7343 -Out = 328FD9C77EDC78BA - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFE0000000000000167E25F4EBC7344 -Out = A5D36BD81D93CB71 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFF0000000000000167E25F4EBC7345 -Out = D0765A50A9CAE3ED - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFF8000000000000167E25F4EBC7346 -Out = 15F3441B4AC4F802 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFC000000000000167E25F4EBC7347 -Out = 01463E8F161851C2 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFE000000000000167E25F4EBC7348 -Out = 312E7CB57F08CBC2 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFF000000000000167E25F4EBC7349 -Out = D9688FEF358FE5DF - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFF800000000000167E25F4EBC734A -Out = 30B34034C46E22B5 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFC00000000000167E25F4EBC734B -Out = A7CA7218CA7D5F9D - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFE00000000000167E25F4EBC734C -Out = CE41C7659B6BFDA3 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFF00000000000167E25F4EBC734D -Out = B8EED0C6DFB8B76B - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFF80000000000167E25F4EBC734E -Out = A0C514277C70278A - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFC0000000000167E25F4EBC734F -Out = 7A8F57670E11D5D8 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFE0000000000167E25F4EBC7350 -Out = 35AF5134EC18E0FC - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFF0000000000167E25F4EBC7351 -Out = 3034436B0E8B1B4D - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFF8000000000167E25F4EBC7352 -Out = B1DC17DE141AD9EC - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFC000000000167E25F4EBC7353 -Out = 40D2868DCF3BDA80 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFE000000000167E25F4EBC7354 -Out = D3F365825B585FF6 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFF000000000167E25F4EBC7355 -Out = 952046F8E93A268A - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFF800000000167E25F4EBC7356 -Out = 97D96E48A9216264 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFC00000000167E25F4EBC7357 -Out = DBEE3AD97B87915C - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFE00000000167E25F4EBC7358 -Out = 94093248683E084F - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFF00000000167E25F4EBC7359 -Out = 3133C57CE22A28AB - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFF80000000167E25F4EBC735A -Out = B32CC354449589E1 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFC0000000167E25F4EBC735B -Out = 979F03CF867FDA3C - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFE0000000167E25F4EBC735C -Out = 6BFECB79437E62F4 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFF0000000167E25F4EBC735D -Out = BAFB5D5B9BE92EEC - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFF8000000167E25F4EBC735E -Out = D4FB2CAF0F114F42 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFC000000167E25F4EBC735F -Out = 3F910FDBC4C74698 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFE000000167E25F4EBC7360 -Out = 516D7E7739908FED - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFF000000167E25F4EBC7361 -Out = 50DE403CB1FB1733 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFF800000167E25F4EBC7362 -Out = 1A91443B2892FE8C - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFC00000167E25F4EBC7363 -Out = F3A490F9FE853450 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFE00000167E25F4EBC7364 -Out = B7F8398C9D32149C - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFF00000167E25F4EBC7365 -Out = 179C6729EBDE6A46 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFF80000167E25F4EBC7366 -Out = 34520C49E68D307B - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFC0000167E25F4EBC7367 -Out = B6C2F4E4763DF833 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFE0000167E25F4EBC7368 -Out = F911A2AB5E1F0E49 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFF0000167E25F4EBC7369 -Out = 307C3C11DF3EE8EA - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFF8000167E25F4EBC736A -Out = C26A5A02596BFE8D - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFC000167E25F4EBC736B -Out = B44B68C5BE17352C - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFE000167E25F4EBC736C -Out = 3779CEB11398375F - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFF000167E25F4EBC736D -Out = 7A9EF507F43BD31C - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFF800167E25F4EBC736E -Out = 85CD4D72D2664C70 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFFC00167E25F4EBC736F -Out = 9EB57EACAB2B38C8 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFFE00167E25F4EBC7370 -Out = E521B274CC7EC06F - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFFF00167E25F4EBC7371 -Out = 50148A63F3D39097 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFFF80167E25F4EBC7372 -Out = 6DCE0D8E770CF809 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFFFC0167E25F4EBC7373 -Out = CAF9334B5A606C31 - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFFFE0167E25F4EBC7374 -Out = 1088488A43D9ACAD - -IKM = 5E5B890B133B345494AB15F75EB30757972667C862C4BF5EFFFFFFFFFFFFFFFF0167E25F4EBC7375 -Out = F922C4B2357E9034 diff --git a/src/tests/test_rng.cpp b/src/tests/test_rng.cpp index 7f318426c..f7cf3585e 100644 --- a/src/tests/test_rng.cpp +++ b/src/tests/test_rng.cpp @@ -12,10 +12,6 @@ #include <botan/hmac_drbg.h> #endif -#if defined(BOTAN_HAS_X931_RNG) - #include <botan/x931_rng.h> -#endif - #if defined(BOTAN_HAS_ENTROPY_SOURCE) #include <botan/entropy_src.h> #endif @@ -31,41 +27,6 @@ namespace Botan_Tests { namespace { -#if defined(BOTAN_HAS_X931_RNG) -class X931_RNG_Tests : public Text_Based_Test - { - public: - X931_RNG_Tests() : Text_Based_Test("x931.vec", {"IKM", "Out"}) {} - - Test::Result run_one_test(const std::string& algo, const VarMap& vars) override - { - const std::vector<uint8_t> ikm = get_req_bin(vars, "IKM"); - const std::vector<uint8_t> expected = get_req_bin(vars, "Out"); - - Test::Result result("X9.31-RNG(" + algo + ")"); - - std::unique_ptr<Botan::BlockCipher> bc = Botan::BlockCipher::create(algo); - - if(!bc) - { - result.note_missing("X9.31 cipher " + algo); - return result; - } - - Botan::ANSI_X931_RNG rng(bc.release(), new Fixed_Output_RNG(ikm)); - - std::vector<uint8_t> output(expected.size()); - rng.randomize(output.data(), output.size()); - result.test_eq("rng", output, expected); - - return result; - } - - }; - -BOTAN_REGISTER_TEST("x931_rng", X931_RNG_Tests); -#endif - #if defined(BOTAN_HAS_HMAC_DRBG) class HMAC_DRBG_Tests : public Text_Based_Test |