aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2016-10-30 09:43:18 -0400
committerJack Lloyd <[email protected]>2016-10-30 09:43:18 -0400
commitdb9df6f7322fd9b2606c273a49836c11e9973711 (patch)
treecc434f4825007f755c24dc1421c908e3a9932aee
parente6a64f256cbd5c37ff1d284a26bd22cc45801c03 (diff)
parentf98c184fe66e6c0f624b381a186c6dddfc62539a (diff)
Merge GH #692 Remove deprecated RNGs and entropy sources
-rw-r--r--doc/deprecated.txt10
-rw-r--r--src/build-data/buildh.in27
-rw-r--r--src/build-data/policy/bsi.txt9
-rw-r--r--src/build-data/policy/modern.txt6
-rw-r--r--src/cli/speed.cpp17
-rw-r--r--src/lib/base/botan.h2
-rw-r--r--src/lib/entropy/beos_stats/es_beos.cpp66
-rw-r--r--src/lib/entropy/beos_stats/es_beos.h28
-rw-r--r--src/lib/entropy/beos_stats/info.txt17
-rw-r--r--src/lib/entropy/egd/es_egd.cpp157
-rw-r--r--src/lib/entropy/egd/es_egd.h52
-rw-r--r--src/lib/entropy/egd/info.txt32
-rw-r--r--src/lib/entropy/entropy_srcs.cpp28
-rw-r--r--src/lib/entropy/unix_procs/info.txt25
-rw-r--r--src/lib/entropy/unix_procs/unix_proc_sources.cpp65
-rw-r--r--src/lib/entropy/unix_procs/unix_procs.cpp292
-rw-r--r--src/lib/entropy/unix_procs/unix_procs.h93
-rw-r--r--src/lib/rng/auto_rng/auto_rng.cpp32
-rw-r--r--src/lib/rng/auto_rng/info.txt4
-rw-r--r--src/lib/rng/hmac_rng/hmac_rng.cpp199
-rw-r--r--src/lib/rng/hmac_rng/hmac_rng.h103
-rw-r--r--src/lib/rng/hmac_rng/info.txt6
-rw-r--r--src/lib/rng/x931_rng/info.txt5
-rw-r--r--src/lib/rng/x931_rng/x931_rng.cpp119
-rw-r--r--src/lib/rng/x931_rng/x931_rng.h54
-rw-r--r--src/tests/data/x931.vec1541
-rw-r--r--src/tests/test_rng.cpp39
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