external/boringssl: Sync to 2c45fa0b90f61b27973fa81893e014fc8c8e8999.

This includes the following changes:

https://boringssl.googlesource.com/boringssl/+log/faa539f877432814d0f2de19846eb99f2ea1e207..2c45fa0b90f61b27973fa81893e014fc8c8e8999

Test: BoringSSL CTS Presubmits
Change-Id: Ie6dc40e0c979168ec73fa1165cbc6e6b83793439
diff --git a/src/crypto/CMakeLists.txt b/src/crypto/CMakeLists.txt
index 3728e6f..ef8c2d4 100644
--- a/src/crypto/CMakeLists.txt
+++ b/src/crypto/CMakeLists.txt
@@ -1,30 +1,43 @@
 include_directories(../include)
 
-if(APPLE)
-  if (${ARCH} STREQUAL "x86")
-    set(PERLASM_FLAGS "-fPIC -DOPENSSL_IA32_SSE2")
-  endif()
-  set(PERLASM_STYLE macosx)
-  set(ASM_EXT S)
-  enable_language(ASM)
-elseif(UNIX)
+if(UNIX)
   if (${ARCH} STREQUAL "aarch64")
     # The "armx" Perl scripts look for "64" in the style argument
     # in order to decide whether to generate 32- or 64-bit asm.
-    set(PERLASM_STYLE linux64)
+    if (APPLE)
+      set(PERLASM_STYLE ios64)
+    else()
+      set(PERLASM_STYLE linux64)
+    endif()
   elseif (${ARCH} STREQUAL "arm")
-    set(PERLASM_STYLE linux32)
-  elseif (${ARCH} STREQUAL "x86")
-    set(PERLASM_FLAGS "-fPIC -DOPENSSL_IA32_SSE2")
-    set(PERLASM_STYLE elf)
+    if (APPLE)
+      set(PERLASM_STYLE ios32)
+    else()
+      set(PERLASM_STYLE linux32)
+    endif()
   elseif (${ARCH} STREQUAL "ppc64le")
     set(PERLASM_STYLE ppc64le)
   else()
-    set(PERLASM_STYLE elf)
+    if (${ARCH} STREQUAL "x86")
+      set(PERLASM_FLAGS "-fPIC -DOPENSSL_IA32_SSE2")
+    endif()
+    if (APPLE)
+      set(PERLASM_STYLE macosx)
+    else()
+      set(PERLASM_STYLE elf)
+    endif()
   endif()
   set(ASM_EXT S)
   enable_language(ASM)
   set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,--noexecstack")
+
+  # CMake does not add -isysroot and -arch flags to assembly.
+  if (APPLE)
+    set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}")
+    foreach(arch ${CMAKE_OSX_ARCHITECTURES})
+      set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -arch ${arch}")
+    endforeach()
+  endif()
 else()
   if (CMAKE_CL_64)
     message("Using nasm")
@@ -67,11 +80,7 @@
 add_subdirectory(pool)
 
 # Level 0.2 - depends on nothing but itself
-add_subdirectory(sha)
-add_subdirectory(md4)
-add_subdirectory(md5)
 add_subdirectory(modes)
-add_subdirectory(aes)
 add_subdirectory(des)
 add_subdirectory(rc4)
 add_subdirectory(conf)
@@ -80,7 +89,7 @@
 add_subdirectory(curve25519)
 
 # Level 1, depends only on 0.*
-add_subdirectory(digest)
+add_subdirectory(digest_extra)
 add_subdirectory(cipher)
 add_subdirectory(rand)
 add_subdirectory(bio)
@@ -96,7 +105,7 @@
 add_subdirectory(ec)
 add_subdirectory(ecdh)
 add_subdirectory(ecdsa)
-add_subdirectory(hmac)
+add_subdirectory(hmac_extra)
 
 # Level 3
 add_subdirectory(cmac)
@@ -112,8 +121,12 @@
 # Test support code
 add_subdirectory(test)
 
+add_subdirectory(fipsmodule)
+
 add_library(
-  crypto
+  crypto_base
+
+  OBJECT
 
   cpu-aarch64-linux.c
   cpu-arm.c
@@ -129,20 +142,33 @@
   thread_none.c
   thread_pthread.c
   thread_win.c
+)
 
+if(FIPS)
+  SET_SOURCE_FILES_PROPERTIES(fipsmodule/bcm.o PROPERTIES EXTERNAL_OBJECT true)
+  SET_SOURCE_FILES_PROPERTIES(fipsmodule/bcm.o PROPERTIES GENERATED true)
+
+  set(
+    CRYPTO_FIPS_OBJECTS
+
+    fipsmodule/bcm.o
+  )
+endif()
+
+add_library(
+  crypto
+
+  $<TARGET_OBJECTS:crypto_base>
   $<TARGET_OBJECTS:stack>
   $<TARGET_OBJECTS:lhash>
   $<TARGET_OBJECTS:err>
   $<TARGET_OBJECTS:base64>
   $<TARGET_OBJECTS:bytestring>
   $<TARGET_OBJECTS:pool>
-  $<TARGET_OBJECTS:sha>
-  $<TARGET_OBJECTS:md4>
-  $<TARGET_OBJECTS:md5>
-  $<TARGET_OBJECTS:digest>
+  $<TARGET_OBJECTS:fipsmodule>
+  $<TARGET_OBJECTS:digest_extra>
   $<TARGET_OBJECTS:cipher>
   $<TARGET_OBJECTS:modes>
-  $<TARGET_OBJECTS:aes>
   $<TARGET_OBJECTS:des>
   $<TARGET_OBJECTS:rc4>
   $<TARGET_OBJECTS:conf>
@@ -162,7 +188,6 @@
   $<TARGET_OBJECTS:ec>
   $<TARGET_OBJECTS:ecdh>
   $<TARGET_OBJECTS:ecdsa>
-  $<TARGET_OBJECTS:hmac>
   $<TARGET_OBJECTS:cmac>
   $<TARGET_OBJECTS:evp>
   $<TARGET_OBJECTS:hkdf>
@@ -170,8 +195,16 @@
   $<TARGET_OBJECTS:x509>
   $<TARGET_OBJECTS:x509v3>
   $<TARGET_OBJECTS:pkcs8_lib>
+
+  ${CRYPTO_FIPS_OBJECTS}
 )
 
+if(FIPS)
+  add_dependencies(crypto bcm_o_target)
+endif()
+
+SET_TARGET_PROPERTIES(crypto PROPERTIES LINKER_LANGUAGE C)
+
 if(NOT MSVC AND NOT ANDROID)
   target_link_libraries(crypto pthread)
 endif()
@@ -201,7 +234,9 @@
   crypto_test
 
   asn1/asn1_test.cc
+  base64/base64_test.cc
   bio/bio_test.cc
+  bytestring/bytestring_test.cc
   chacha/chacha_test.cc
   constant_time_test.cc
   curve25519/x25519_test.cc
@@ -210,6 +245,7 @@
   ec/ec_test.cc
   err/err_test.cc
   evp/evp_extra_test.cc
+  rand/ctrdrbg_test.cc
   rsa/rsa_test.cc
 
   $<TARGET_OBJECTS:gtest_main>
diff --git a/src/crypto/aes/CMakeLists.txt b/src/crypto/aes/CMakeLists.txt
deleted file mode 100644
index 33eebf5..0000000
--- a/src/crypto/aes/CMakeLists.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-include_directories(../../include)
-
-if (${ARCH} STREQUAL "x86_64")
-  set(
-    AES_ARCH_SOURCES
-
-    aes-x86_64.${ASM_EXT}
-    aesni-x86_64.${ASM_EXT}
-    bsaes-x86_64.${ASM_EXT}
-    vpaes-x86_64.${ASM_EXT}
-  )
-endif()
-
-if (${ARCH} STREQUAL "x86")
-  set(
-    AES_ARCH_SOURCES
-
-    aes-586.${ASM_EXT}
-    vpaes-x86.${ASM_EXT}
-    aesni-x86.${ASM_EXT}
-  )
-endif()
-
-if (${ARCH} STREQUAL "arm")
-  set(
-    AES_ARCH_SOURCES
-
-    aes-armv4.${ASM_EXT}
-    bsaes-armv7.${ASM_EXT}
-    aesv8-armx.${ASM_EXT}
-  )
-endif()
-
-if (${ARCH} STREQUAL "aarch64")
-  set(
-    AES_ARCH_SOURCES
-
-    aesv8-armx.${ASM_EXT}
-  )
-endif()
-
-if (${ARCH} STREQUAL "ppc64le")
-  set(
-    AES_ARCH_SOURCES
-
-    aesp8-ppc.${ASM_EXT}
-  )
-endif()
-
-add_library(
-  aes
-
-  OBJECT
-
-  aes.c
-  key_wrap.c
-  mode_wrappers.c
-
-  ${AES_ARCH_SOURCES}
-)
-
-perlasm(aes-x86_64.${ASM_EXT} asm/aes-x86_64.pl)
-perlasm(aesni-x86_64.${ASM_EXT} asm/aesni-x86_64.pl)
-perlasm(bsaes-x86_64.${ASM_EXT} asm/bsaes-x86_64.pl)
-perlasm(vpaes-x86_64.${ASM_EXT} asm/vpaes-x86_64.pl)
-perlasm(aes-586.${ASM_EXT} asm/aes-586.pl)
-perlasm(vpaes-x86.${ASM_EXT} asm/vpaes-x86.pl)
-perlasm(aesni-x86.${ASM_EXT} asm/aesni-x86.pl)
-perlasm(aes-armv4.${ASM_EXT} asm/aes-armv4.pl)
-perlasm(bsaes-armv7.${ASM_EXT} asm/bsaes-armv7.pl)
-perlasm(aesv8-armx.${ASM_EXT} asm/aesv8-armx.pl)
-perlasm(aesp8-ppc.${ASM_EXT} asm/aesp8-ppc.pl)
-
-add_executable(
-  aes_test
-
-  aes_test.cc
-  $<TARGET_OBJECTS:test_support>
-)
-
-target_link_libraries(aes_test crypto)
-add_dependencies(all_tests aes_test)
diff --git a/src/crypto/aes/internal.h b/src/crypto/aes/internal.h
deleted file mode 100644
index 3dc5c63..0000000
--- a/src/crypto/aes/internal.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* ====================================================================
- * Copyright (c) 2002-2006 The OpenSSL Project.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- *    software must display the following acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For written permission, please contact
- *    openssl-core@openssl.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- *    nor may "OpenSSL" appear in their names without prior written
- *    permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ==================================================================== */
-
-#ifndef OPENSSL_HEADER_AES_INTERNAL_H
-#define OPENSSL_HEADER_AES_INTERNAL_H
-
-#include <openssl/base.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-
-#if defined(_MSC_VER) && \
-    (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64))
-#define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
-#define GETU32(p) SWAP(*((uint32_t *)(p)))
-#define PUTU32(ct, st) \
-  { *((uint32_t *)(ct)) = SWAP((st)); }
-#else
-#define GETU32(pt)                                         \
-  (((uint32_t)(pt)[0] << 24) ^ ((uint32_t)(pt)[1] << 16) ^ \
-   ((uint32_t)(pt)[2] << 8) ^ ((uint32_t)(pt)[3]))
-#define PUTU32(ct, st)          \
-  {                             \
-    (ct)[0] = (uint8_t)((st) >> 24); \
-    (ct)[1] = (uint8_t)((st) >> 16); \
-    (ct)[2] = (uint8_t)((st) >> 8);  \
-    (ct)[3] = (uint8_t)(st);         \
-  }
-#endif
-
-#define MAXKC (256 / 32)
-#define MAXKB (256 / 8)
-#define MAXNR 14
-
-
-#if defined(__cplusplus)
-} /* extern C */
-#endif
-
-#endif /* OPENSSL_HEADER_AES_INTERNAL_H */
diff --git a/src/crypto/base64/CMakeLists.txt b/src/crypto/base64/CMakeLists.txt
index 15ee691..18cf9fe 100644
--- a/src/crypto/base64/CMakeLists.txt
+++ b/src/crypto/base64/CMakeLists.txt
@@ -7,14 +7,3 @@
 
   base64.c
 )
-
-add_executable(
-  base64_test
-
-  base64_test.cc
-
-  $<TARGET_OBJECTS:test_support>
-)
-
-target_link_libraries(base64_test crypto)
-add_dependencies(all_tests base64_test)
diff --git a/src/crypto/base64/base64.c b/src/crypto/base64/base64.c
index 7afadf7..a47cb15 100644
--- a/src/crypto/base64/base64.c
+++ b/src/crypto/base64/base64.c
@@ -67,10 +67,16 @@
 
 /* Encoding. */
 
-static const unsigned char data_bin2ascii[65] =
-    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-#define conv_bin2ascii(a) (data_bin2ascii[(a) & 0x3f])
+static uint8_t conv_bin2ascii(uint8_t a) {
+  /* Since PEM is sometimes used to carry private keys, we encode base64 data
+   * itself in constant-time. */
+  a &= 0x3f;
+  uint8_t ret = constant_time_select_8(constant_time_eq_8(a, 62), '+', '/');
+  ret = constant_time_select_8(constant_time_lt_8(a, 62), a - 52 + '0', ret);
+  ret = constant_time_select_8(constant_time_lt_8(a, 52), a - 26 + 'a', ret);
+  ret = constant_time_select_8(constant_time_lt_8(a, 26), a + 'A', ret);
+  return ret;
+}
 
 OPENSSL_COMPILE_ASSERT(sizeof(((EVP_ENCODE_CTX *)(NULL))->data) % 3 == 0,
                        data_length_must_be_multiple_of_base64_chunk_size);
@@ -229,29 +235,28 @@
   OPENSSL_memset(ctx, 0, sizeof(EVP_ENCODE_CTX));
 }
 
-/* kBase64ASCIIToBinData maps characters (c < 128) to their base64 value, or
- * else 0xff if they are invalid. As a special case, the padding character
- * ('=') is mapped to zero. */
-static const uint8_t kBase64ASCIIToBinData[128] = {
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3e, 0xff, 0xff, 0xff, 0x3f,
-    0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0xff, 0xff,
-    0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
-    0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
-    0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff,
-    0xff, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
-    0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
-    0x31, 0x32, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff,
-};
-
 static uint8_t base64_ascii_to_bin(uint8_t a) {
-  if (a >= 128) {
-    return 0xFF;
-  }
+  /* Since PEM is sometimes used to carry private keys, we decode base64 data
+   * itself in constant-time. */
+  const uint8_t is_upper =
+      constant_time_ge_8(a, 'A') & constant_time_ge_8('Z', a);
+  const uint8_t is_lower =
+      constant_time_ge_8(a, 'a') & constant_time_ge_8('z', a);
+  const uint8_t is_digit =
+      constant_time_ge_8(a, '0') & constant_time_ge_8('9', a);
+  const uint8_t is_plus = constant_time_eq_8(a, '+');
+  const uint8_t is_slash = constant_time_eq_8(a, '/');
+  const uint8_t is_equals = constant_time_eq_8(a, '=');
 
-  return kBase64ASCIIToBinData[a];
+  uint8_t ret = 0xff; /* 0xff signals invalid. */
+  ret = constant_time_select_8(is_upper, a - 'A', ret);      /* [0,26) */
+  ret = constant_time_select_8(is_lower, a - 'a' + 26, ret); /* [26,52) */
+  ret = constant_time_select_8(is_digit, a - '0' + 52, ret); /* [52,62) */
+  ret = constant_time_select_8(is_plus, 62, ret);
+  ret = constant_time_select_8(is_slash, 63, ret);
+  /* Padding maps to zero, to be further handled by the caller. */
+  ret = constant_time_select_8(is_equals, 0, ret);
+  return ret;
 }
 
 /* base64_decode_quad decodes a single “quad” (i.e. four characters) of base64
diff --git a/src/crypto/base64/base64_test.cc b/src/crypto/base64/base64_test.cc
index bdf3d9a..108c782 100644
--- a/src/crypto/base64/base64_test.cc
+++ b/src/crypto/base64/base64_test.cc
@@ -18,11 +18,14 @@
 #include <string>
 #include <vector>
 
+#include <gtest/gtest.h>
+
 #include <openssl/base64.h>
 #include <openssl/crypto.h>
 #include <openssl/err.h>
 
 #include "../internal.h"
+#include "../test/test_util.h"
 
 
 enum encoding_relation {
@@ -100,7 +103,9 @@
      "=======\n"},
 };
 
-static const size_t kNumTests = OPENSSL_ARRAY_SIZE(kTestVectors);
+class Base64Test : public testing::TestWithParam<TestVector> {};
+
+INSTANTIATE_TEST_CASE_P(, Base64Test, testing::ValuesIn(kTestVectors));
 
 // RemoveNewlines returns a copy of |in| with all '\n' characters removed.
 static std::string RemoveNewlines(const char *in) {
@@ -116,281 +121,187 @@
   return ret;
 }
 
-static bool TestEncodeBlock() {
-  for (unsigned i = 0; i < kNumTests; i++) {
-    const TestVector *t = &kTestVectors[i];
-    if (t->relation != canonical) {
-      continue;
-    }
+TEST_P(Base64Test, EncodeBlock) {
+  const TestVector &t = GetParam();
+  if (t.relation != canonical) {
+    return;
+  }
 
-    const size_t decoded_len = strlen(t->decoded);
+  const size_t decoded_len = strlen(t.decoded);
+  size_t max_encoded_len;
+  ASSERT_TRUE(EVP_EncodedLength(&max_encoded_len, decoded_len));
+
+  std::vector<uint8_t> out_vec(max_encoded_len);
+  uint8_t *out = out_vec.data();
+  size_t len = EVP_EncodeBlock(out, (const uint8_t *)t.decoded, decoded_len);
+
+  std::string encoded(RemoveNewlines(t.encoded));
+  EXPECT_EQ(Bytes(encoded), Bytes(out, len));
+}
+
+TEST_P(Base64Test, DecodeBase64) {
+  const TestVector &t = GetParam();
+  if (t.relation == valid) {
+    // The non-canonical encodings will generally have odd whitespace etc
+    // that |EVP_DecodeBase64| will reject.
+    return;
+  }
+
+  const std::string encoded(RemoveNewlines(t.encoded));
+  std::vector<uint8_t> out_vec(encoded.size());
+  uint8_t *out = out_vec.data();
+
+  size_t len;
+  int ok = EVP_DecodeBase64(out, &len, out_vec.size(),
+                            (const uint8_t *)encoded.data(), encoded.size());
+
+  if (t.relation == invalid) {
+    EXPECT_FALSE(ok);
+  } else if (t.relation == canonical) {
+    ASSERT_TRUE(ok);
+    EXPECT_EQ(Bytes(t.decoded), Bytes(out, len));
+  }
+}
+
+TEST_P(Base64Test, DecodeBlock) {
+  const TestVector &t = GetParam();
+  if (t.relation != canonical) {
+    return;
+  }
+
+  std::string encoded(RemoveNewlines(t.encoded));
+
+  std::vector<uint8_t> out_vec(encoded.size());
+  uint8_t *out = out_vec.data();
+
+  // Test that the padding behavior of the deprecated API is preserved.
+  int ret =
+      EVP_DecodeBlock(out, (const uint8_t *)encoded.data(), encoded.size());
+  ASSERT_GE(ret, 0);
+  // EVP_DecodeBlock should ignore padding.
+  ASSERT_EQ(0, ret % 3);
+  size_t expected_len = strlen(t.decoded);
+  if (expected_len % 3 != 0) {
+    ret -= 3 - (expected_len % 3);
+  }
+  EXPECT_EQ(Bytes(t.decoded), Bytes(out, static_cast<size_t>(ret)));
+}
+
+TEST_P(Base64Test, EncodeDecode) {
+  const TestVector &t = GetParam();
+
+  EVP_ENCODE_CTX ctx;
+  const size_t decoded_len = strlen(t.decoded);
+
+  if (t.relation == canonical) {
     size_t max_encoded_len;
-    if (!EVP_EncodedLength(&max_encoded_len, decoded_len)) {
-      fprintf(stderr, "#%u: EVP_EncodedLength failed\n", i);
-      return false;
-    }
+    ASSERT_TRUE(EVP_EncodedLength(&max_encoded_len, decoded_len));
 
+    // EVP_EncodeUpdate will output new lines every 64 bytes of output so we
+    // need slightly more than |EVP_EncodedLength| returns. */
+    max_encoded_len += (max_encoded_len + 63) >> 6;
     std::vector<uint8_t> out_vec(max_encoded_len);
     uint8_t *out = out_vec.data();
-    size_t len = EVP_EncodeBlock(out, (const uint8_t *)t->decoded, decoded_len);
 
-    std::string encoded(RemoveNewlines(t->encoded));
-    if (len != encoded.size() ||
-        OPENSSL_memcmp(out, encoded.data(), len) != 0) {
-      fprintf(stderr, "encode(\"%s\") = \"%.*s\", want \"%s\"\n",
-              t->decoded, (int)len, (const char*)out, encoded.c_str());
-      return false;
-    }
-  }
+    EVP_EncodeInit(&ctx);
 
-  return true;
-}
-
-static bool TestDecodeBase64() {
-  size_t len;
-
-  for (unsigned i = 0; i < kNumTests; i++) {
-    const TestVector *t = &kTestVectors[i];
-
-    if (t->relation == valid) {
-      // The non-canonical encodings will generally have odd whitespace etc
-      // that |EVP_DecodeBase64| will reject.
-      continue;
-    }
-
-    const std::string encoded(RemoveNewlines(t->encoded));
-    std::vector<uint8_t> out_vec(encoded.size());
-    uint8_t *out = out_vec.data();
-
-    int ok = EVP_DecodeBase64(out, &len, out_vec.size(),
-                              (const uint8_t *)encoded.data(), encoded.size());
-
-    if (t->relation == invalid) {
-      if (ok) {
-        fprintf(stderr, "decode(\"%s\") didn't fail but should have\n",
-                encoded.c_str());
-        return false;
-      }
-    } else if (t->relation == canonical) {
-      if (!ok) {
-        fprintf(stderr, "decode(\"%s\") failed\n", encoded.c_str());
-        return false;
-      }
-
-      if (len != strlen(t->decoded) ||
-          OPENSSL_memcmp(out, t->decoded, len) != 0) {
-        fprintf(stderr, "decode(\"%s\") = \"%.*s\", want \"%s\"\n",
-                encoded.c_str(), (int)len, (const char*)out, t->decoded);
-        return false;
-      }
-    }
-  }
-
-  return true;
-}
-
-static bool TestDecodeBlock() {
-  for (unsigned i = 0; i < kNumTests; i++) {
-    const TestVector *t = &kTestVectors[i];
-    if (t->relation != canonical) {
-      continue;
-    }
-
-    std::string encoded(RemoveNewlines(t->encoded));
-
-    std::vector<uint8_t> out_vec(encoded.size());
-    uint8_t *out = out_vec.data();
-
-    // Test that the padding behavior of the deprecated API is preserved.
-    int ret =
-        EVP_DecodeBlock(out, (const uint8_t *)encoded.data(), encoded.size());
-    if (ret < 0) {
-      fprintf(stderr, "EVP_DecodeBlock(\"%s\") failed\n", t->encoded);
-      return false;
-    }
-    if (ret % 3 != 0) {
-      fprintf(stderr, "EVP_DecodeBlock did not ignore padding\n");
-      return false;
-    }
-    size_t expected_len = strlen(t->decoded);
-    if (expected_len % 3 != 0) {
-      ret -= 3 - (expected_len % 3);
-    }
-    if (static_cast<size_t>(ret) != strlen(t->decoded) ||
-        OPENSSL_memcmp(out, t->decoded, ret) != 0) {
-      fprintf(stderr, "decode(\"%s\") = \"%.*s\", want \"%s\"\n",
-              t->encoded, ret, (const char*)out, t->decoded);
-      return false;
-    }
-  }
-
-  return true;
-}
-
-static bool TestEncodeDecode() {
-  for (unsigned test_num = 0; test_num < kNumTests; test_num++) {
-    const TestVector *t = &kTestVectors[test_num];
-
-    EVP_ENCODE_CTX ctx;
-    const size_t decoded_len = strlen(t->decoded);
-
-    if (t->relation == canonical) {
-      size_t max_encoded_len;
-      if (!EVP_EncodedLength(&max_encoded_len, decoded_len)) {
-        fprintf(stderr, "#%u: EVP_EncodedLength failed\n", test_num);
-        return false;
-      }
-
-      // EVP_EncodeUpdate will output new lines every 64 bytes of output so we
-      // need slightly more than |EVP_EncodedLength| returns. */
-      max_encoded_len += (max_encoded_len + 63) >> 6;
-      std::vector<uint8_t> out_vec(max_encoded_len);
-      uint8_t *out = out_vec.data();
-
-      EVP_EncodeInit(&ctx);
-
-      int out_len;
-      EVP_EncodeUpdate(&ctx, out, &out_len,
-                       reinterpret_cast<const uint8_t *>(t->decoded),
-                       decoded_len);
-      size_t total = out_len;
-
-      EVP_EncodeFinal(&ctx, out + total, &out_len);
-      total += out_len;
-
-      if (total != strlen(t->encoded) ||
-          OPENSSL_memcmp(out, t->encoded, total) != 0) {
-        fprintf(stderr, "#%u: EVP_EncodeUpdate produced different output: '%s' (%u)\n",
-                test_num, out, static_cast<unsigned>(total));
-        return false;
-      }
-    }
-
-    std::vector<uint8_t> out_vec(strlen(t->encoded));
-    uint8_t *out = out_vec.data();
-
-    EVP_DecodeInit(&ctx);
     int out_len;
-    size_t total = 0;
-    int ret = EVP_DecodeUpdate(&ctx, out, &out_len,
-                               reinterpret_cast<const uint8_t *>(t->encoded),
-                               strlen(t->encoded));
-    if (ret != -1) {
-      total = out_len;
-      ret = EVP_DecodeFinal(&ctx, out + total, &out_len);
-      total += out_len;
-    }
+    EVP_EncodeUpdate(&ctx, out, &out_len,
+                     reinterpret_cast<const uint8_t *>(t.decoded),
+                     decoded_len);
+    size_t total = out_len;
 
-    switch (t->relation) {
-      case canonical:
-      case valid:
-        if (ret == -1) {
-          fprintf(stderr, "#%u: EVP_DecodeUpdate failed\n", test_num);
-          return false;
-        }
-        if (total != decoded_len ||
-            OPENSSL_memcmp(out, t->decoded, decoded_len)) {
-          fprintf(stderr, "#%u: EVP_DecodeUpdate produced incorrect output\n",
-                  test_num);
-          return false;
-        }
-        break;
+    EVP_EncodeFinal(&ctx, out + total, &out_len);
+    total += out_len;
 
-      case invalid:
-        if (ret != -1) {
-          fprintf(stderr, "#%u: EVP_DecodeUpdate was successful but shouldn't have been\n", test_num);
-          return false;
-        }
-        break;
-    }
+    EXPECT_EQ(Bytes(t.encoded), Bytes(out, total));
   }
 
-  return true;
+  std::vector<uint8_t> out_vec(strlen(t.encoded));
+  uint8_t *out = out_vec.data();
+
+  EVP_DecodeInit(&ctx);
+  int out_len;
+  size_t total = 0;
+  int ret = EVP_DecodeUpdate(&ctx, out, &out_len,
+                             reinterpret_cast<const uint8_t *>(t.encoded),
+                             strlen(t.encoded));
+  if (ret != -1) {
+    total = out_len;
+    ret = EVP_DecodeFinal(&ctx, out + total, &out_len);
+    total += out_len;
+  }
+
+  switch (t.relation) {
+    case canonical:
+    case valid:
+      ASSERT_NE(-1, ret);
+      EXPECT_EQ(Bytes(t.decoded), Bytes(out, total));
+      break;
+
+    case invalid:
+      EXPECT_EQ(-1, ret);
+      break;
+  }
 }
 
-static bool TestDecodeUpdateStreaming() {
-  for (unsigned test_num = 0; test_num < kNumTests; test_num++) {
-    const TestVector *t = &kTestVectors[test_num];
-    if (t->relation == invalid) {
-      continue;
-    }
+TEST_P(Base64Test, DecodeUpdateStreaming) {
+  const TestVector &t = GetParam();
+  if (t.relation == invalid) {
+    return;
+  }
 
-    const size_t encoded_len = strlen(t->encoded);
+  const size_t encoded_len = strlen(t.encoded);
 
-    std::vector<uint8_t> out(encoded_len);
+  std::vector<uint8_t> out(encoded_len);
 
-    for (size_t chunk_size = 1; chunk_size <= encoded_len; chunk_size++) {
-      size_t out_len = 0;
-      EVP_ENCODE_CTX ctx;
-      EVP_DecodeInit(&ctx);
+  for (size_t chunk_size = 1; chunk_size <= encoded_len; chunk_size++) {
+    SCOPED_TRACE(chunk_size);
+    size_t out_len = 0;
+    EVP_ENCODE_CTX ctx;
+    EVP_DecodeInit(&ctx);
 
-      for (size_t i = 0; i < encoded_len;) {
-        size_t todo = encoded_len - i;
-        if (todo > chunk_size) {
-          todo = chunk_size;
-        }
-
-        int bytes_written;
-        int ret = EVP_DecodeUpdate(
-            &ctx, out.data() + out_len, &bytes_written,
-            reinterpret_cast<const uint8_t *>(t->encoded + i), todo);
-        i += todo;
-
-        switch (ret) {
-          case -1:
-            fprintf(stderr, "#%u: EVP_DecodeUpdate returned error\n", test_num);
-            return 0;
-          case 0:
-            out_len += bytes_written;
-            if (i == encoded_len ||
-                (i + 1 == encoded_len && t->encoded[i] == '\n') ||
-                /* If there was an '-' in the input (which means “EOF”) then
-                 * this loop will continue to test that |EVP_DecodeUpdate| will
-                 * ignore the remainder of the input. */
-                strchr(t->encoded, '-') != nullptr) {
-              break;
-            }
-
-            fprintf(stderr,
-                    "#%u: EVP_DecodeUpdate returned zero before end of "
-                    "encoded data\n",
-                    test_num);
-            return 0;
-          default:
-            out_len += bytes_written;
-        }
+    for (size_t i = 0; i < encoded_len;) {
+      size_t todo = encoded_len - i;
+      if (todo > chunk_size) {
+        todo = chunk_size;
       }
 
       int bytes_written;
-      int ret = EVP_DecodeFinal(&ctx, out.data() + out_len, &bytes_written);
-      if (ret == -1) {
-        fprintf(stderr, "#%u: EVP_DecodeFinal returned error\n", test_num);
-        return 0;
-      }
-      out_len += bytes_written;
+      int ret = EVP_DecodeUpdate(
+          &ctx, out.data() + out_len, &bytes_written,
+          reinterpret_cast<const uint8_t *>(t.encoded + i), todo);
+      i += todo;
 
-      if (out_len != strlen(t->decoded) ||
-          OPENSSL_memcmp(out.data(), t->decoded, out_len) != 0) {
-        fprintf(stderr, "#%u: incorrect output\n", test_num);
-        return 0;
+      switch (ret) {
+        case -1:
+          FAIL() << "EVP_DecodeUpdate failed";
+        case 0:
+          out_len += bytes_written;
+          if (i == encoded_len ||
+              (i + 1 == encoded_len && t.encoded[i] == '\n') ||
+              /* If there was an '-' in the input (which means “EOF”) then
+               * this loop will continue to test that |EVP_DecodeUpdate| will
+               * ignore the remainder of the input. */
+              strchr(t.encoded, '-') != nullptr) {
+            break;
+          }
+
+          FAIL()
+              << "EVP_DecodeUpdate returned zero before end of encoded data.";
+        case 1:
+          out_len += bytes_written;
+          break;
+        default:
+          FAIL() << "Invalid return value " << ret;
       }
     }
+
+    int bytes_written;
+    int ret = EVP_DecodeFinal(&ctx, out.data() + out_len, &bytes_written);
+    ASSERT_NE(ret, -1);
+    out_len += bytes_written;
+
+    EXPECT_EQ(Bytes(t.decoded), Bytes(out.data(), out_len));
   }
-
-  return true;
-}
-
-int main(void) {
-  CRYPTO_library_init();
-
-  if (!TestEncodeBlock() ||
-      !TestDecodeBase64() ||
-      !TestDecodeBlock() ||
-      !TestDecodeUpdateStreaming() ||
-      !TestEncodeDecode()) {
-    return 1;
-  }
-
-  printf("PASS\n");
-  return 0;
 }
diff --git a/src/crypto/bn/bn_test.cc b/src/crypto/bn/bn_test.cc
index c0af58d..9597956 100644
--- a/src/crypto/bn/bn_test.cc
+++ b/src/crypto/bn/bn_test.cc
@@ -1105,6 +1105,49 @@
   return true;
 }
 
+static bool TestRandRange() {
+  bssl::UniquePtr<BIGNUM> bn(BN_new()), six(BN_new());
+  if (!bn || !six ||
+      !BN_set_word(six.get(), 6)) {
+    return false;
+  }
+
+  // Generate 1,000 random numbers and ensure they all stay in range. This check
+  // may flakily pass when it should have failed but will not flakily fail.
+  bool seen[6] = {false, false, false, false, false};
+  for (unsigned i = 0; i < 1000; i++) {
+    if (!BN_rand_range_ex(bn.get(), 1, six.get())) {
+      return false;
+    }
+
+    BN_ULONG word = BN_get_word(bn.get());
+    if (BN_is_negative(bn.get()) ||
+        word < 1 ||
+        word >= 6) {
+      fprintf(stderr,
+              "BN_rand_range_ex generated invalid value: " BN_DEC_FMT1 "\n",
+              word);
+      return false;
+    }
+
+    seen[word] = true;
+  }
+
+  // Test that all numbers were accounted for. Note this test is probabilistic
+  // and may flakily fail when it should have passed. As an upper-bound on the
+  // failure probability, we'll never see any one number with probability
+  // (4/5)^1000, so the probability of failure is at most 5*(4/5)^1000. This is
+  // around 1 in 2^320.
+  for (unsigned i = 1; i < 6; i++) {
+    if (!seen[i]) {
+      fprintf(stderr, "BN_rand_range failed to generate %u.\n", i);
+      return false;
+    }
+  }
+
+  return true;
+}
+
 struct ASN1Test {
   const char *value_ascii;
   const char *der;
@@ -1775,6 +1818,7 @@
       !TestLittleEndian() ||
       !TestMPI() ||
       !TestRand() ||
+      !TestRandRange() ||
       !TestASN1() ||
       !TestNegativeZero(ctx.get()) ||
       !TestBadModulus(ctx.get()) ||
@@ -1784,6 +1828,7 @@
       !TestBN2Dec() ||
       !TestBNSetGetU64() ||
       !TestBNPow2(ctx.get())) {
+    ERR_print_errors_fp(stderr);
     return 1;
   }
 
diff --git a/src/crypto/bn/prime.c b/src/crypto/bn/prime.c
index 0f668d7..1dff9e7 100644
--- a/src/crypto/bn/prime.c
+++ b/src/crypto/bn/prime.c
@@ -113,24 +113,6 @@
 
 #include "internal.h"
 
-/* number of Miller-Rabin iterations for an error rate  of less than 2^-80
- * for random 'b'-bit input, b >= 100 (taken from table 4.4 in the Handbook
- * of Applied Cryptography [Menezes, van Oorschot, Vanstone; CRC Press 1996];
- * original paper: Damgaard, Landrock, Pomerance: Average case error estimates
- * for the strong probable prime test. -- Math. Comp. 61 (1993) 177-194) */
-#define BN_prime_checks_for_size(b) ((b) >= 1300 ?  2 : \
-                                (b) >=  850 ?  3 : \
-                                (b) >=  650 ?  4 : \
-                                (b) >=  550 ?  5 : \
-                                (b) >=  450 ?  6 : \
-                                (b) >=  400 ?  7 : \
-                                (b) >=  350 ?  8 : \
-                                (b) >=  300 ?  9 : \
-                                (b) >=  250 ? 12 : \
-                                (b) >=  200 ? 15 : \
-                                (b) >=  150 ? 18 : \
-                                /* b >= 100 */ 27)
-
 /* The quick sieve algorithm approach to weeding out primes is Philip
  * Zimmermann's, as implemented in PGP.  I have had a read of his comments and
  * implemented my own version. */
@@ -329,6 +311,37 @@
     17851, 17863,
 };
 
+/* BN_prime_checks_for_size returns the number of Miller-Rabin iterations
+ * necessary for a 'bits'-bit prime, in order to maintain an error rate greater
+ * than the security level for an RSA prime of that many bits (calculated using
+ * the FIPS SP 800-57 security level and 186-4 Section F.1; original paper:
+ * Damgaard, Landrock, Pomerance: Average case error estimates for the strong
+ * probable prime test. -- Math. Comp. 61 (1993) 177-194) */
+static int BN_prime_checks_for_size(int bits) {
+  if (bits >= 3747) {
+    return 3;
+  }
+  if (bits >= 1345) {
+    return 4;
+  }
+  if (bits >= 476) {
+    return 5;
+  }
+  if (bits >= 400) {
+    return 6;
+  }
+  if (bits >= 308) {
+    return 8;
+  }
+  if (bits >= 205) {
+    return 13;
+  }
+  if (bits >= 155) {
+    return 19;
+  }
+  return 28;
+}
+
 static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1,
                    const BIGNUM *a1_odd, int k, BN_CTX *ctx, BN_MONT_CTX *mont);
 static int probable_prime(BIGNUM *rnd, int bits);
@@ -636,13 +649,6 @@
   return 1;
 }
 
-static BN_ULONG get_word(const BIGNUM *bn) {
-  if (bn->top == 1) {
-    return bn->d[0];
-  }
-  return 0;
-}
-
 static int probable_prime(BIGNUM *rnd, int bits) {
   int i;
   uint16_t mods[NUMPRIMES];
@@ -669,9 +675,9 @@
     BN_ULONG size_limit;
     if (bits == BN_BITS2) {
       /* Avoid undefined behavior. */
-      size_limit = ~((BN_ULONG)0) - get_word(rnd);
+      size_limit = ~((BN_ULONG)0) - BN_get_word(rnd);
     } else {
-      size_limit = (((BN_ULONG)1) << bits) - get_word(rnd) - 1;
+      size_limit = (((BN_ULONG)1) << bits) - BN_get_word(rnd) - 1;
     }
     if (size_limit < maxdelta) {
       maxdelta = size_limit;
@@ -681,7 +687,7 @@
 
 loop:
   if (is_single_word) {
-    BN_ULONG rnd_word = get_word(rnd);
+    BN_ULONG rnd_word = BN_get_word(rnd);
 
     /* In the case that the candidate prime is a single word then
      * we check that:
diff --git a/src/crypto/bn/random.c b/src/crypto/bn/random.c
index 6f922c0..55eca80 100644
--- a/src/crypto/bn/random.c
+++ b/src/crypto/bn/random.c
@@ -114,11 +114,17 @@
 #include <openssl/mem.h>
 #include <openssl/rand.h>
 #include <openssl/sha.h>
+#include <openssl/type_check.h>
 
 #include "../internal.h"
+#include "../rand/internal.h"
 
 
-int BN_rand(BIGNUM *rnd, int bits, int top, int bottom) {
+static const uint8_t kZeroAdditionalData[32] = {0};
+
+static int bn_rand_with_additional_data(BIGNUM *rnd, int bits, int top,
+                                        int bottom,
+                                        const uint8_t additional_data[32]) {
   uint8_t *buf = NULL;
   int ret = 0, bit, bytes, mask;
 
@@ -153,9 +159,7 @@
   }
 
   /* Make a random number and set the top and bottom bits. */
-  if (!RAND_bytes(buf, bytes)) {
-    goto err;
-  }
+  RAND_bytes_with_additional_data(buf, bytes, additional_data);
 
   if (top != BN_RAND_TOP_ANY) {
     if (top == BN_RAND_TOP_TWO && bits > 1) {
@@ -191,68 +195,56 @@
   return (ret);
 }
 
+int BN_rand(BIGNUM *rnd, int bits, int top, int bottom) {
+  return bn_rand_with_additional_data(rnd, bits, top, bottom,
+                                      kZeroAdditionalData);
+}
+
 int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom) {
   return BN_rand(rnd, bits, top, bottom);
 }
 
-int BN_rand_range_ex(BIGNUM *r, BN_ULONG min_inclusive,
-                     const BIGNUM *max_exclusive) {
-  unsigned n;
-  unsigned count = 100;
-
+static int bn_rand_range_with_additional_data(
+    BIGNUM *r, BN_ULONG min_inclusive, const BIGNUM *max_exclusive,
+    const uint8_t additional_data[32]) {
   if (BN_cmp_word(max_exclusive, min_inclusive) <= 0) {
     OPENSSL_PUT_ERROR(BN, BN_R_INVALID_RANGE);
     return 0;
   }
 
-  n = BN_num_bits(max_exclusive); /* n > 0 */
-
-  /* BN_is_bit_set(range, n - 1) always holds */
-  if (n == 1) {
-    BN_zero(r);
-    return 1;
-  }
-
+  /* This function is used to implement steps 4 through 7 of FIPS 186-4
+   * appendices B.4.2 and B.5.2. When called in those contexts, |max_exclusive|
+   * is n and |min_inclusive| is one. */
+  unsigned count = 100;
+  unsigned n = BN_num_bits(max_exclusive); /* n > 0 */
   do {
     if (!--count) {
       OPENSSL_PUT_ERROR(BN, BN_R_TOO_MANY_ITERATIONS);
       return 0;
     }
 
-    if (!BN_is_bit_set(max_exclusive, n - 2) &&
-        !BN_is_bit_set(max_exclusive, n - 3)) {
-      /* range = 100..._2, so 3*range (= 11..._2) is exactly one bit longer
-       * than range. This is a common scenario when generating a random value
-       * modulo an RSA public modulus, e.g. for RSA base blinding. */
-      if (!BN_rand(r, n + 1, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY)) {
-        return 0;
-      }
-
-      /* If r < 3*range, use r := r MOD range (which is either r, r - range, or
-       * r - 2*range). Otherwise, iterate again. Since 3*range = 11..._2, each
-       * iteration succeeds with probability >= .75. */
-      if (BN_cmp(r, max_exclusive) >= 0) {
-        if (!BN_sub(r, r, max_exclusive)) {
-          return 0;
-        }
-        if (BN_cmp(r, max_exclusive) >= 0) {
-          if (!BN_sub(r, r, max_exclusive)) {
-            return 0;
-          }
-        }
-      }
-    } else {
-      /* range = 11..._2  or  range = 101..._2 */
-      if (!BN_rand(r, n, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY)) {
-        return 0;
-      }
+    if (/* steps 4 and 5 */
+        !bn_rand_with_additional_data(r, n, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY,
+                                      additional_data) ||
+        /* step 7 */
+        !BN_add_word(r, min_inclusive)) {
+      return 0;
     }
-  } while (BN_cmp_word(r, min_inclusive) < 0 ||
-           BN_cmp(r, max_exclusive) >= 0);
+
+    /* Step 6. This loops if |r| >= |max_exclusive|. This is identical to
+     * checking |r| > |max_exclusive| - 1 or |r| - 1 > |max_exclusive| - 2, the
+     * formulation stated in FIPS 186-4. */
+  } while (BN_cmp(r, max_exclusive) >= 0);
 
   return 1;
 }
 
+int BN_rand_range_ex(BIGNUM *r, BN_ULONG min_inclusive,
+                     const BIGNUM *max_exclusive) {
+  return bn_rand_range_with_additional_data(r, min_inclusive, max_exclusive,
+                                            kZeroAdditionalData);
+}
+
 int BN_rand_range(BIGNUM *r, const BIGNUM *range) {
   return BN_rand_range_ex(r, 0, range);
 }
@@ -264,80 +256,31 @@
 int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range, const BIGNUM *priv,
                           const uint8_t *message, size_t message_len,
                           BN_CTX *ctx) {
-  SHA512_CTX sha;
-  /* We use 512 bits of random data per iteration to
-   * ensure that we have at least |range| bits of randomness. */
-  uint8_t random_bytes[64];
-  uint8_t digest[SHA512_DIGEST_LENGTH];
-  size_t done, todo, attempt;
-  const unsigned num_k_bytes = BN_num_bytes(range);
-  const unsigned bits_to_mask = (8 - (BN_num_bits(range) % 8)) % 8;
-  uint8_t private_bytes[96];
-  uint8_t *k_bytes = NULL;
-  int ret = 0;
-
-  if (out == NULL) {
-    return 0;
-  }
-
-  if (BN_is_zero(range)) {
-    OPENSSL_PUT_ERROR(BN, BN_R_DIV_BY_ZERO);
-    goto err;
-  }
-
-  k_bytes = OPENSSL_malloc(num_k_bytes);
-  if (!k_bytes) {
-    OPENSSL_PUT_ERROR(BN, ERR_R_MALLOC_FAILURE);
-    goto err;
-  }
-
   /* We copy |priv| into a local buffer to avoid furthur exposing its
    * length. */
-  todo = sizeof(priv->d[0]) * priv->top;
+  uint8_t private_bytes[96];
+  size_t todo = sizeof(priv->d[0]) * priv->top;
   if (todo > sizeof(private_bytes)) {
     /* No reasonable DSA or ECDSA key should have a private key
      * this large and we don't handle this case in order to avoid
      * leaking the length of the private key. */
     OPENSSL_PUT_ERROR(BN, BN_R_PRIVATE_KEY_TOO_LARGE);
-    goto err;
+    return 0;
   }
   OPENSSL_memcpy(private_bytes, priv->d, todo);
   OPENSSL_memset(private_bytes + todo, 0, sizeof(private_bytes) - todo);
 
-  for (attempt = 0;; attempt++) {
-    for (done = 0; done < num_k_bytes;) {
-      if (!RAND_bytes(random_bytes, sizeof(random_bytes))) {
-        goto err;
-      }
-      SHA512_Init(&sha);
-      SHA512_Update(&sha, &attempt, sizeof(attempt));
-      SHA512_Update(&sha, &done, sizeof(done));
-      SHA512_Update(&sha, private_bytes, sizeof(private_bytes));
-      SHA512_Update(&sha, message, message_len);
-      SHA512_Update(&sha, random_bytes, sizeof(random_bytes));
-      SHA512_Final(digest, &sha);
+  /* Pass a SHA256 hash of the private key and message as additional data into
+   * the RBG. This is a hardening measure against entropy failure. */
+  OPENSSL_COMPILE_ASSERT(SHA256_DIGEST_LENGTH == 32,
+                         additional_data_is_different_size_from_sha256);
+  SHA256_CTX sha;
+  uint8_t digest[SHA256_DIGEST_LENGTH];
+  SHA256_Init(&sha);
+  SHA256_Update(&sha, private_bytes, sizeof(private_bytes));
+  SHA256_Update(&sha, message, message_len);
+  SHA256_Final(digest, &sha);
 
-      todo = num_k_bytes - done;
-      if (todo > SHA512_DIGEST_LENGTH) {
-        todo = SHA512_DIGEST_LENGTH;
-      }
-      OPENSSL_memcpy(k_bytes + done, digest, todo);
-      done += todo;
-    }
-
-    k_bytes[0] &= 0xff >> bits_to_mask;
-
-    if (!BN_bin2bn(k_bytes, num_k_bytes, out)) {
-      goto err;
-    }
-    if (BN_cmp(out, range) < 0) {
-      break;
-    }
-  }
-
-  ret = 1;
-
-err:
-  OPENSSL_free(k_bytes);
-  return ret;
+  /* Select a value k from [1, range-1], following FIPS 186-4 appendix B.5.2. */
+  return bn_rand_range_with_additional_data(out, 1, range, digest);
 }
diff --git a/src/crypto/bytestring/CMakeLists.txt b/src/crypto/bytestring/CMakeLists.txt
index 362e702..37ff51c 100644
--- a/src/crypto/bytestring/CMakeLists.txt
+++ b/src/crypto/bytestring/CMakeLists.txt
@@ -10,14 +10,3 @@
   cbs.c
   cbb.c
 )
-
-add_executable(
-  bytestring_test
-
-  bytestring_test.cc
-
-  $<TARGET_OBJECTS:test_support>
-)
-
-target_link_libraries(bytestring_test crypto)
-add_dependencies(all_tests bytestring_test)
diff --git a/src/crypto/bytestring/bytestring_test.cc b/src/crypto/bytestring/bytestring_test.cc
index 6ec6fcf..e8e14d9 100644
--- a/src/crypto/bytestring/bytestring_test.cc
+++ b/src/crypto/bytestring/bytestring_test.cc
@@ -22,49 +22,54 @@
 
 #include <vector>
 
+#include <gtest/gtest.h>
+
 #include <openssl/bytestring.h>
 #include <openssl/crypto.h>
 
 #include "internal.h"
 #include "../internal.h"
+#include "../test/test_util.h"
 
 
-static bool TestSkip() {
+TEST(CBSTest, Skip) {
   static const uint8_t kData[] = {1, 2, 3};
   CBS data;
 
   CBS_init(&data, kData, sizeof(kData));
-  return CBS_len(&data) == 3 &&
-      CBS_skip(&data, 1) &&
-      CBS_len(&data) == 2 &&
-      CBS_skip(&data, 2) &&
-      CBS_len(&data) == 0 &&
-      !CBS_skip(&data, 1);
+  EXPECT_EQ(3u, CBS_len(&data));
+  EXPECT_TRUE(CBS_skip(&data, 1));
+  EXPECT_EQ(2u, CBS_len(&data));
+  EXPECT_TRUE(CBS_skip(&data, 2));
+  EXPECT_EQ(0u, CBS_len(&data));
+  EXPECT_FALSE(CBS_skip(&data, 1));
 }
 
-static bool TestGetUint() {
-  static const uint8_t kData[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
+TEST(CBSTest, GetUint) {
+  static const uint8_t kData[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
   uint8_t u8;
   uint16_t u16;
   uint32_t u32;
   CBS data;
 
   CBS_init(&data, kData, sizeof(kData));
-  return CBS_get_u8(&data, &u8) &&
-    u8 == 1 &&
-    CBS_get_u16(&data, &u16) &&
-    u16 == 0x203 &&
-    CBS_get_u24(&data, &u32) &&
-    u32 == 0x40506 &&
-    CBS_get_u32(&data, &u32) &&
-    u32 == 0x708090a &&
-    CBS_get_last_u8(&data, &u8) &&
-    u8 == 0xb &&
-    !CBS_get_u8(&data, &u8) &&
-    !CBS_get_last_u8(&data, &u8);
+  ASSERT_TRUE(CBS_get_u8(&data, &u8));
+  EXPECT_EQ(1u, u8);
+  ASSERT_TRUE(CBS_get_u16(&data, &u16));
+  EXPECT_EQ(0x203u, u16);
+  ASSERT_TRUE(CBS_get_u24(&data, &u32));
+  EXPECT_EQ(0x40506u, u32);
+  ASSERT_TRUE(CBS_get_u32(&data, &u32));
+  EXPECT_EQ(0x708090au, u32);
+  ASSERT_TRUE(CBS_get_last_u8(&data, &u8));
+  EXPECT_EQ(0xcu, u8);
+  ASSERT_TRUE(CBS_get_last_u8(&data, &u8));
+  EXPECT_EQ(0xbu, u8);
+  EXPECT_FALSE(CBS_get_u8(&data, &u8));
+  EXPECT_FALSE(CBS_get_last_u8(&data, &u8));
 }
 
-static bool TestGetPrefixed() {
+TEST(CBSTest, GetPrefixed) {
   static const uint8_t kData[] = {1, 2, 0, 2, 3, 4, 0, 0, 3, 3, 2, 1};
   uint8_t u8;
   uint16_t u16;
@@ -72,45 +77,37 @@
   CBS data, prefixed;
 
   CBS_init(&data, kData, sizeof(kData));
-  return CBS_get_u8_length_prefixed(&data, &prefixed) &&
-    CBS_len(&prefixed) == 1 &&
-    CBS_get_u8(&prefixed, &u8) &&
-    u8 == 2 &&
-    CBS_get_u16_length_prefixed(&data, &prefixed) &&
-    CBS_len(&prefixed) == 2 &&
-    CBS_get_u16(&prefixed, &u16) &&
-    u16 == 0x304 &&
-    CBS_get_u24_length_prefixed(&data, &prefixed) &&
-    CBS_len(&prefixed) == 3 &&
-    CBS_get_u24(&prefixed, &u32) &&
-    u32 == 0x30201;
+  ASSERT_TRUE(CBS_get_u8_length_prefixed(&data, &prefixed));
+  EXPECT_EQ(1u, CBS_len(&prefixed));
+  ASSERT_TRUE(CBS_get_u8(&prefixed, &u8));
+  EXPECT_EQ(2u, u8);
+  ASSERT_TRUE(CBS_get_u16_length_prefixed(&data, &prefixed));
+  EXPECT_EQ(2u, CBS_len(&prefixed));
+  ASSERT_TRUE(CBS_get_u16(&prefixed, &u16));
+  EXPECT_EQ(0x304u, u16);
+  ASSERT_TRUE(CBS_get_u24_length_prefixed(&data, &prefixed));
+  EXPECT_EQ(3u, CBS_len(&prefixed));
+  ASSERT_TRUE(CBS_get_u24(&prefixed, &u32));
+  EXPECT_EQ(0x30201u, u32);
 }
 
-static bool TestGetPrefixedBad() {
+TEST(CBSTest, GetPrefixedBad) {
   static const uint8_t kData1[] = {2, 1};
   static const uint8_t kData2[] = {0, 2, 1};
   static const uint8_t kData3[] = {0, 0, 2, 1};
   CBS data, prefixed;
 
   CBS_init(&data, kData1, sizeof(kData1));
-  if (CBS_get_u8_length_prefixed(&data, &prefixed)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_get_u8_length_prefixed(&data, &prefixed));
 
   CBS_init(&data, kData2, sizeof(kData2));
-  if (CBS_get_u16_length_prefixed(&data, &prefixed)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_get_u16_length_prefixed(&data, &prefixed));
 
   CBS_init(&data, kData3, sizeof(kData3));
-  if (CBS_get_u24_length_prefixed(&data, &prefixed)) {
-    return false;
-  }
-
-  return true;
+  EXPECT_FALSE(CBS_get_u24_length_prefixed(&data, &prefixed));
 }
 
-static bool TestGetASN1() {
+TEST(CBSTest, GetASN1) {
   static const uint8_t kData1[] = {0x30, 2, 1, 2};
   static const uint8_t kData2[] = {0x30, 3, 1, 2};
   static const uint8_t kData3[] = {0x30, 0x80};
@@ -126,133 +123,101 @@
   uint64_t value;
 
   CBS_init(&data, kData1, sizeof(kData1));
-  if (CBS_peek_asn1_tag(&data, 0x1) ||
-      !CBS_peek_asn1_tag(&data, 0x30)) {
-    return false;
-  }
-  if (!CBS_get_asn1(&data, &contents, 0x30) ||
-      CBS_len(&contents) != 2 ||
-      OPENSSL_memcmp(CBS_data(&contents), "\x01\x02", 2) != 0) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_peek_asn1_tag(&data, 0x1));
+  EXPECT_TRUE(CBS_peek_asn1_tag(&data, 0x30));
+
+  ASSERT_TRUE(CBS_get_asn1(&data, &contents, 0x30));
+  EXPECT_EQ(Bytes("\x01\x02"), Bytes(CBS_data(&contents), CBS_len(&contents)));
 
   CBS_init(&data, kData2, sizeof(kData2));
   // data is truncated
-  if (CBS_get_asn1(&data, &contents, 0x30)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_get_asn1(&data, &contents, 0x30));
 
   CBS_init(&data, kData3, sizeof(kData3));
   // zero byte length of length
-  if (CBS_get_asn1(&data, &contents, 0x30)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_get_asn1(&data, &contents, 0x30));
 
   CBS_init(&data, kData4, sizeof(kData4));
   // long form mistakenly used.
-  if (CBS_get_asn1(&data, &contents, 0x30)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_get_asn1(&data, &contents, 0x30));
 
   CBS_init(&data, kData5, sizeof(kData5));
   // length takes too many bytes.
-  if (CBS_get_asn1(&data, &contents, 0x30)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_get_asn1(&data, &contents, 0x30));
 
   CBS_init(&data, kData1, sizeof(kData1));
   // wrong tag.
-  if (CBS_get_asn1(&data, &contents, 0x31)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_get_asn1(&data, &contents, 0x31));
 
   CBS_init(&data, NULL, 0);
   // peek at empty data.
-  if (CBS_peek_asn1_tag(&data, 0x30)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_peek_asn1_tag(&data, 0x30));
 
   CBS_init(&data, NULL, 0);
   // optional elements at empty data.
-  if (!CBS_get_optional_asn1(&data, &contents, &present, 0xa0) ||
-      present ||
-      !CBS_get_optional_asn1_octet_string(&data, &contents, &present, 0xa0) ||
-      present ||
-      CBS_len(&contents) != 0 ||
-      !CBS_get_optional_asn1_octet_string(&data, &contents, NULL, 0xa0) ||
-      CBS_len(&contents) != 0 ||
-      !CBS_get_optional_asn1_uint64(&data, &value, 0xa0, 42) ||
-      value != 42) {
-    return false;
-  }
+  ASSERT_TRUE(CBS_get_optional_asn1(&data, &contents, &present, 0xa0));
+  EXPECT_FALSE(present);
+  ASSERT_TRUE(
+      CBS_get_optional_asn1_octet_string(&data, &contents, &present, 0xa0));
+  EXPECT_FALSE(present);
+  EXPECT_EQ(0u, CBS_len(&contents));
+  ASSERT_TRUE(CBS_get_optional_asn1_octet_string(&data, &contents, NULL, 0xa0));
+  EXPECT_EQ(0u, CBS_len(&contents));
+  ASSERT_TRUE(CBS_get_optional_asn1_uint64(&data, &value, 0xa0, 42));
+  EXPECT_EQ(42u, value);
 
   CBS_init(&data, kData6, sizeof(kData6));
   // optional element.
-  if (!CBS_get_optional_asn1(&data, &contents, &present, 0xa0) ||
-      present ||
-      !CBS_get_optional_asn1(&data, &contents, &present, 0xa1) ||
-      !present ||
-      CBS_len(&contents) != 3 ||
-      OPENSSL_memcmp(CBS_data(&contents), "\x04\x01\x01", 3) != 0) {
-    return false;
-  }
+  ASSERT_TRUE(CBS_get_optional_asn1(&data, &contents, &present, 0xa0));
+  EXPECT_FALSE(present);
+  ASSERT_TRUE(CBS_get_optional_asn1(&data, &contents, &present, 0xa1));
+  EXPECT_TRUE(present);
+  EXPECT_EQ(Bytes("\x04\x01\x01"),
+            Bytes(CBS_data(&contents), CBS_len(&contents)));
 
   CBS_init(&data, kData6, sizeof(kData6));
   // optional octet string.
-  if (!CBS_get_optional_asn1_octet_string(&data, &contents, &present, 0xa0) ||
-      present ||
-      CBS_len(&contents) != 0 ||
-      !CBS_get_optional_asn1_octet_string(&data, &contents, &present, 0xa1) ||
-      !present ||
-      CBS_len(&contents) != 1 ||
-      CBS_data(&contents)[0] != 1) {
-    return false;
-  }
+  ASSERT_TRUE(
+      CBS_get_optional_asn1_octet_string(&data, &contents, &present, 0xa0));
+  EXPECT_FALSE(present);
+  EXPECT_EQ(0u, CBS_len(&contents));
+  ASSERT_TRUE(
+      CBS_get_optional_asn1_octet_string(&data, &contents, &present, 0xa1));
+  EXPECT_TRUE(present);
+  EXPECT_EQ(Bytes("\x01"), Bytes(CBS_data(&contents), CBS_len(&contents)));
 
   CBS_init(&data, kData7, sizeof(kData7));
   // invalid optional octet string.
-  if (CBS_get_optional_asn1_octet_string(&data, &contents, &present, 0xa1)) {
-    return false;
-  }
+  EXPECT_FALSE(
+      CBS_get_optional_asn1_octet_string(&data, &contents, &present, 0xa1));
 
   CBS_init(&data, kData8, sizeof(kData8));
-  // optional octet string.
-  if (!CBS_get_optional_asn1_uint64(&data, &value, 0xa0, 42) ||
-      value != 42 ||
-      !CBS_get_optional_asn1_uint64(&data, &value, 0xa1, 42) ||
-      value != 1) {
-    return false;
-  }
+  // optional integer.
+  ASSERT_TRUE(CBS_get_optional_asn1_uint64(&data, &value, 0xa0, 42));
+  EXPECT_EQ(42u, value);
+  ASSERT_TRUE(CBS_get_optional_asn1_uint64(&data, &value, 0xa1, 42));
+  EXPECT_EQ(1u, value);
 
   CBS_init(&data, kData9, sizeof(kData9));
   // invalid optional integer.
-  if (CBS_get_optional_asn1_uint64(&data, &value, 0xa1, 42)) {
-    return false;
-  }
+  EXPECT_FALSE(CBS_get_optional_asn1_uint64(&data, &value, 0xa1, 42));
 
   unsigned tag;
   CBS_init(&data, kData1, sizeof(kData1));
-  if (!CBS_get_any_asn1(&data, &contents, &tag) ||
-      tag != CBS_ASN1_SEQUENCE ||
-      CBS_len(&contents) != 2 ||
-      OPENSSL_memcmp(CBS_data(&contents), "\x01\x02", 2) != 0) {
-    return false;
-  }
+  ASSERT_TRUE(CBS_get_any_asn1(&data, &contents, &tag));
+  EXPECT_EQ(CBS_ASN1_SEQUENCE, tag);
+  EXPECT_EQ(Bytes("\x01\x02"), Bytes(CBS_data(&contents), CBS_len(&contents)));
 
   size_t header_len;
   CBS_init(&data, kData1, sizeof(kData1));
-  if (!CBS_get_any_asn1_element(&data, &contents, &tag, &header_len) ||
-      tag != CBS_ASN1_SEQUENCE ||
-      header_len != 2 ||
-      CBS_len(&contents) != 4 ||
-      OPENSSL_memcmp(CBS_data(&contents), "\x30\x02\x01\x02", 2) != 0) {
-    return false;
-  }
-
-  return true;
+  ASSERT_TRUE(CBS_get_any_asn1_element(&data, &contents, &tag, &header_len));
+  EXPECT_EQ(CBS_ASN1_SEQUENCE, tag);
+  EXPECT_EQ(2u, header_len);
+  EXPECT_EQ(Bytes("\x30\x02\x01\x02"),
+            Bytes(CBS_data(&contents), CBS_len(&contents)));
 }
 
-static bool TestGetOptionalASN1Bool() {
+TEST(CBSTest, GetOptionalASN1Bool) {
   static const uint8_t kTrue[] = {0x0a, 3, CBS_ASN1_BOOLEAN, 1, 0xff};
   static const uint8_t kFalse[] = {0x0a, 3, CBS_ASN1_BOOLEAN, 1, 0x00};
   static const uint8_t kInvalid[] = {0x0a, 3, CBS_ASN1_BOOLEAN, 1, 0x01};
@@ -260,183 +225,156 @@
   CBS data;
   CBS_init(&data, NULL, 0);
   int val = 2;
-  if (!CBS_get_optional_asn1_bool(&data, &val, 0x0a, 0) ||
-      val != 0) {
-    return false;
-  }
+  ASSERT_TRUE(CBS_get_optional_asn1_bool(&data, &val, 0x0a, 0));
+  EXPECT_EQ(0, val);
 
   CBS_init(&data, kTrue, sizeof(kTrue));
   val = 2;
-  if (!CBS_get_optional_asn1_bool(&data, &val, 0x0a, 0) ||
-      val != 1) {
-    return false;
-  }
+  ASSERT_TRUE(CBS_get_optional_asn1_bool(&data, &val, 0x0a, 0));
+  EXPECT_EQ(1, val);
 
   CBS_init(&data, kFalse, sizeof(kFalse));
   val = 2;
-  if (!CBS_get_optional_asn1_bool(&data, &val, 0x0a, 1) ||
-      val != 0) {
-    return false;
-  }
+  ASSERT_TRUE(CBS_get_optional_asn1_bool(&data, &val, 0x0a, 1));
+  EXPECT_EQ(0, val);
 
   CBS_init(&data, kInvalid, sizeof(kInvalid));
-  if (CBS_get_optional_asn1_bool(&data, &val, 0x0a, 1)) {
-    return false;
-  }
-
-  return true;
+  EXPECT_FALSE(CBS_get_optional_asn1_bool(&data, &val, 0x0a, 1));
 }
 
-static bool TestCBBBasic() {
+// Test that CBB_init may be used on an uninitialized input.
+TEST(CBBTest, InitUninitialized) {
+  CBB cbb;
+  ASSERT_TRUE(CBB_init(&cbb, 100));
+  CBB_cleanup(&cbb);
+}
+
+TEST(CBBTest, Basic) {
   static const uint8_t kExpected[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc};
   uint8_t *buf;
   size_t buf_len;
-  CBB cbb;
 
-  if (!CBB_init(&cbb, 100)) {
-    return false;
-  }
-  CBB_cleanup(&cbb);
+  bssl::ScopedCBB cbb;
+  ASSERT_TRUE(CBB_init(cbb.get(), 100));
+  cbb.Reset();
 
-  if (!CBB_init(&cbb, 0)) {
-    return false;
-  }
-  if (!CBB_add_u8(&cbb, 1) ||
-      !CBB_add_u16(&cbb, 0x203) ||
-      !CBB_add_u24(&cbb, 0x40506) ||
-      !CBB_add_u32(&cbb, 0x708090a) ||
-      !CBB_add_bytes(&cbb, (const uint8_t*) "\x0b\x0c", 2) ||
-      !CBB_finish(&cbb, &buf, &buf_len)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(CBB_add_u8(cbb.get(), 1));
+  ASSERT_TRUE(CBB_add_u16(cbb.get(), 0x203));
+  ASSERT_TRUE(CBB_add_u24(cbb.get(), 0x40506));
+  ASSERT_TRUE(CBB_add_u32(cbb.get(), 0x708090a));
+  ASSERT_TRUE(CBB_add_bytes(cbb.get(), (const uint8_t *)"\x0b\x0c", 2));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &buf, &buf_len));
 
   bssl::UniquePtr<uint8_t> scoper(buf);
-  return buf_len == sizeof(kExpected) &&
-         OPENSSL_memcmp(buf, kExpected, buf_len) == 0;
+  EXPECT_EQ(Bytes(kExpected), Bytes(buf, buf_len));
 }
 
-static bool TestCBBFixed() {
+TEST(CBBTest, Fixed) {
   bssl::ScopedCBB cbb;
   uint8_t buf[1];
   uint8_t *out_buf;
   size_t out_size;
 
-  if (!CBB_init_fixed(cbb.get(), NULL, 0) ||
-      !CBB_finish(cbb.get(), &out_buf, &out_size) ||
-      out_buf != NULL ||
-      out_size != 0) {
-    return false;
-  }
+  ASSERT_TRUE(CBB_init_fixed(cbb.get(), NULL, 0));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &out_buf, &out_size));
+  EXPECT_EQ(NULL, out_buf);
+  EXPECT_EQ(0u, out_size);
 
   cbb.Reset();
-  if (!CBB_init_fixed(cbb.get(), buf, 1) ||
-      !CBB_add_u8(cbb.get(), 1) ||
-      !CBB_finish(cbb.get(), &out_buf, &out_size) ||
-      out_buf != buf ||
-      out_size != 1 ||
-      buf[0] != 1) {
-    return false;
-  }
+  ASSERT_TRUE(CBB_init_fixed(cbb.get(), buf, 1));
+  ASSERT_TRUE(CBB_add_u8(cbb.get(), 1));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &out_buf, &out_size));
+  EXPECT_EQ(buf, out_buf);
+  EXPECT_EQ(1u, out_size);
+  EXPECT_EQ(1u, buf[0]);
 
   cbb.Reset();
-  if (!CBB_init_fixed(cbb.get(), buf, 1) ||
-      !CBB_add_u8(cbb.get(), 1) ||
-      CBB_add_u8(cbb.get(), 2)) {
-    return false;
-  }
-
-  return true;
+  ASSERT_TRUE(CBB_init_fixed(cbb.get(), buf, 1));
+  ASSERT_TRUE(CBB_add_u8(cbb.get(), 1));
+  EXPECT_FALSE(CBB_add_u8(cbb.get(), 2));
 }
 
-static bool TestCBBFinishChild() {
-  CBB cbb, child;
+// Test that calling CBB_finish on a child does nothing.
+TEST(CBBTest, FinishChild) {
+  CBB child;
   uint8_t *out_buf;
   size_t out_size;
 
-  if (!CBB_init(&cbb, 16)) {
-    return false;
-  }
-  if (!CBB_add_u8_length_prefixed(&cbb, &child) ||
-      CBB_finish(&child, &out_buf, &out_size) ||
-      !CBB_finish(&cbb, &out_buf, &out_size)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  bssl::ScopedCBB cbb;
+  ASSERT_TRUE(CBB_init(cbb.get(), 16));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &child));
+
+  EXPECT_FALSE(CBB_finish(&child, &out_buf, &out_size));
+
+  ASSERT_TRUE(CBB_finish(cbb.get(), &out_buf, &out_size));
   bssl::UniquePtr<uint8_t> scoper(out_buf);
-  return out_size == 1 && out_buf[0] == 0;
+  ASSERT_EQ(1u, out_size);
+  EXPECT_EQ(0u, out_buf[0]);
 }
 
-static bool TestCBBPrefixed() {
+TEST(CBBTest, Prefixed) {
   static const uint8_t kExpected[] = {0, 1, 1, 0, 2, 2, 3, 0, 0, 3,
                                       4, 5, 6, 5, 4, 1, 0, 1, 2};
   uint8_t *buf;
   size_t buf_len;
-  CBB cbb, contents, inner_contents, inner_inner_contents;
-
-  if (!CBB_init(&cbb, 0) ||
-      CBB_len(&cbb) != 0 ||
-      !CBB_add_u8_length_prefixed(&cbb, &contents) ||
-      !CBB_add_u8_length_prefixed(&cbb, &contents) ||
-      !CBB_add_u8(&contents, 1) ||
-      CBB_len(&contents) != 1 ||
-      !CBB_flush(&cbb) ||
-      CBB_len(&cbb) != 3 ||
-      !CBB_add_u16_length_prefixed(&cbb, &contents) ||
-      !CBB_add_u16(&contents, 0x203) ||
-      !CBB_add_u24_length_prefixed(&cbb, &contents) ||
-      !CBB_add_u24(&contents, 0x40506) ||
-      !CBB_add_u8_length_prefixed(&cbb, &contents) ||
-      !CBB_add_u8_length_prefixed(&contents, &inner_contents) ||
-      !CBB_add_u8(&inner_contents, 1) ||
-      !CBB_add_u16_length_prefixed(&inner_contents, &inner_inner_contents) ||
-      !CBB_add_u8(&inner_inner_contents, 2) ||
-      !CBB_finish(&cbb, &buf, &buf_len)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  bssl::ScopedCBB cbb;
+  CBB contents, inner_contents, inner_inner_contents;
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  EXPECT_EQ(0u, CBB_len(cbb.get()));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u8(&contents, 1));
+  EXPECT_EQ(1u, CBB_len(&contents));
+  ASSERT_TRUE(CBB_flush(cbb.get()));
+  EXPECT_EQ(3u, CBB_len(cbb.get()));
+  ASSERT_TRUE(CBB_add_u16_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u16(&contents, 0x203));
+  ASSERT_TRUE(CBB_add_u24_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u24(&contents, 0x40506));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(&contents, &inner_contents));
+  ASSERT_TRUE(CBB_add_u8(&inner_contents, 1));
+  ASSERT_TRUE(
+      CBB_add_u16_length_prefixed(&inner_contents, &inner_inner_contents));
+  ASSERT_TRUE(CBB_add_u8(&inner_inner_contents, 2));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &buf, &buf_len));
 
   bssl::UniquePtr<uint8_t> scoper(buf);
-  return buf_len == sizeof(kExpected) &&
-         OPENSSL_memcmp(buf, kExpected, buf_len) == 0;
+  EXPECT_EQ(Bytes(kExpected), Bytes(buf, buf_len));
 }
 
-static bool TestCBBDiscardChild() {
+TEST(CBBTest, DiscardChild) {
   bssl::ScopedCBB cbb;
   CBB contents, inner_contents, inner_inner_contents;
 
-  if (!CBB_init(cbb.get(), 0) ||
-      !CBB_add_u8(cbb.get(), 0xaa)) {
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(CBB_add_u8(cbb.get(), 0xaa));
 
   // Discarding |cbb|'s children preserves the byte written.
   CBB_discard_child(cbb.get());
 
-  if (!CBB_add_u8_length_prefixed(cbb.get(), &contents) ||
-      !CBB_add_u8_length_prefixed(cbb.get(), &contents) ||
-      !CBB_add_u8(&contents, 0xbb) ||
-      !CBB_add_u16_length_prefixed(cbb.get(), &contents) ||
-      !CBB_add_u16(&contents, 0xcccc) ||
-      !CBB_add_u24_length_prefixed(cbb.get(), &contents) ||
-      !CBB_add_u24(&contents, 0xdddddd) ||
-      !CBB_add_u8_length_prefixed(cbb.get(), &contents) ||
-      !CBB_add_u8(&contents, 0xff) ||
-      !CBB_add_u8_length_prefixed(&contents, &inner_contents) ||
-      !CBB_add_u8(&inner_contents, 0x42) ||
-      !CBB_add_u16_length_prefixed(&inner_contents, &inner_inner_contents) ||
-      !CBB_add_u8(&inner_inner_contents, 0x99)) {
-    return false;
-  }
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u8(&contents, 0xbb));
+  ASSERT_TRUE(CBB_add_u16_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u16(&contents, 0xcccc));
+  ASSERT_TRUE(CBB_add_u24_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u24(&contents, 0xdddddd));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &contents));
+  ASSERT_TRUE(CBB_add_u8(&contents, 0xff));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(&contents, &inner_contents));
+  ASSERT_TRUE(CBB_add_u8(&inner_contents, 0x42));
+  ASSERT_TRUE(
+      CBB_add_u16_length_prefixed(&inner_contents, &inner_inner_contents));
+  ASSERT_TRUE(CBB_add_u8(&inner_inner_contents, 0x99));
 
   // Discard everything from |inner_contents| down.
   CBB_discard_child(&contents);
 
   uint8_t *buf;
   size_t buf_len;
-  if (!CBB_finish(cbb.get(), &buf, &buf_len)) {
-    return false;
-  }
+  ASSERT_TRUE(CBB_finish(cbb.get(), &buf, &buf_len));
   bssl::UniquePtr<uint8_t> scoper(buf);
 
   static const uint8_t kExpected[] = {
@@ -447,166 +385,105 @@
         0, 0, 3, 0xdd, 0xdd, 0xdd,
         1, 0xff,
   };
-  return buf_len == sizeof(kExpected) &&
-         OPENSSL_memcmp(buf, kExpected, buf_len) == 0;
+  EXPECT_EQ(Bytes(kExpected), Bytes(buf, buf_len));
 }
 
-static bool TestCBBMisuse() {
-  CBB cbb, child, contents;
+TEST(CBBTest, Misuse) {
+  bssl::ScopedCBB cbb;
+  CBB child, contents;
   uint8_t *buf;
   size_t buf_len;
 
-  if (!CBB_init(&cbb, 0)) {
-    return false;
-  }
-  if (!CBB_add_u8_length_prefixed(&cbb, &child) ||
-      !CBB_add_u8(&child, 1) ||
-      !CBB_add_u8(&cbb, 2)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &child));
+  ASSERT_TRUE(CBB_add_u8(&child, 1));
+  ASSERT_TRUE(CBB_add_u8(cbb.get(), 2));
 
   // Since we wrote to |cbb|, |child| is now invalid and attempts to write to
   // it should fail.
-  if (CBB_add_u8(&child, 1) ||
-      CBB_add_u16(&child, 1) ||
-      CBB_add_u24(&child, 1) ||
-      CBB_add_u8_length_prefixed(&child, &contents) ||
-      CBB_add_u16_length_prefixed(&child, &contents) ||
-      CBB_add_asn1(&child, &contents, 1) ||
-      CBB_add_bytes(&child, (const uint8_t*) "a", 1)) {
-    fprintf(stderr, "CBB operation on invalid CBB did not fail.\n");
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  EXPECT_FALSE(CBB_add_u8(&child, 1));
+  EXPECT_FALSE(CBB_add_u16(&child, 1));
+  EXPECT_FALSE(CBB_add_u24(&child, 1));
+  EXPECT_FALSE(CBB_add_u8_length_prefixed(&child, &contents));
+  EXPECT_FALSE(CBB_add_u16_length_prefixed(&child, &contents));
+  EXPECT_FALSE(CBB_add_asn1(&child, &contents, 1));
+  EXPECT_FALSE(CBB_add_bytes(&child, (const uint8_t*) "a", 1));
 
-  if (!CBB_finish(&cbb, &buf, &buf_len)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  ASSERT_TRUE(CBB_finish(cbb.get(), &buf, &buf_len));
   bssl::UniquePtr<uint8_t> scoper(buf);
 
-  if (buf_len != 3 ||
-      OPENSSL_memcmp(buf, "\x01\x01\x02", 3) != 0) {
-    return false;
-  }
-  return true;
+  EXPECT_EQ(Bytes("\x01\x01\x02"), Bytes(buf, buf_len));
 }
 
-static bool TestCBBASN1() {
+TEST(CBBTest, ASN1) {
   static const uint8_t kExpected[] = {0x30, 3, 1, 2, 3};
   uint8_t *buf;
   size_t buf_len;
-  CBB cbb, contents, inner_contents;
+  bssl::ScopedCBB cbb;
+  CBB contents, inner_contents;
 
-  if (!CBB_init(&cbb, 0)) {
-    return false;
-  }
-  if (!CBB_add_asn1(&cbb, &contents, 0x30) ||
-      !CBB_add_bytes(&contents, (const uint8_t*) "\x01\x02\x03", 3) ||
-      !CBB_finish(&cbb, &buf, &buf_len)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(CBB_add_asn1(cbb.get(), &contents, 0x30));
+  ASSERT_TRUE(CBB_add_bytes(&contents, (const uint8_t *)"\x01\x02\x03", 3));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &buf, &buf_len));
   bssl::UniquePtr<uint8_t> scoper(buf);
 
-  if (buf_len != sizeof(kExpected) ||
-      OPENSSL_memcmp(buf, kExpected, buf_len) != 0) {
-    return false;
-  }
+  EXPECT_EQ(Bytes(kExpected), Bytes(buf, buf_len));
 
   std::vector<uint8_t> test_data(100000, 0x42);
-
-  if (!CBB_init(&cbb, 0)) {
-    return false;
-  }
-  if (!CBB_add_asn1(&cbb, &contents, 0x30) ||
-      !CBB_add_bytes(&contents, test_data.data(), 130) ||
-      !CBB_finish(&cbb, &buf, &buf_len)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(CBB_add_asn1(cbb.get(), &contents, 0x30));
+  ASSERT_TRUE(CBB_add_bytes(&contents, test_data.data(), 130));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &buf, &buf_len));
   scoper.reset(buf);
 
-  if (buf_len != 3 + 130 ||
-      OPENSSL_memcmp(buf, "\x30\x81\x82", 3) != 0 ||
-      OPENSSL_memcmp(buf + 3, test_data.data(), 130) != 0) {
-    return false;
-  }
+  ASSERT_EQ(3u + 130u, buf_len);
+  EXPECT_EQ(Bytes("\x30\x81\x82"), Bytes(buf, 3));
+  EXPECT_EQ(Bytes(test_data.data(), 130), Bytes(buf + 3, 130));
 
-  if (!CBB_init(&cbb, 0)) {
-    return false;
-  }
-  if (!CBB_add_asn1(&cbb, &contents, 0x30) ||
-      !CBB_add_bytes(&contents, test_data.data(), 1000) ||
-      !CBB_finish(&cbb, &buf, &buf_len)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(CBB_add_asn1(cbb.get(), &contents, 0x30));
+  ASSERT_TRUE(CBB_add_bytes(&contents, test_data.data(), 1000));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &buf, &buf_len));
   scoper.reset(buf);
 
-  if (buf_len != 4 + 1000 ||
-      OPENSSL_memcmp(buf, "\x30\x82\x03\xe8", 4) != 0 ||
-      OPENSSL_memcmp(buf + 4, test_data.data(), 1000)) {
-    return false;
-  }
+  ASSERT_EQ(4u + 1000u, buf_len);
+  EXPECT_EQ(Bytes("\x30\x82\x03\xe8"), Bytes(buf, 4));
+  EXPECT_EQ(Bytes(test_data.data(), 1000), Bytes(buf + 4, 1000));
 
-  if (!CBB_init(&cbb, 0)) {
-    return false;
-  }
-  if (!CBB_add_asn1(&cbb, &contents, 0x30) ||
-      !CBB_add_asn1(&contents, &inner_contents, 0x30) ||
-      !CBB_add_bytes(&inner_contents, test_data.data(), 100000) ||
-      !CBB_finish(&cbb, &buf, &buf_len)) {
-    CBB_cleanup(&cbb);
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(CBB_add_asn1(cbb.get(), &contents, 0x30));
+  ASSERT_TRUE(CBB_add_asn1(&contents, &inner_contents, 0x30));
+  ASSERT_TRUE(CBB_add_bytes(&inner_contents, test_data.data(), 100000));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &buf, &buf_len));
   scoper.reset(buf);
 
-  if (buf_len != 5 + 5 + 100000 ||
-      OPENSSL_memcmp(buf, "\x30\x83\x01\x86\xa5\x30\x83\x01\x86\xa0", 10) !=
-          0 ||
-      OPENSSL_memcmp(buf + 10, test_data.data(), 100000)) {
-    return false;
-  }
-
-  return true;
+  ASSERT_EQ(5u + 5u + 100000u, buf_len);
+  EXPECT_EQ(Bytes("\x30\x83\x01\x86\xa5\x30\x83\x01\x86\xa0"), Bytes(buf, 10));
+  EXPECT_EQ(Bytes(test_data.data(), test_data.size()), Bytes(buf + 10, 100000));
 }
 
-static bool DoBerConvert(const char *name,
-                         const uint8_t *der_expected, size_t der_len,
-                         const uint8_t *ber, size_t ber_len) {
+static void ExpectBerConvert(const char *name, const uint8_t *der_expected,
+                             size_t der_len, const uint8_t *ber,
+                             size_t ber_len) {
+  SCOPED_TRACE(name);
   CBS in;
   uint8_t *out;
   size_t out_len;
 
   CBS_init(&in, ber, ber_len);
-  if (!CBS_asn1_ber_to_der(&in, &out, &out_len)) {
-    fprintf(stderr, "%s: CBS_asn1_ber_to_der failed.\n", name);
-    return false;
-  }
+  ASSERT_TRUE(CBS_asn1_ber_to_der(&in, &out, &out_len));
   bssl::UniquePtr<uint8_t> scoper(out);
 
   if (out == NULL) {
-    if (ber_len != der_len ||
-        OPENSSL_memcmp(der_expected, ber, ber_len) != 0) {
-      fprintf(stderr, "%s: incorrect unconverted result.\n", name);
-      return false;
-    }
-
-    return true;
+    EXPECT_EQ(Bytes(der_expected, der_len), Bytes(ber, ber_len));
+  } else {
+    EXPECT_NE(Bytes(der_expected, der_len), Bytes(ber, ber_len));
+    EXPECT_EQ(Bytes(der_expected, der_len), Bytes(out, out_len));
   }
-
-  if (out_len != der_len ||
-      OPENSSL_memcmp(out, der_expected, der_len) != 0) {
-    fprintf(stderr, "%s: incorrect converted result.\n", name);
-    return false;
-  }
-
-  return true;
 }
 
-static bool TestBerConvert() {
+TEST(CBSTest, BerConvert) {
   static const uint8_t kSimpleBER[] = {0x01, 0x01, 0x00};
 
   // kIndefBER contains a SEQUENCE with an indefinite length.
@@ -653,18 +530,17 @@
       0xa0, 0x08, 0x04, 0x02, 0x00, 0x01, 0x04, 0x02, 0x02, 0x03,
   };
 
-  return DoBerConvert("kSimpleBER", kSimpleBER, sizeof(kSimpleBER),
-                      kSimpleBER, sizeof(kSimpleBER)) &&
-         DoBerConvert("kIndefBER", kIndefDER, sizeof(kIndefDER), kIndefBER,
-                      sizeof(kIndefBER)) &&
-         DoBerConvert("kOctetStringBER", kOctetStringDER,
-                      sizeof(kOctetStringDER), kOctetStringBER,
-                      sizeof(kOctetStringBER)) &&
-         DoBerConvert("kNSSBER", kNSSDER, sizeof(kNSSDER), kNSSBER,
-                      sizeof(kNSSBER)) &&
-         DoBerConvert("kConstructedStringBER", kConstructedStringDER,
-                      sizeof(kConstructedStringDER), kConstructedStringBER,
-                      sizeof(kConstructedStringBER));
+  ExpectBerConvert("kSimpleBER", kSimpleBER, sizeof(kSimpleBER), kSimpleBER,
+                   sizeof(kSimpleBER));
+  ExpectBerConvert("kIndefBER", kIndefDER, sizeof(kIndefDER), kIndefBER,
+                   sizeof(kIndefBER));
+  ExpectBerConvert("kOctetStringBER", kOctetStringDER, sizeof(kOctetStringDER),
+                   kOctetStringBER, sizeof(kOctetStringBER));
+  ExpectBerConvert("kNSSBER", kNSSDER, sizeof(kNSSDER), kNSSBER,
+                   sizeof(kNSSBER));
+  ExpectBerConvert("kConstructedStringBER", kConstructedStringDER,
+                   sizeof(kConstructedStringDER), kConstructedStringBER,
+                   sizeof(kConstructedStringBER));
 }
 
 struct ImplicitStringTest {
@@ -690,8 +566,9 @@
     {"\xa1\x09\x0c\x01\x61\x0c\x01\x61\x0c\x01\x61", 11, false, nullptr, 0},
 };
 
-static bool TestImplicitString() {
+TEST(CBSTest, ImplicitString) {
   for (const auto &test : kImplicitStringTests) {
+    SCOPED_TRACE(Bytes(test.in, test.in_len));
     uint8_t *storage = nullptr;
     CBS in, out;
     CBS_init(&in, reinterpret_cast<const uint8_t *>(test.in), test.in_len);
@@ -699,21 +576,13 @@
                                           CBS_ASN1_CONTEXT_SPECIFIC | 0,
                                           CBS_ASN1_OCTETSTRING);
     bssl::UniquePtr<uint8_t> scoper(storage);
+    EXPECT_EQ(test.ok, static_cast<bool>(ok));
 
-    if (static_cast<bool>(ok) != test.ok) {
-      fprintf(stderr, "CBS_get_asn1_implicit_string unexpectedly %s\n",
-              ok ? "succeeded" : "failed");
-      return false;
-    }
-
-    if (ok && (CBS_len(&out) != test.out_len ||
-               OPENSSL_memcmp(CBS_data(&out), test.out, test.out_len) != 0)) {
-      fprintf(stderr, "CBS_get_asn1_implicit_string gave the wrong output\n");
-      return false;
+    if (ok) {
+      EXPECT_EQ(Bytes(test.out, test.out_len),
+                Bytes(CBS_data(&out), CBS_len(&out)));
     }
   }
-
-  return true;
 }
 
 struct ASN1Uint64Test {
@@ -752,35 +621,26 @@
     {"\x02\x02\x00\x01", 4},
 };
 
-static bool TestASN1Uint64() {
+TEST(CBSTest, ASN1Uint64) {
   for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(kASN1Uint64Tests); i++) {
+    SCOPED_TRACE(i);
     const ASN1Uint64Test *test = &kASN1Uint64Tests[i];
     CBS cbs;
     uint64_t value;
-    CBB cbb;
     uint8_t *out;
     size_t len;
 
     CBS_init(&cbs, (const uint8_t *)test->encoding, test->encoding_len);
-    if (!CBS_get_asn1_uint64(&cbs, &value) ||
-        CBS_len(&cbs) != 0 ||
-        value != test->value) {
-      return false;
-    }
+    ASSERT_TRUE(CBS_get_asn1_uint64(&cbs, &value));
+    EXPECT_EQ(0u, CBS_len(&cbs));
+    EXPECT_EQ(test->value, value);
 
-    if (!CBB_init(&cbb, 0)) {
-      return false;
-    }
-    if (!CBB_add_asn1_uint64(&cbb, test->value) ||
-        !CBB_finish(&cbb, &out, &len)) {
-      CBB_cleanup(&cbb);
-      return false;
-    }
+    bssl::ScopedCBB cbb;
+    ASSERT_TRUE(CBB_init(cbb.get(), 0));
+    ASSERT_TRUE(CBB_add_asn1_uint64(cbb.get(), test->value));
+    ASSERT_TRUE(CBB_finish(cbb.get(), &out, &len));
     bssl::UniquePtr<uint8_t> scoper(out);
-    if (len != test->encoding_len ||
-        OPENSSL_memcmp(out, test->encoding, len) != 0) {
-      return false;
-    }
+    EXPECT_EQ(Bytes(test->encoding, test->encoding_len), Bytes(out, len));
   }
 
   for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(kASN1InvalidUint64Tests); i++) {
@@ -789,113 +649,76 @@
     uint64_t value;
 
     CBS_init(&cbs, (const uint8_t *)test->encoding, test->encoding_len);
-    if (CBS_get_asn1_uint64(&cbs, &value)) {
-      return false;
-    }
+    EXPECT_FALSE(CBS_get_asn1_uint64(&cbs, &value));
   }
-
-  return true;
 }
 
-static bool TestZero() {
+TEST(CBBTest, Zero) {
   CBB cbb;
   CBB_zero(&cbb);
   // Calling |CBB_cleanup| on a zero-state |CBB| must not crash.
   CBB_cleanup(&cbb);
-  return true;
 }
 
-static bool TestCBBReserve() {
+TEST(CBBTest, Reserve) {
   uint8_t buf[10];
   uint8_t *ptr;
   size_t len;
   bssl::ScopedCBB cbb;
-  if (!CBB_init_fixed(cbb.get(), buf, sizeof(buf)) ||
-      // Too large.
-      CBB_reserve(cbb.get(), &ptr, 11)) {
-    return false;
-  }
+  ASSERT_TRUE(CBB_init_fixed(cbb.get(), buf, sizeof(buf)));
+  // Too large.
+  EXPECT_FALSE(CBB_reserve(cbb.get(), &ptr, 11));
 
   cbb.Reset();
-  if (!CBB_init_fixed(cbb.get(), buf, sizeof(buf)) ||
-      // Successfully reserve the entire space.
-      !CBB_reserve(cbb.get(), &ptr, 10) ||
-      ptr != buf ||
-      // Advancing under the maximum bytes is legal.
-      !CBB_did_write(cbb.get(), 5) ||
-      !CBB_finish(cbb.get(), NULL, &len) ||
-      len != 5) {
-    return false;
-  }
-  return true;
+  ASSERT_TRUE(CBB_init_fixed(cbb.get(), buf, sizeof(buf)));
+  // Successfully reserve the entire space.
+  ASSERT_TRUE(CBB_reserve(cbb.get(), &ptr, 10));
+  EXPECT_EQ(buf, ptr);
+  // Advancing under the maximum bytes is legal.
+  ASSERT_TRUE(CBB_did_write(cbb.get(), 5));
+  ASSERT_TRUE(CBB_finish(cbb.get(), NULL, &len));
+  EXPECT_EQ(5u, len);
 }
 
-static bool TestStickyError() {
+// Test that CBB errors are sticky; once on operation on CBB fails, all
+// subsequent ones do.
+TEST(CBBTest, StickyError) {
   // Write an input that exceeds the limit for its length prefix.
   bssl::ScopedCBB cbb;
   CBB child;
   static const uint8_t kZeros[256] = {0};
-  if (!CBB_init(cbb.get(), 0) ||
-      !CBB_add_u8_length_prefixed(cbb.get(), &child) ||
-      !CBB_add_bytes(&child, kZeros, sizeof(kZeros))) {
-    return false;
-  }
-
-  if (CBB_flush(cbb.get())) {
-    fprintf(stderr, "CBB_flush unexpectedly succeeded.\n");
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(CBB_add_u8_length_prefixed(cbb.get(), &child));
+  ASSERT_TRUE(CBB_add_bytes(&child, kZeros, sizeof(kZeros)));
+  ASSERT_FALSE(CBB_flush(cbb.get()));
 
   // All future operations should fail.
   uint8_t *ptr;
   size_t len;
-  if (CBB_add_u8(cbb.get(), 0) ||
-      CBB_finish(cbb.get(), &ptr, &len)) {
-    fprintf(stderr, "Future operations unexpectedly succeeded.\n");
-    return false;
-  }
+  EXPECT_FALSE(CBB_add_u8(cbb.get(), 0));
+  EXPECT_FALSE(CBB_finish(cbb.get(), &ptr, &len));
 
   // Write an input that cannot fit in a fixed CBB.
   cbb.Reset();
   uint8_t buf;
-  if (!CBB_init_fixed(cbb.get(), &buf, 1)) {
-    return false;
-  }
-
-  if (CBB_add_bytes(cbb.get(), kZeros, sizeof(kZeros))) {
-    fprintf(stderr, "CBB_add_bytes unexpectedly succeeded.\n");
-    return false;
-  }
+  ASSERT_TRUE(CBB_init_fixed(cbb.get(), &buf, 1));
+  ASSERT_FALSE(CBB_add_bytes(cbb.get(), kZeros, sizeof(kZeros)));
 
   // All future operations should fail.
-  if (CBB_add_u8(cbb.get(), 0) ||
-      CBB_finish(cbb.get(), &ptr, &len)) {
-    fprintf(stderr, "Future operations unexpectedly succeeded.\n");
-    return false;
-  }
+  EXPECT_FALSE(CBB_add_u8(cbb.get(), 0));
+  EXPECT_FALSE(CBB_finish(cbb.get(), &ptr, &len));
 
   // Write a u32 that cannot fit in a u24.
   cbb.Reset();
-  if (!CBB_init(cbb.get(), 0)) {
-    return false;
-  }
-
-  if (CBB_add_u24(cbb.get(), 1u << 24)) {
-    fprintf(stderr, "CBB_add_u24 unexpectedly succeeded.\n");
-    return false;
-  }
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_FALSE(CBB_add_u24(cbb.get(), 1u << 24));
 
   // All future operations should fail.
-  if (CBB_add_u8(cbb.get(), 0) ||
-      CBB_finish(cbb.get(), &ptr, &len)) {
-    fprintf(stderr, "Future operations unexpectedly succeeded.\n");
-    return false;
-  }
-
-  return true;
+  EXPECT_FALSE(CBB_add_u8(cbb.get(), 0));
+  EXPECT_FALSE(CBB_finish(cbb.get(), &ptr, &len));
 }
 
-static bool TestBitString() {
+TEST(CBSTest, BitString) {
   static const std::vector<uint8_t> kValidBitStrings[] = {
       {0x00},                                      // 0 bits
       {0x07, 0x80},                                // 1 bit
@@ -904,11 +727,10 @@
       {0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0},  // 42 bits
   };
   for (const auto& test : kValidBitStrings) {
+    SCOPED_TRACE(Bytes(test.data(), test.size()));
     CBS cbs;
     CBS_init(&cbs, test.data(), test.size());
-    if (!CBS_is_valid_asn1_bitstring(&cbs)) {
-      return false;
-    }
+    EXPECT_TRUE(CBS_is_valid_asn1_bitstring(&cbs));
   }
 
   static const std::vector<uint8_t> kInvalidBitStrings[] = {
@@ -923,16 +745,13 @@
       {0x06, 0xff, 0xc1},
   };
   for (const auto& test : kInvalidBitStrings) {
+    SCOPED_TRACE(Bytes(test.data(), test.size()));
     CBS cbs;
     CBS_init(&cbs, test.data(), test.size());
-    if (CBS_is_valid_asn1_bitstring(&cbs)) {
-      return false;
-    }
+    EXPECT_FALSE(CBS_is_valid_asn1_bitstring(&cbs));
 
     // CBS_asn1_bitstring_has_bit returns false on invalid inputs.
-    if (CBS_asn1_bitstring_has_bit(&cbs, 0)) {
-      return false;
-    }
+    EXPECT_FALSE(CBS_asn1_bitstring_has_bit(&cbs, 0));
   }
 
   static const struct {
@@ -960,43 +779,11 @@
       {{0x06, 0x0f, 0x40}, 1000, false},
   };
   for (const auto& test : kBitTests) {
+    SCOPED_TRACE(Bytes(test.in.data(), test.in.size()));
+    SCOPED_TRACE(test.bit);
     CBS cbs;
     CBS_init(&cbs, test.in.data(), test.in.size());
-    if (CBS_asn1_bitstring_has_bit(&cbs, test.bit) !=
-        static_cast<int>(test.bit_set)) {
-      return false;
-    }
+    EXPECT_EQ(static_cast<int>(test.bit_set),
+              CBS_asn1_bitstring_has_bit(&cbs, test.bit));
   }
-
-  return true;
-}
-
-int main() {
-  CRYPTO_library_init();
-
-  if (!TestSkip() ||
-      !TestGetUint() ||
-      !TestGetPrefixed() ||
-      !TestGetPrefixedBad() ||
-      !TestGetASN1() ||
-      !TestCBBBasic() ||
-      !TestCBBFixed() ||
-      !TestCBBFinishChild() ||
-      !TestCBBMisuse() ||
-      !TestCBBPrefixed() ||
-      !TestCBBDiscardChild() ||
-      !TestCBBASN1() ||
-      !TestBerConvert() ||
-      !TestImplicitString() ||
-      !TestASN1Uint64() ||
-      !TestGetOptionalASN1Bool() ||
-      !TestZero() ||
-      !TestCBBReserve() ||
-      !TestStickyError() ||
-      !TestBitString()) {
-    return 1;
-  }
-
-  printf("PASS\n");
-  return 0;
 }
diff --git a/src/crypto/bytestring/cbs.c b/src/crypto/bytestring/cbs.c
index 14c55a4..8328b7f 100644
--- a/src/crypto/bytestring/cbs.c
+++ b/src/crypto/bytestring/cbs.c
@@ -329,16 +329,13 @@
 
 int CBS_get_asn1_uint64(CBS *cbs, uint64_t *out) {
   CBS bytes;
-  const uint8_t *data;
-  size_t i, len;
-
   if (!CBS_get_asn1(cbs, &bytes, CBS_ASN1_INTEGER)) {
     return 0;
   }
 
   *out = 0;
-  data = CBS_data(&bytes);
-  len = CBS_len(&bytes);
+  const uint8_t *data = CBS_data(&bytes);
+  size_t len = CBS_len(&bytes);
 
   if (len == 0) {
     /* An INTEGER is encoded with at least one octet. */
@@ -355,7 +352,7 @@
     return 0;
   }
 
-  for (i = 0; i < len; i++) {
+  for (size_t i = 0; i < len; i++) {
     if ((*out >> 56) != 0) {
       /* Too large to represent as a uint64_t. */
       return 0;
diff --git a/src/crypto/cipher/CMakeLists.txt b/src/crypto/cipher/CMakeLists.txt
index db46c4b..49f2833 100644
--- a/src/crypto/cipher/CMakeLists.txt
+++ b/src/crypto/cipher/CMakeLists.txt
@@ -22,6 +22,8 @@
   e_rc4.c
   e_des.c
   e_aes.c
+  e_aesgcmsiv.c
+  e_aesctrhmac.c
   e_chacha20poly1305.c
 
   tls_cbc.c
diff --git a/src/crypto/cipher/cipher_test.cc b/src/crypto/cipher/cipher_test.cc
index 09802c2..bdfcf23 100644
--- a/src/crypto/cipher/cipher_test.cc
+++ b/src/crypto/cipher/cipher_test.cc
@@ -71,6 +71,8 @@
     return EVP_des_ecb();
   } else if (name == "DES-EDE") {
     return EVP_des_ede();
+  } else if (name == "DES-EDE3") {
+    return EVP_des_ede3();
   } else if (name == "DES-EDE-CBC") {
     return EVP_des_ede_cbc();
   } else if (name == "DES-EDE3-CBC") {
@@ -89,6 +91,8 @@
     return EVP_aes_128_ofb();
   } else if (name == "AES-192-CBC") {
     return EVP_aes_192_cbc();
+  } else if (name == "AES-192-CTR") {
+    return EVP_aes_192_ctr();
   } else if (name == "AES-192-ECB") {
     return EVP_aes_192_ecb();
   } else if (name == "AES-256-CBC") {
diff --git a/src/crypto/cipher/e_aes.c b/src/crypto/cipher/e_aes.c
index f67cdad..861a563 100644
--- a/src/crypto/cipher/e_aes.c
+++ b/src/crypto/cipher/e_aes.c
@@ -56,7 +56,6 @@
 #include <openssl/mem.h>
 #include <openssl/nid.h>
 #include <openssl/rand.h>
-#include <openssl/sha.h>
 
 #include "internal.h"
 #include "../internal.h"
@@ -399,11 +398,11 @@
 
 static char aesni_capable(void);
 
-static ctr128_f aes_ctr_set_key(AES_KEY *aes_key, GCM128_CONTEXT *gcm_ctx,
-                                block128_f *out_block, const uint8_t *key,
-                                size_t key_len) {
+ctr128_f aes_ctr_set_key(AES_KEY *aes_key, GCM128_CONTEXT *gcm_ctx,
+                         block128_f *out_block, const uint8_t *key,
+                         size_t key_bytes) {
   if (aesni_capable()) {
-    aesni_set_encrypt_key(key, key_len * 8, aes_key);
+    aesni_set_encrypt_key(key, key_bytes * 8, aes_key);
     if (gcm_ctx != NULL) {
       CRYPTO_gcm128_init(gcm_ctx, aes_key, (block128_f)aesni_encrypt);
     }
@@ -414,7 +413,7 @@
   }
 
   if (hwaes_capable()) {
-    aes_hw_set_encrypt_key(key, key_len * 8, aes_key);
+    aes_hw_set_encrypt_key(key, key_bytes * 8, aes_key);
     if (gcm_ctx != NULL) {
       CRYPTO_gcm128_init(gcm_ctx, aes_key, (block128_f)aes_hw_encrypt);
     }
@@ -425,7 +424,7 @@
   }
 
   if (bsaes_capable()) {
-    AES_set_encrypt_key(key, key_len * 8, aes_key);
+    AES_set_encrypt_key(key, key_bytes * 8, aes_key);
     if (gcm_ctx != NULL) {
       CRYPTO_gcm128_init(gcm_ctx, aes_key, (block128_f)AES_encrypt);
     }
@@ -436,7 +435,7 @@
   }
 
   if (vpaes_capable()) {
-    vpaes_set_encrypt_key(key, key_len * 8, aes_key);
+    vpaes_set_encrypt_key(key, key_bytes * 8, aes_key);
     if (out_block) {
       *out_block = (block128_f) vpaes_encrypt;
     }
@@ -446,7 +445,7 @@
     return NULL;
   }
 
-  AES_set_encrypt_key(key, key_len * 8, aes_key);
+  AES_set_encrypt_key(key, key_bytes * 8, aes_key);
   if (gcm_ctx != NULL) {
     CRYPTO_gcm128_init(gcm_ctx, aes_key, (block128_f)AES_encrypt);
   }
@@ -1179,587 +1178,6 @@
 const EVP_AEAD *EVP_aead_aes_256_gcm(void) { return &aead_aes_256_gcm; }
 
 
-#define EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN SHA256_DIGEST_LENGTH
-#define EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN 12
-
-struct aead_aes_ctr_hmac_sha256_ctx {
-  union {
-    double align;
-    AES_KEY ks;
-  } ks;
-  ctr128_f ctr;
-  block128_f block;
-  SHA256_CTX inner_init_state;
-  SHA256_CTX outer_init_state;
-  uint8_t tag_len;
-};
-
-static void hmac_init(SHA256_CTX *out_inner, SHA256_CTX *out_outer,
-                      const uint8_t hmac_key[32]) {
-  static const size_t hmac_key_len = 32;
-  uint8_t block[SHA256_CBLOCK];
-  OPENSSL_memcpy(block, hmac_key, hmac_key_len);
-  OPENSSL_memset(block + hmac_key_len, 0x36, sizeof(block) - hmac_key_len);
-
-  unsigned i;
-  for (i = 0; i < hmac_key_len; i++) {
-    block[i] ^= 0x36;
-  }
-
-  SHA256_Init(out_inner);
-  SHA256_Update(out_inner, block, sizeof(block));
-
-  OPENSSL_memset(block + hmac_key_len, 0x5c, sizeof(block) - hmac_key_len);
-  for (i = 0; i < hmac_key_len; i++) {
-    block[i] ^= (0x36 ^ 0x5c);
-  }
-
-  SHA256_Init(out_outer);
-  SHA256_Update(out_outer, block, sizeof(block));
-}
-
-static int aead_aes_ctr_hmac_sha256_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
-                                         size_t key_len, size_t tag_len) {
-  struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx;
-  static const size_t hmac_key_len = 32;
-
-  if (key_len < hmac_key_len) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_KEY_LENGTH);
-    return 0; /* EVP_AEAD_CTX_init should catch this. */
-  }
-
-  const size_t aes_key_len = key_len - hmac_key_len;
-  if (aes_key_len != 16 && aes_key_len != 32) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_KEY_LENGTH);
-    return 0; /* EVP_AEAD_CTX_init should catch this. */
-  }
-
-  if (tag_len == EVP_AEAD_DEFAULT_TAG_LENGTH) {
-    tag_len = EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN;
-  }
-
-  if (tag_len > EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TAG_TOO_LARGE);
-    return 0;
-  }
-
-  aes_ctx = OPENSSL_malloc(sizeof(struct aead_aes_ctr_hmac_sha256_ctx));
-  if (aes_ctx == NULL) {
-    OPENSSL_PUT_ERROR(CIPHER, ERR_R_MALLOC_FAILURE);
-    return 0;
-  }
-
-  aes_ctx->ctr =
-      aes_ctr_set_key(&aes_ctx->ks.ks, NULL, &aes_ctx->block, key, aes_key_len);
-  aes_ctx->tag_len = tag_len;
-  hmac_init(&aes_ctx->inner_init_state, &aes_ctx->outer_init_state,
-            key + aes_key_len);
-
-  ctx->aead_state = aes_ctx;
-
-  return 1;
-}
-
-static void aead_aes_ctr_hmac_sha256_cleanup(EVP_AEAD_CTX *ctx) {
-  struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx = ctx->aead_state;
-  OPENSSL_cleanse(aes_ctx, sizeof(struct aead_aes_ctr_hmac_sha256_ctx));
-  OPENSSL_free(aes_ctx);
-}
-
-static void hmac_update_uint64(SHA256_CTX *sha256, uint64_t value) {
-  unsigned i;
-  uint8_t bytes[8];
-
-  for (i = 0; i < sizeof(bytes); i++) {
-    bytes[i] = value & 0xff;
-    value >>= 8;
-  }
-  SHA256_Update(sha256, bytes, sizeof(bytes));
-}
-
-static void hmac_calculate(uint8_t out[SHA256_DIGEST_LENGTH],
-                           const SHA256_CTX *inner_init_state,
-                           const SHA256_CTX *outer_init_state,
-                           const uint8_t *ad, size_t ad_len,
-                           const uint8_t *nonce, const uint8_t *ciphertext,
-                           size_t ciphertext_len) {
-  SHA256_CTX sha256;
-  OPENSSL_memcpy(&sha256, inner_init_state, sizeof(sha256));
-  hmac_update_uint64(&sha256, ad_len);
-  hmac_update_uint64(&sha256, ciphertext_len);
-  SHA256_Update(&sha256, nonce, EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN);
-  SHA256_Update(&sha256, ad, ad_len);
-
-  /* Pad with zeros to the end of the SHA-256 block. */
-  const unsigned num_padding =
-      (SHA256_CBLOCK - ((sizeof(uint64_t)*2 +
-                         EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN + ad_len) %
-                        SHA256_CBLOCK)) %
-      SHA256_CBLOCK;
-  uint8_t padding[SHA256_CBLOCK];
-  OPENSSL_memset(padding, 0, num_padding);
-  SHA256_Update(&sha256, padding, num_padding);
-
-  SHA256_Update(&sha256, ciphertext, ciphertext_len);
-
-  uint8_t inner_digest[SHA256_DIGEST_LENGTH];
-  SHA256_Final(inner_digest, &sha256);
-
-  OPENSSL_memcpy(&sha256, outer_init_state, sizeof(sha256));
-  SHA256_Update(&sha256, inner_digest, sizeof(inner_digest));
-  SHA256_Final(out, &sha256);
-}
-
-static void aead_aes_ctr_hmac_sha256_crypt(
-    const struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx, uint8_t *out,
-    const uint8_t *in, size_t len, const uint8_t *nonce) {
-  /* Since the AEAD operation is one-shot, keeping a buffer of unused keystream
-   * bytes is pointless. However, |CRYPTO_ctr128_encrypt| requires it. */
-  uint8_t partial_block_buffer[AES_BLOCK_SIZE];
-  unsigned partial_block_offset = 0;
-  OPENSSL_memset(partial_block_buffer, 0, sizeof(partial_block_buffer));
-
-  uint8_t counter[AES_BLOCK_SIZE];
-  OPENSSL_memcpy(counter, nonce, EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN);
-  OPENSSL_memset(counter + EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN, 0, 4);
-
-  if (aes_ctx->ctr) {
-    CRYPTO_ctr128_encrypt_ctr32(in, out, len, &aes_ctx->ks.ks, counter,
-                                partial_block_buffer, &partial_block_offset,
-                                aes_ctx->ctr);
-  } else {
-    CRYPTO_ctr128_encrypt(in, out, len, &aes_ctx->ks.ks, counter,
-                          partial_block_buffer, &partial_block_offset,
-                          aes_ctx->block);
-  }
-}
-
-static int aead_aes_ctr_hmac_sha256_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
-                                         size_t *out_len, size_t max_out_len,
-                                         const uint8_t *nonce, size_t nonce_len,
-                                         const uint8_t *in, size_t in_len,
-                                         const uint8_t *ad, size_t ad_len) {
-  const struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx = ctx->aead_state;
-  const uint64_t in_len_64 = in_len;
-
-  if (in_len + aes_ctx->tag_len < in_len ||
-      /* This input is so large it would overflow the 32-bit block counter. */
-      in_len_64 >= (UINT64_C(1) << 32) * AES_BLOCK_SIZE) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
-    return 0;
-  }
-
-  if (max_out_len < in_len + aes_ctx->tag_len) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
-    return 0;
-  }
-
-  if (nonce_len != EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
-    return 0;
-  }
-
-  aead_aes_ctr_hmac_sha256_crypt(aes_ctx, out, in, in_len, nonce);
-
-  uint8_t hmac_result[SHA256_DIGEST_LENGTH];
-  hmac_calculate(hmac_result, &aes_ctx->inner_init_state,
-                 &aes_ctx->outer_init_state, ad, ad_len, nonce, out, in_len);
-  OPENSSL_memcpy(out + in_len, hmac_result, aes_ctx->tag_len);
-  *out_len = in_len + aes_ctx->tag_len;
-
-  return 1;
-}
-
-static int aead_aes_ctr_hmac_sha256_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
-                                         size_t *out_len, size_t max_out_len,
-                                         const uint8_t *nonce, size_t nonce_len,
-                                         const uint8_t *in, size_t in_len,
-                                         const uint8_t *ad, size_t ad_len) {
-  const struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx = ctx->aead_state;
-  size_t plaintext_len;
-
-  if (in_len < aes_ctx->tag_len) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
-    return 0;
-  }
-
-  plaintext_len = in_len - aes_ctx->tag_len;
-
-  if (max_out_len < plaintext_len) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
-    return 0;
-  }
-
-  if (nonce_len != EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
-    return 0;
-  }
-
-  uint8_t hmac_result[SHA256_DIGEST_LENGTH];
-  hmac_calculate(hmac_result, &aes_ctx->inner_init_state,
-                 &aes_ctx->outer_init_state, ad, ad_len, nonce, in,
-                 plaintext_len);
-  if (CRYPTO_memcmp(hmac_result, in + plaintext_len, aes_ctx->tag_len) != 0) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
-    return 0;
-  }
-
-  aead_aes_ctr_hmac_sha256_crypt(aes_ctx, out, in, plaintext_len, nonce);
-
-  *out_len = plaintext_len;
-  return 1;
-}
-
-static const EVP_AEAD aead_aes_128_ctr_hmac_sha256 = {
-    16 /* AES key */ + 32 /* HMAC key */,
-    12,                                       /* nonce length */
-    EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN,     /* overhead */
-    EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN,     /* max tag length */
-
-    aead_aes_ctr_hmac_sha256_init,
-    NULL /* init_with_direction */,
-    aead_aes_ctr_hmac_sha256_cleanup,
-    aead_aes_ctr_hmac_sha256_seal,
-    aead_aes_ctr_hmac_sha256_open,
-    NULL /* get_iv */,
-};
-
-static const EVP_AEAD aead_aes_256_ctr_hmac_sha256 = {
-    32 /* AES key */ + 32 /* HMAC key */,
-    12,                                       /* nonce length */
-    EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN,     /* overhead */
-    EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN,     /* max tag length */
-
-    aead_aes_ctr_hmac_sha256_init,
-    NULL /* init_with_direction */,
-    aead_aes_ctr_hmac_sha256_cleanup,
-    aead_aes_ctr_hmac_sha256_seal,
-    aead_aes_ctr_hmac_sha256_open,
-    NULL /* get_iv */,
-};
-
-const EVP_AEAD *EVP_aead_aes_128_ctr_hmac_sha256(void) {
-  return &aead_aes_128_ctr_hmac_sha256;
-}
-
-const EVP_AEAD *EVP_aead_aes_256_ctr_hmac_sha256(void) {
-  return &aead_aes_256_ctr_hmac_sha256;
-}
-
-#if !defined(OPENSSL_SMALL)
-
-#define EVP_AEAD_AES_GCM_SIV_NONCE_LEN 12
-#define EVP_AEAD_AES_GCM_SIV_TAG_LEN 16
-
-struct aead_aes_gcm_siv_ctx {
-  union {
-    double align;
-    AES_KEY ks;
-  } ks;
-  block128_f kgk_block;
-  unsigned is_256:1;
-};
-
-static int aead_aes_gcm_siv_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
-                                 size_t key_len, size_t tag_len) {
-  const size_t key_bits = key_len * 8;
-
-  if (key_bits != 128 && key_bits != 256) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_KEY_LENGTH);
-    return 0; /* EVP_AEAD_CTX_init should catch this. */
-  }
-
-  if (tag_len == EVP_AEAD_DEFAULT_TAG_LENGTH) {
-    tag_len = EVP_AEAD_AES_GCM_SIV_TAG_LEN;
-  }
-
-  if (tag_len != EVP_AEAD_AES_GCM_SIV_TAG_LEN) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TAG_TOO_LARGE);
-    return 0;
-  }
-
-  struct aead_aes_gcm_siv_ctx *gcm_siv_ctx =
-      OPENSSL_malloc(sizeof(struct aead_aes_gcm_siv_ctx));
-  if (gcm_siv_ctx == NULL) {
-    return 0;
-  }
-  OPENSSL_memset(gcm_siv_ctx, 0, sizeof(struct aead_aes_gcm_siv_ctx));
-
-  if (aesni_capable()) {
-    aesni_set_encrypt_key(key, key_len * 8, &gcm_siv_ctx->ks.ks);
-    gcm_siv_ctx->kgk_block = (block128_f)aesni_encrypt;
-  } else if (hwaes_capable()) {
-    aes_hw_set_encrypt_key(key, key_len * 8, &gcm_siv_ctx->ks.ks);
-    gcm_siv_ctx->kgk_block = (block128_f)aes_hw_encrypt;
-  } else if (vpaes_capable()) {
-    vpaes_set_encrypt_key(key, key_len * 8, &gcm_siv_ctx->ks.ks);
-    gcm_siv_ctx->kgk_block = (block128_f)vpaes_encrypt;
-  } else {
-    AES_set_encrypt_key(key, key_len * 8, &gcm_siv_ctx->ks.ks);
-    gcm_siv_ctx->kgk_block = (block128_f)AES_encrypt;
-  }
-
-  gcm_siv_ctx->is_256 = (key_len == 32);
-  ctx->aead_state = gcm_siv_ctx;
-
-  return 1;
-}
-
-static void aead_aes_gcm_siv_cleanup(EVP_AEAD_CTX *ctx) {
-  struct aead_aes_gcm_siv_ctx *gcm_siv_ctx = ctx->aead_state;
-  OPENSSL_cleanse(gcm_siv_ctx, sizeof(struct aead_aes_gcm_siv_ctx));
-  OPENSSL_free(gcm_siv_ctx);
-}
-
-/* gcm_siv_crypt encrypts (or decrypts—it's the same thing) |in_len| bytes from
- * |in| to |out|, using the block function |enc_block| with |key| in counter
- * mode, starting at |initial_counter|. This differs from the traditional
- * counter mode code in that the counter is handled little-endian, only the
- * first four bytes are used and the GCM-SIV tweak to the final byte is
- * applied. The |in| and |out| pointers may be equal but otherwise must not
- * alias. */
-static void gcm_siv_crypt(uint8_t *out, const uint8_t *in, size_t in_len,
-                          const uint8_t initial_counter[AES_BLOCK_SIZE],
-                          block128_f enc_block, const AES_KEY *key) {
-  union {
-    uint32_t w[4];
-    uint8_t c[16];
-  } counter;
-
-  OPENSSL_memcpy(counter.c, initial_counter, AES_BLOCK_SIZE);
-  counter.c[15] |= 0x80;
-
-  for (size_t done = 0; done < in_len;) {
-    uint8_t keystream[AES_BLOCK_SIZE];
-    enc_block(counter.c, keystream, key);
-    counter.w[0]++;
-
-    size_t todo = AES_BLOCK_SIZE;
-    if (in_len - done < todo) {
-      todo = in_len - done;
-    }
-
-    for (size_t i = 0; i < todo; i++) {
-      out[done + i] = keystream[i] ^ in[done + i];
-    }
-
-    done += todo;
-  }
-}
-
-/* gcm_siv_polyval evaluates POLYVAL at |auth_key| on the given plaintext and
- * AD. The result is written to |out_tag|. */
-static void gcm_siv_polyval(
-    uint8_t out_tag[16], const uint8_t *in, size_t in_len, const uint8_t *ad,
-    size_t ad_len, const uint8_t auth_key[16],
-    const uint8_t nonce[EVP_AEAD_AES_GCM_SIV_NONCE_LEN]) {
-  struct polyval_ctx polyval_ctx;
-  CRYPTO_POLYVAL_init(&polyval_ctx, auth_key);
-
-  CRYPTO_POLYVAL_update_blocks(&polyval_ctx, ad, ad_len & ~15);
-
-  uint8_t scratch[16];
-  if (ad_len & 15) {
-    OPENSSL_memset(scratch, 0, sizeof(scratch));
-    OPENSSL_memcpy(scratch, &ad[ad_len & ~15], ad_len & 15);
-    CRYPTO_POLYVAL_update_blocks(&polyval_ctx, scratch, sizeof(scratch));
-  }
-
-  CRYPTO_POLYVAL_update_blocks(&polyval_ctx, in, in_len & ~15);
-  if (in_len & 15) {
-    OPENSSL_memset(scratch, 0, sizeof(scratch));
-    OPENSSL_memcpy(scratch, &in[in_len & ~15], in_len & 15);
-    CRYPTO_POLYVAL_update_blocks(&polyval_ctx, scratch, sizeof(scratch));
-  }
-
-  union {
-    uint8_t c[16];
-    struct {
-      uint64_t ad;
-      uint64_t in;
-    } bitlens;
-  } length_block;
-
-  length_block.bitlens.ad = ad_len * 8;
-  length_block.bitlens.in = in_len * 8;
-  CRYPTO_POLYVAL_update_blocks(&polyval_ctx, length_block.c,
-                               sizeof(length_block));
-
-  CRYPTO_POLYVAL_finish(&polyval_ctx, out_tag);
-  for (size_t i = 0; i < EVP_AEAD_AES_GCM_SIV_NONCE_LEN; i++) {
-    out_tag[i] ^= nonce[i];
-  }
-  out_tag[15] &= 0x7f;
-}
-
-/* gcm_siv_record_keys contains the keys used for a specific GCM-SIV record. */
-struct gcm_siv_record_keys {
-  uint8_t auth_key[16];
-  union {
-    double align;
-    AES_KEY ks;
-  } enc_key;
-  block128_f enc_block;
-};
-
-/* gcm_siv_keys calculates the keys for a specific GCM-SIV record with the
- * given nonce and writes them to |*out_keys|. */
-static void gcm_siv_keys(
-    const struct aead_aes_gcm_siv_ctx *gcm_siv_ctx,
-    struct gcm_siv_record_keys *out_keys,
-    const uint8_t nonce[EVP_AEAD_AES_GCM_SIV_NONCE_LEN]) {
-  const AES_KEY *const key = &gcm_siv_ctx->ks.ks;
-  uint8_t key_material[(128 /* POLYVAL key */ + 256 /* max AES key */) / 8];
-  const size_t blocks_needed = gcm_siv_ctx->is_256 ? 6 : 4;
-
-  uint8_t counter[AES_BLOCK_SIZE];
-  OPENSSL_memset(counter, 0, AES_BLOCK_SIZE - EVP_AEAD_AES_GCM_SIV_NONCE_LEN);
-  OPENSSL_memcpy(counter + AES_BLOCK_SIZE - EVP_AEAD_AES_GCM_SIV_NONCE_LEN,
-                 nonce, EVP_AEAD_AES_GCM_SIV_NONCE_LEN);
-  for (size_t i = 0; i < blocks_needed; i++) {
-    counter[0] = i;
-
-    uint8_t ciphertext[AES_BLOCK_SIZE];
-    gcm_siv_ctx->kgk_block(counter, ciphertext, key);
-    OPENSSL_memcpy(&key_material[i * 8], ciphertext, 8);
-  }
-
-  OPENSSL_memcpy(out_keys->auth_key, key_material, 16);
-  aes_ctr_set_key(&out_keys->enc_key.ks, NULL, &out_keys->enc_block,
-                  key_material + 16, gcm_siv_ctx->is_256 ? 32 : 16);
-}
-
-static int aead_aes_gcm_siv_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
-                                 size_t *out_len, size_t max_out_len,
-                                 const uint8_t *nonce, size_t nonce_len,
-                                 const uint8_t *in, size_t in_len,
-                                 const uint8_t *ad, size_t ad_len) {
-  const struct aead_aes_gcm_siv_ctx *gcm_siv_ctx = ctx->aead_state;
-  const uint64_t in_len_64 = in_len;
-  const uint64_t ad_len_64 = ad_len;
-
-  if (in_len + EVP_AEAD_AES_GCM_SIV_TAG_LEN < in_len ||
-      in_len_64 > (UINT64_C(1) << 36) ||
-      ad_len_64 >= (UINT64_C(1) << 61)) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
-    return 0;
-  }
-
-  if (max_out_len < in_len + EVP_AEAD_AES_GCM_SIV_TAG_LEN) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
-    return 0;
-  }
-
-  if (nonce_len != EVP_AEAD_AES_GCM_SIV_NONCE_LEN) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
-    return 0;
-  }
-
-  struct gcm_siv_record_keys keys;
-  gcm_siv_keys(gcm_siv_ctx, &keys, nonce);
-
-  uint8_t tag[16];
-  gcm_siv_polyval(tag, in, in_len, ad, ad_len, keys.auth_key, nonce);
-  keys.enc_block(tag, tag, &keys.enc_key.ks);
-
-  gcm_siv_crypt(out, in, in_len, tag, keys.enc_block, &keys.enc_key.ks);
-
-  OPENSSL_memcpy(&out[in_len], tag, EVP_AEAD_AES_GCM_SIV_TAG_LEN);
-  *out_len = in_len + EVP_AEAD_AES_GCM_SIV_TAG_LEN;
-
-  return 1;
-}
-
-static int aead_aes_gcm_siv_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
-                                 size_t *out_len, size_t max_out_len,
-                                 const uint8_t *nonce, size_t nonce_len,
-                                 const uint8_t *in, size_t in_len,
-                                 const uint8_t *ad, size_t ad_len) {
-  const uint64_t ad_len_64 = ad_len;
-  if (ad_len_64 >= (UINT64_C(1) << 61)) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
-    return 0;
-  }
-
-  const uint64_t in_len_64 = in_len;
-  if (in_len < EVP_AEAD_AES_GCM_SIV_TAG_LEN ||
-      in_len_64 > (UINT64_C(1) << 36) + AES_BLOCK_SIZE) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
-    return 0;
-  }
-
-  if (nonce_len != EVP_AEAD_AES_GCM_SIV_NONCE_LEN) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
-    return 0;
-  }
-
-  const struct aead_aes_gcm_siv_ctx *gcm_siv_ctx = ctx->aead_state;
-  const size_t plaintext_len = in_len - EVP_AEAD_AES_GCM_SIV_TAG_LEN;
-
-  if (max_out_len < plaintext_len) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
-    return 0;
-  }
-
-  struct gcm_siv_record_keys keys;
-  gcm_siv_keys(gcm_siv_ctx, &keys, nonce);
-
-  gcm_siv_crypt(out, in, plaintext_len, &in[plaintext_len], keys.enc_block,
-                &keys.enc_key.ks);
-
-  uint8_t expected_tag[EVP_AEAD_AES_GCM_SIV_TAG_LEN];
-  gcm_siv_polyval(expected_tag, out, plaintext_len, ad, ad_len, keys.auth_key,
-                  nonce);
-  keys.enc_block(expected_tag, expected_tag, &keys.enc_key.ks);
-
-  if (CRYPTO_memcmp(expected_tag, &in[plaintext_len], sizeof(expected_tag)) !=
-      0) {
-    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
-    return 0;
-  }
-
-  *out_len = plaintext_len;
-  return 1;
-}
-
-static const EVP_AEAD aead_aes_128_gcm_siv = {
-    16,                             /* key length */
-    EVP_AEAD_AES_GCM_SIV_NONCE_LEN, /* nonce length */
-    EVP_AEAD_AES_GCM_SIV_TAG_LEN,   /* overhead */
-    EVP_AEAD_AES_GCM_SIV_TAG_LEN,   /* max tag length */
-
-    aead_aes_gcm_siv_init,
-    NULL /* init_with_direction */,
-    aead_aes_gcm_siv_cleanup,
-    aead_aes_gcm_siv_seal,
-    aead_aes_gcm_siv_open,
-    NULL /* get_iv */,
-};
-
-static const EVP_AEAD aead_aes_256_gcm_siv = {
-    32,                             /* key length */
-    EVP_AEAD_AES_GCM_SIV_NONCE_LEN, /* nonce length */
-    EVP_AEAD_AES_GCM_SIV_TAG_LEN,   /* overhead */
-    EVP_AEAD_AES_GCM_SIV_TAG_LEN,   /* max tag length */
-
-    aead_aes_gcm_siv_init,
-    NULL /* init_with_direction */,
-    aead_aes_gcm_siv_cleanup,
-    aead_aes_gcm_siv_seal,
-    aead_aes_gcm_siv_open,
-    NULL /* get_iv */,
-};
-
-const EVP_AEAD *EVP_aead_aes_128_gcm_siv(void) {
-  return &aead_aes_128_gcm_siv;
-}
-
-const EVP_AEAD *EVP_aead_aes_256_gcm_siv(void) {
-  return &aead_aes_256_gcm_siv;
-}
-
-#endif  /* !OPENSSL_SMALL */
-
 int EVP_has_aes_hardware(void) {
 #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
   return aesni_capable() && crypto_gcm_clmul_enabled();
diff --git a/src/crypto/cipher/e_aesctrhmac.c b/src/crypto/cipher/e_aesctrhmac.c
new file mode 100644
index 0000000..f7cd412
--- /dev/null
+++ b/src/crypto/cipher/e_aesctrhmac.c
@@ -0,0 +1,289 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/aead.h>
+#include <openssl/cipher.h>
+#include <openssl/crypto.h>
+#include <openssl/err.h>
+#include <openssl/sha.h>
+
+#include "internal.h"
+
+
+#define EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN SHA256_DIGEST_LENGTH
+#define EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN 12
+
+struct aead_aes_ctr_hmac_sha256_ctx {
+  union {
+    double align;
+    AES_KEY ks;
+  } ks;
+  ctr128_f ctr;
+  block128_f block;
+  SHA256_CTX inner_init_state;
+  SHA256_CTX outer_init_state;
+  uint8_t tag_len;
+};
+
+static void hmac_init(SHA256_CTX *out_inner, SHA256_CTX *out_outer,
+                      const uint8_t hmac_key[32]) {
+  static const size_t hmac_key_len = 32;
+  uint8_t block[SHA256_CBLOCK];
+  OPENSSL_memcpy(block, hmac_key, hmac_key_len);
+  OPENSSL_memset(block + hmac_key_len, 0x36, sizeof(block) - hmac_key_len);
+
+  unsigned i;
+  for (i = 0; i < hmac_key_len; i++) {
+    block[i] ^= 0x36;
+  }
+
+  SHA256_Init(out_inner);
+  SHA256_Update(out_inner, block, sizeof(block));
+
+  OPENSSL_memset(block + hmac_key_len, 0x5c, sizeof(block) - hmac_key_len);
+  for (i = 0; i < hmac_key_len; i++) {
+    block[i] ^= (0x36 ^ 0x5c);
+  }
+
+  SHA256_Init(out_outer);
+  SHA256_Update(out_outer, block, sizeof(block));
+}
+
+static int aead_aes_ctr_hmac_sha256_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
+                                         size_t key_len, size_t tag_len) {
+  struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx;
+  static const size_t hmac_key_len = 32;
+
+  if (key_len < hmac_key_len) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_KEY_LENGTH);
+    return 0; /* EVP_AEAD_CTX_init should catch this. */
+  }
+
+  const size_t aes_key_len = key_len - hmac_key_len;
+  if (aes_key_len != 16 && aes_key_len != 32) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_KEY_LENGTH);
+    return 0; /* EVP_AEAD_CTX_init should catch this. */
+  }
+
+  if (tag_len == EVP_AEAD_DEFAULT_TAG_LENGTH) {
+    tag_len = EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN;
+  }
+
+  if (tag_len > EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TAG_TOO_LARGE);
+    return 0;
+  }
+
+  aes_ctx = OPENSSL_malloc(sizeof(struct aead_aes_ctr_hmac_sha256_ctx));
+  if (aes_ctx == NULL) {
+    OPENSSL_PUT_ERROR(CIPHER, ERR_R_MALLOC_FAILURE);
+    return 0;
+  }
+
+  aes_ctx->ctr =
+      aes_ctr_set_key(&aes_ctx->ks.ks, NULL, &aes_ctx->block, key, aes_key_len);
+  aes_ctx->tag_len = tag_len;
+  hmac_init(&aes_ctx->inner_init_state, &aes_ctx->outer_init_state,
+            key + aes_key_len);
+
+  ctx->aead_state = aes_ctx;
+
+  return 1;
+}
+
+static void aead_aes_ctr_hmac_sha256_cleanup(EVP_AEAD_CTX *ctx) {
+  struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx = ctx->aead_state;
+  OPENSSL_cleanse(aes_ctx, sizeof(struct aead_aes_ctr_hmac_sha256_ctx));
+  OPENSSL_free(aes_ctx);
+}
+
+static void hmac_update_uint64(SHA256_CTX *sha256, uint64_t value) {
+  unsigned i;
+  uint8_t bytes[8];
+
+  for (i = 0; i < sizeof(bytes); i++) {
+    bytes[i] = value & 0xff;
+    value >>= 8;
+  }
+  SHA256_Update(sha256, bytes, sizeof(bytes));
+}
+
+static void hmac_calculate(uint8_t out[SHA256_DIGEST_LENGTH],
+                           const SHA256_CTX *inner_init_state,
+                           const SHA256_CTX *outer_init_state,
+                           const uint8_t *ad, size_t ad_len,
+                           const uint8_t *nonce, const uint8_t *ciphertext,
+                           size_t ciphertext_len) {
+  SHA256_CTX sha256;
+  OPENSSL_memcpy(&sha256, inner_init_state, sizeof(sha256));
+  hmac_update_uint64(&sha256, ad_len);
+  hmac_update_uint64(&sha256, ciphertext_len);
+  SHA256_Update(&sha256, nonce, EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN);
+  SHA256_Update(&sha256, ad, ad_len);
+
+  /* Pad with zeros to the end of the SHA-256 block. */
+  const unsigned num_padding =
+      (SHA256_CBLOCK - ((sizeof(uint64_t)*2 +
+                         EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN + ad_len) %
+                        SHA256_CBLOCK)) %
+      SHA256_CBLOCK;
+  uint8_t padding[SHA256_CBLOCK];
+  OPENSSL_memset(padding, 0, num_padding);
+  SHA256_Update(&sha256, padding, num_padding);
+
+  SHA256_Update(&sha256, ciphertext, ciphertext_len);
+
+  uint8_t inner_digest[SHA256_DIGEST_LENGTH];
+  SHA256_Final(inner_digest, &sha256);
+
+  OPENSSL_memcpy(&sha256, outer_init_state, sizeof(sha256));
+  SHA256_Update(&sha256, inner_digest, sizeof(inner_digest));
+  SHA256_Final(out, &sha256);
+}
+
+static void aead_aes_ctr_hmac_sha256_crypt(
+    const struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx, uint8_t *out,
+    const uint8_t *in, size_t len, const uint8_t *nonce) {
+  /* Since the AEAD operation is one-shot, keeping a buffer of unused keystream
+   * bytes is pointless. However, |CRYPTO_ctr128_encrypt| requires it. */
+  uint8_t partial_block_buffer[AES_BLOCK_SIZE];
+  unsigned partial_block_offset = 0;
+  OPENSSL_memset(partial_block_buffer, 0, sizeof(partial_block_buffer));
+
+  uint8_t counter[AES_BLOCK_SIZE];
+  OPENSSL_memcpy(counter, nonce, EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN);
+  OPENSSL_memset(counter + EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN, 0, 4);
+
+  if (aes_ctx->ctr) {
+    CRYPTO_ctr128_encrypt_ctr32(in, out, len, &aes_ctx->ks.ks, counter,
+                                partial_block_buffer, &partial_block_offset,
+                                aes_ctx->ctr);
+  } else {
+    CRYPTO_ctr128_encrypt(in, out, len, &aes_ctx->ks.ks, counter,
+                          partial_block_buffer, &partial_block_offset,
+                          aes_ctx->block);
+  }
+}
+
+static int aead_aes_ctr_hmac_sha256_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
+                                         size_t *out_len, size_t max_out_len,
+                                         const uint8_t *nonce, size_t nonce_len,
+                                         const uint8_t *in, size_t in_len,
+                                         const uint8_t *ad, size_t ad_len) {
+  const struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx = ctx->aead_state;
+  const uint64_t in_len_64 = in_len;
+
+  if (in_len + aes_ctx->tag_len < in_len ||
+      /* This input is so large it would overflow the 32-bit block counter. */
+      in_len_64 >= (UINT64_C(1) << 32) * AES_BLOCK_SIZE) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
+    return 0;
+  }
+
+  if (max_out_len < in_len + aes_ctx->tag_len) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
+    return 0;
+  }
+
+  if (nonce_len != EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
+    return 0;
+  }
+
+  aead_aes_ctr_hmac_sha256_crypt(aes_ctx, out, in, in_len, nonce);
+
+  uint8_t hmac_result[SHA256_DIGEST_LENGTH];
+  hmac_calculate(hmac_result, &aes_ctx->inner_init_state,
+                 &aes_ctx->outer_init_state, ad, ad_len, nonce, out, in_len);
+  OPENSSL_memcpy(out + in_len, hmac_result, aes_ctx->tag_len);
+  *out_len = in_len + aes_ctx->tag_len;
+
+  return 1;
+}
+
+static int aead_aes_ctr_hmac_sha256_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
+                                         size_t *out_len, size_t max_out_len,
+                                         const uint8_t *nonce, size_t nonce_len,
+                                         const uint8_t *in, size_t in_len,
+                                         const uint8_t *ad, size_t ad_len) {
+  const struct aead_aes_ctr_hmac_sha256_ctx *aes_ctx = ctx->aead_state;
+  size_t plaintext_len;
+
+  if (in_len < aes_ctx->tag_len) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
+    return 0;
+  }
+
+  plaintext_len = in_len - aes_ctx->tag_len;
+
+  if (max_out_len < plaintext_len) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
+    return 0;
+  }
+
+  if (nonce_len != EVP_AEAD_AES_CTR_HMAC_SHA256_NONCE_LEN) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
+    return 0;
+  }
+
+  uint8_t hmac_result[SHA256_DIGEST_LENGTH];
+  hmac_calculate(hmac_result, &aes_ctx->inner_init_state,
+                 &aes_ctx->outer_init_state, ad, ad_len, nonce, in,
+                 plaintext_len);
+  if (CRYPTO_memcmp(hmac_result, in + plaintext_len, aes_ctx->tag_len) != 0) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
+    return 0;
+  }
+
+  aead_aes_ctr_hmac_sha256_crypt(aes_ctx, out, in, plaintext_len, nonce);
+
+  *out_len = plaintext_len;
+  return 1;
+}
+
+static const EVP_AEAD aead_aes_128_ctr_hmac_sha256 = {
+    16 /* AES key */ + 32 /* HMAC key */,
+    12,                                       /* nonce length */
+    EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN,     /* overhead */
+    EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN,     /* max tag length */
+
+    aead_aes_ctr_hmac_sha256_init,
+    NULL /* init_with_direction */,
+    aead_aes_ctr_hmac_sha256_cleanup,
+    aead_aes_ctr_hmac_sha256_seal,
+    aead_aes_ctr_hmac_sha256_open,
+    NULL /* get_iv */,
+};
+
+static const EVP_AEAD aead_aes_256_ctr_hmac_sha256 = {
+    32 /* AES key */ + 32 /* HMAC key */,
+    12,                                       /* nonce length */
+    EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN,     /* overhead */
+    EVP_AEAD_AES_CTR_HMAC_SHA256_TAG_LEN,     /* max tag length */
+
+    aead_aes_ctr_hmac_sha256_init,
+    NULL /* init_with_direction */,
+    aead_aes_ctr_hmac_sha256_cleanup,
+    aead_aes_ctr_hmac_sha256_seal,
+    aead_aes_ctr_hmac_sha256_open,
+    NULL /* get_iv */,
+};
+
+const EVP_AEAD *EVP_aead_aes_128_ctr_hmac_sha256(void) {
+  return &aead_aes_128_ctr_hmac_sha256;
+}
+
+const EVP_AEAD *EVP_aead_aes_256_ctr_hmac_sha256(void) {
+  return &aead_aes_256_ctr_hmac_sha256;
+}
diff --git a/src/crypto/cipher/e_aesgcmsiv.c b/src/crypto/cipher/e_aesgcmsiv.c
new file mode 100644
index 0000000..f966861
--- /dev/null
+++ b/src/crypto/cipher/e_aesgcmsiv.c
@@ -0,0 +1,323 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/aead.h>
+#include <openssl/cipher.h>
+#include <openssl/crypto.h>
+#include <openssl/err.h>
+
+#include "internal.h"
+
+
+#if !defined(OPENSSL_SMALL)
+
+#define EVP_AEAD_AES_GCM_SIV_NONCE_LEN 12
+#define EVP_AEAD_AES_GCM_SIV_TAG_LEN 16
+
+struct aead_aes_gcm_siv_ctx {
+  union {
+    double align;
+    AES_KEY ks;
+  } ks;
+  block128_f kgk_block;
+  unsigned is_256:1;
+};
+
+static int aead_aes_gcm_siv_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
+                                 size_t key_len, size_t tag_len) {
+  const size_t key_bits = key_len * 8;
+
+  if (key_bits != 128 && key_bits != 256) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_KEY_LENGTH);
+    return 0; /* EVP_AEAD_CTX_init should catch this. */
+  }
+
+  if (tag_len == EVP_AEAD_DEFAULT_TAG_LENGTH) {
+    tag_len = EVP_AEAD_AES_GCM_SIV_TAG_LEN;
+  }
+
+  if (tag_len != EVP_AEAD_AES_GCM_SIV_TAG_LEN) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TAG_TOO_LARGE);
+    return 0;
+  }
+
+  struct aead_aes_gcm_siv_ctx *gcm_siv_ctx =
+      OPENSSL_malloc(sizeof(struct aead_aes_gcm_siv_ctx));
+  if (gcm_siv_ctx == NULL) {
+    return 0;
+  }
+  OPENSSL_memset(gcm_siv_ctx, 0, sizeof(struct aead_aes_gcm_siv_ctx));
+
+  aes_ctr_set_key(&gcm_siv_ctx->ks.ks, NULL, &gcm_siv_ctx->kgk_block, key,
+                  key_len);
+  gcm_siv_ctx->is_256 = (key_len == 32);
+  ctx->aead_state = gcm_siv_ctx;
+
+  return 1;
+}
+
+static void aead_aes_gcm_siv_cleanup(EVP_AEAD_CTX *ctx) {
+  struct aead_aes_gcm_siv_ctx *gcm_siv_ctx = ctx->aead_state;
+  OPENSSL_cleanse(gcm_siv_ctx, sizeof(struct aead_aes_gcm_siv_ctx));
+  OPENSSL_free(gcm_siv_ctx);
+}
+
+/* gcm_siv_crypt encrypts (or decrypts—it's the same thing) |in_len| bytes from
+ * |in| to |out|, using the block function |enc_block| with |key| in counter
+ * mode, starting at |initial_counter|. This differs from the traditional
+ * counter mode code in that the counter is handled little-endian, only the
+ * first four bytes are used and the GCM-SIV tweak to the final byte is
+ * applied. The |in| and |out| pointers may be equal but otherwise must not
+ * alias. */
+static void gcm_siv_crypt(uint8_t *out, const uint8_t *in, size_t in_len,
+                          const uint8_t initial_counter[AES_BLOCK_SIZE],
+                          block128_f enc_block, const AES_KEY *key) {
+  union {
+    uint32_t w[4];
+    uint8_t c[16];
+  } counter;
+
+  OPENSSL_memcpy(counter.c, initial_counter, AES_BLOCK_SIZE);
+  counter.c[15] |= 0x80;
+
+  for (size_t done = 0; done < in_len;) {
+    uint8_t keystream[AES_BLOCK_SIZE];
+    enc_block(counter.c, keystream, key);
+    counter.w[0]++;
+
+    size_t todo = AES_BLOCK_SIZE;
+    if (in_len - done < todo) {
+      todo = in_len - done;
+    }
+
+    for (size_t i = 0; i < todo; i++) {
+      out[done + i] = keystream[i] ^ in[done + i];
+    }
+
+    done += todo;
+  }
+}
+
+/* gcm_siv_polyval evaluates POLYVAL at |auth_key| on the given plaintext and
+ * AD. The result is written to |out_tag|. */
+static void gcm_siv_polyval(
+    uint8_t out_tag[16], const uint8_t *in, size_t in_len, const uint8_t *ad,
+    size_t ad_len, const uint8_t auth_key[16],
+    const uint8_t nonce[EVP_AEAD_AES_GCM_SIV_NONCE_LEN]) {
+  struct polyval_ctx polyval_ctx;
+  CRYPTO_POLYVAL_init(&polyval_ctx, auth_key);
+
+  CRYPTO_POLYVAL_update_blocks(&polyval_ctx, ad, ad_len & ~15);
+
+  uint8_t scratch[16];
+  if (ad_len & 15) {
+    OPENSSL_memset(scratch, 0, sizeof(scratch));
+    OPENSSL_memcpy(scratch, &ad[ad_len & ~15], ad_len & 15);
+    CRYPTO_POLYVAL_update_blocks(&polyval_ctx, scratch, sizeof(scratch));
+  }
+
+  CRYPTO_POLYVAL_update_blocks(&polyval_ctx, in, in_len & ~15);
+  if (in_len & 15) {
+    OPENSSL_memset(scratch, 0, sizeof(scratch));
+    OPENSSL_memcpy(scratch, &in[in_len & ~15], in_len & 15);
+    CRYPTO_POLYVAL_update_blocks(&polyval_ctx, scratch, sizeof(scratch));
+  }
+
+  union {
+    uint8_t c[16];
+    struct {
+      uint64_t ad;
+      uint64_t in;
+    } bitlens;
+  } length_block;
+
+  length_block.bitlens.ad = ad_len * 8;
+  length_block.bitlens.in = in_len * 8;
+  CRYPTO_POLYVAL_update_blocks(&polyval_ctx, length_block.c,
+                               sizeof(length_block));
+
+  CRYPTO_POLYVAL_finish(&polyval_ctx, out_tag);
+  for (size_t i = 0; i < EVP_AEAD_AES_GCM_SIV_NONCE_LEN; i++) {
+    out_tag[i] ^= nonce[i];
+  }
+  out_tag[15] &= 0x7f;
+}
+
+/* gcm_siv_record_keys contains the keys used for a specific GCM-SIV record. */
+struct gcm_siv_record_keys {
+  uint8_t auth_key[16];
+  union {
+    double align;
+    AES_KEY ks;
+  } enc_key;
+  block128_f enc_block;
+};
+
+/* gcm_siv_keys calculates the keys for a specific GCM-SIV record with the
+ * given nonce and writes them to |*out_keys|. */
+static void gcm_siv_keys(
+    const struct aead_aes_gcm_siv_ctx *gcm_siv_ctx,
+    struct gcm_siv_record_keys *out_keys,
+    const uint8_t nonce[EVP_AEAD_AES_GCM_SIV_NONCE_LEN]) {
+  const AES_KEY *const key = &gcm_siv_ctx->ks.ks;
+  uint8_t key_material[(128 /* POLYVAL key */ + 256 /* max AES key */) / 8];
+  const size_t blocks_needed = gcm_siv_ctx->is_256 ? 6 : 4;
+
+  uint8_t counter[AES_BLOCK_SIZE];
+  OPENSSL_memset(counter, 0, AES_BLOCK_SIZE - EVP_AEAD_AES_GCM_SIV_NONCE_LEN);
+  OPENSSL_memcpy(counter + AES_BLOCK_SIZE - EVP_AEAD_AES_GCM_SIV_NONCE_LEN,
+                 nonce, EVP_AEAD_AES_GCM_SIV_NONCE_LEN);
+  for (size_t i = 0; i < blocks_needed; i++) {
+    counter[0] = i;
+
+    uint8_t ciphertext[AES_BLOCK_SIZE];
+    gcm_siv_ctx->kgk_block(counter, ciphertext, key);
+    OPENSSL_memcpy(&key_material[i * 8], ciphertext, 8);
+  }
+
+  OPENSSL_memcpy(out_keys->auth_key, key_material, 16);
+  aes_ctr_set_key(&out_keys->enc_key.ks, NULL, &out_keys->enc_block,
+                  key_material + 16, gcm_siv_ctx->is_256 ? 32 : 16);
+}
+
+static int aead_aes_gcm_siv_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
+                                 size_t *out_len, size_t max_out_len,
+                                 const uint8_t *nonce, size_t nonce_len,
+                                 const uint8_t *in, size_t in_len,
+                                 const uint8_t *ad, size_t ad_len) {
+  const struct aead_aes_gcm_siv_ctx *gcm_siv_ctx = ctx->aead_state;
+  const uint64_t in_len_64 = in_len;
+  const uint64_t ad_len_64 = ad_len;
+
+  if (in_len + EVP_AEAD_AES_GCM_SIV_TAG_LEN < in_len ||
+      in_len_64 > (UINT64_C(1) << 36) ||
+      ad_len_64 >= (UINT64_C(1) << 61)) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
+    return 0;
+  }
+
+  if (max_out_len < in_len + EVP_AEAD_AES_GCM_SIV_TAG_LEN) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
+    return 0;
+  }
+
+  if (nonce_len != EVP_AEAD_AES_GCM_SIV_NONCE_LEN) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
+    return 0;
+  }
+
+  struct gcm_siv_record_keys keys;
+  gcm_siv_keys(gcm_siv_ctx, &keys, nonce);
+
+  uint8_t tag[16];
+  gcm_siv_polyval(tag, in, in_len, ad, ad_len, keys.auth_key, nonce);
+  keys.enc_block(tag, tag, &keys.enc_key.ks);
+
+  gcm_siv_crypt(out, in, in_len, tag, keys.enc_block, &keys.enc_key.ks);
+
+  OPENSSL_memcpy(&out[in_len], tag, EVP_AEAD_AES_GCM_SIV_TAG_LEN);
+  *out_len = in_len + EVP_AEAD_AES_GCM_SIV_TAG_LEN;
+
+  return 1;
+}
+
+static int aead_aes_gcm_siv_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
+                                 size_t *out_len, size_t max_out_len,
+                                 const uint8_t *nonce, size_t nonce_len,
+                                 const uint8_t *in, size_t in_len,
+                                 const uint8_t *ad, size_t ad_len) {
+  const uint64_t ad_len_64 = ad_len;
+  if (ad_len_64 >= (UINT64_C(1) << 61)) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
+    return 0;
+  }
+
+  const uint64_t in_len_64 = in_len;
+  if (in_len < EVP_AEAD_AES_GCM_SIV_TAG_LEN ||
+      in_len_64 > (UINT64_C(1) << 36) + AES_BLOCK_SIZE) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
+    return 0;
+  }
+
+  if (nonce_len != EVP_AEAD_AES_GCM_SIV_NONCE_LEN) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
+    return 0;
+  }
+
+  const struct aead_aes_gcm_siv_ctx *gcm_siv_ctx = ctx->aead_state;
+  const size_t plaintext_len = in_len - EVP_AEAD_AES_GCM_SIV_TAG_LEN;
+
+  if (max_out_len < plaintext_len) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
+    return 0;
+  }
+
+  struct gcm_siv_record_keys keys;
+  gcm_siv_keys(gcm_siv_ctx, &keys, nonce);
+
+  gcm_siv_crypt(out, in, plaintext_len, &in[plaintext_len], keys.enc_block,
+                &keys.enc_key.ks);
+
+  uint8_t expected_tag[EVP_AEAD_AES_GCM_SIV_TAG_LEN];
+  gcm_siv_polyval(expected_tag, out, plaintext_len, ad, ad_len, keys.auth_key,
+                  nonce);
+  keys.enc_block(expected_tag, expected_tag, &keys.enc_key.ks);
+
+  if (CRYPTO_memcmp(expected_tag, &in[plaintext_len], sizeof(expected_tag)) !=
+      0) {
+    OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
+    return 0;
+  }
+
+  *out_len = plaintext_len;
+  return 1;
+}
+
+static const EVP_AEAD aead_aes_128_gcm_siv = {
+    16,                             /* key length */
+    EVP_AEAD_AES_GCM_SIV_NONCE_LEN, /* nonce length */
+    EVP_AEAD_AES_GCM_SIV_TAG_LEN,   /* overhead */
+    EVP_AEAD_AES_GCM_SIV_TAG_LEN,   /* max tag length */
+
+    aead_aes_gcm_siv_init,
+    NULL /* init_with_direction */,
+    aead_aes_gcm_siv_cleanup,
+    aead_aes_gcm_siv_seal,
+    aead_aes_gcm_siv_open,
+    NULL /* get_iv */,
+};
+
+static const EVP_AEAD aead_aes_256_gcm_siv = {
+    32,                             /* key length */
+    EVP_AEAD_AES_GCM_SIV_NONCE_LEN, /* nonce length */
+    EVP_AEAD_AES_GCM_SIV_TAG_LEN,   /* overhead */
+    EVP_AEAD_AES_GCM_SIV_TAG_LEN,   /* max tag length */
+
+    aead_aes_gcm_siv_init,
+    NULL /* init_with_direction */,
+    aead_aes_gcm_siv_cleanup,
+    aead_aes_gcm_siv_seal,
+    aead_aes_gcm_siv_open,
+    NULL /* get_iv */,
+};
+
+const EVP_AEAD *EVP_aead_aes_128_gcm_siv(void) {
+  return &aead_aes_128_gcm_siv;
+}
+
+const EVP_AEAD *EVP_aead_aes_256_gcm_siv(void) {
+  return &aead_aes_256_gcm_siv;
+}
+
+#endif  /* !OPENSSL_SMALL */
diff --git a/src/crypto/cipher/e_des.c b/src/crypto/cipher/e_des.c
index 6834a42..e72f003 100644
--- a/src/crypto/cipher/e_des.c
+++ b/src/crypto/cipher/e_des.c
@@ -203,3 +203,13 @@
     NULL /* cleanup */,  NULL /* ctrl */, };
 
 const EVP_CIPHER *EVP_des_ede(void) { return &des_ede_ecb; }
+
+
+static const EVP_CIPHER des_ede3_ecb = {
+    NID_des_ede3_cbc,    8 /* block_size */,  24 /* key_size */,
+    0 /* iv_len */,      sizeof(DES_EDE_KEY), EVP_CIPH_ECB_MODE,
+    NULL /* app_data */, des_ede3_init_key,   des_ede_ecb_cipher,
+    NULL /* cleanup */,  NULL /* ctrl */,
+};
+
+const EVP_CIPHER *EVP_des_ede3(void) { return &des_ede3_ecb; }
diff --git a/src/crypto/cipher/internal.h b/src/crypto/cipher/internal.h
index b9f88f2..549412c 100644
--- a/src/crypto/cipher/internal.h
+++ b/src/crypto/cipher/internal.h
@@ -60,6 +60,9 @@
 #include <openssl/base.h>
 
 #include <openssl/aead.h>
+#include <openssl/aes.h>
+
+#include "../modes/internal.h"
 
 #if defined(__cplusplus)
 extern "C" {
@@ -154,6 +157,16 @@
                               const uint8_t *mac_secret,
                               unsigned mac_secret_length);
 
+/* aes_ctr_set_key initialises |*aes_key| using |key_bytes| bytes from |key|,
+ * where |key_bytes| must either be 16, 24 or 32. If not NULL, |*out_block| is
+ * set to a function that encrypts single blocks. If not NULL, |*gcm_ctx| is
+ * initialised to do GHASH with the given key. It returns a function for
+ * optimised CTR-mode, or NULL if CTR-mode should be built using
+ * |*out_block|. */
+ctr128_f aes_ctr_set_key(AES_KEY *aes_key, GCM128_CONTEXT *gcm_ctx,
+                         block128_f *out_block, const uint8_t *key,
+                         size_t key_bytes);
+
 #if defined(__cplusplus)
 } /* extern C */
 #endif
diff --git a/src/crypto/cipher/test/cipher_tests.txt b/src/crypto/cipher/test/cipher_tests.txt
index e75e664..8bffdf9 100644
--- a/src/crypto/cipher/test/cipher_tests.txt
+++ b/src/crypto/cipher/test/cipher_tests.txt
@@ -30,6 +30,58 @@
 Ciphertext = d6a141a7ec3c38dfbd61
 
 
+# DES EDE3 ECB tests
+Cipher = DES-EDE3
+Key = 2eaf97304cfaeb822c04a7b7bef328c7b82fef2ae81b06b5
+Plaintext = b3ed255d4f5e2d6d9a1aa2bc03489064d28fe1431eceee183b7231fad3273140
+Ciphertext = 629d608789e51dff699343d061ec01d94c0681c7698ab617ea0145f37304c8e2
+
+Cipher = DES-EDE3
+Key = 72f52e1ded0a88eac6c88d2901b27c2fd6e9f3f3387432ee
+Plaintext = 60de7b5667a1ad5995f178553d695d9b0fb537562876faa9b6cc50d05a1271ac
+Ciphertext = 09875b215ed2499318c2d99c48209ca5f288830cc6edb9538190fa3ca31fa175
+
+Cipher = DES-EDE3
+Key = 4cd30f1e14d485dbc05c69b65ebf44e556056a2261c9e714
+Plaintext = 7ae59441bbd665d8867273386fc72a8cd62cc5bc6bb7cbd57fc1f5dcdc73adfd
+Ciphertext = 004d0daad970bfee944c8779927867b964dd0afaae7a830c2b8e7fdcaeac2158
+
+Cipher = DES-EDE3
+Key = 7a07ac63adfaf1b26860ce39edfc402758bc4d1edda156ab
+Plaintext = ed4f18cf10bfcbd4354710df053d3e2b776860137349471b8dcf526b8eea8b22
+Ciphertext = a1fc1014abda7e198ac8e096a368f65d9b59e1eddf5d97715015a2408dd8e799
+
+Cipher = DES-EDE3
+Key = 37c443ab336fed59b0efae51ea7f5d07b7040868beefcd99
+Plaintext = a10a180cc94b75fc9d6556dfc0a816b71020dc3906f9d59d9dd4c839dfc1c1d3
+Ciphertext = 0a874652b621618635138a7d4b33bb624f91a39ef1422b3e0490311ac6df3602
+
+Cipher = DES-EDE3
+Key = 1ff1a7f4839d484e308d9b8c2c052b126def413d5fb8e0c5
+Plaintext = 4f28ef6683d36c80556ff240b247a3967aec23f859e3afb93aefad93b1e9964b
+Ciphertext = 87a8f3fb4c51b3caf19c4ac51363d92025acc053e538c1502d347a618314a4bd
+
+Cipher = DES-EDE3
+Key = 5642c4d1859a85b342e3f253fd8bd835e856c451e63673e5
+Plaintext = 687af9b298db752b47982f64ad9bff52a9ae487aa5e5c08f902035b0633225bf
+Ciphertext = ca2ed48392ba5d70879ac8772180c3028ef946b6ac1df0348f206ce16bc449bd
+
+Cipher = DES-EDE3
+Key = 30f9d27472f9deee309dbca76ba29ca174c39d0631084735
+Plaintext = 85db2c266902932c8e46d0207459b203f90955adcd7506b49bc82e2796de764f
+Ciphertext = bbb5940b45add7c587cc9fcfc40674bac7e081baf71285891c65ed9573947a07
+
+Cipher = DES-EDE3
+Key = ebc5a73005b77a812c3f4f61669ba859939852580fa61cbc
+Plaintext = 808d22c60b883a986dcb0860e8d92a75441cca0a2a4b06dd78dbcbec198b38d9
+Ciphertext = 75d39d30862431ab07227e22b4c8218f1fbc2a3816daebc555c1b999c86d15c9
+
+Cipher = DES-EDE3
+Key = 2e8eb05dd8a2b7a5a61a6b8a3830b12da2c4b1bea1e884d5
+Plaintext = cc7569d005afd1a365f5c5836c14475fc15091199902af4a78460d56c16f91ca
+Ciphertext = 64db8af7a30363051a017cc92ed67ac6c0e2e1ffda0c94bbf0eeb803ba6b3d22
+
+
 # DES EDE3 CBC tests (from destest)
 Cipher = DES-EDE3-CBC
 Key = 0123456789abcdeff1e0d3c2b5a49786fedcba9876543210
diff --git a/src/crypto/cipher/test/make_nist_aesvs_kat_tests.go b/src/crypto/cipher/test/make_nist_aesvs_kat_tests.go
new file mode 100644
index 0000000..672c158
--- /dev/null
+++ b/src/crypto/cipher/test/make_nist_aesvs_kat_tests.go
@@ -0,0 +1,200 @@
+// Copyright (c) 2017, Google Inc.
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+// The make_nist_aesvs_kat_tests utility converts a Known Answer Test
+// (KAT) files from the NIST CAVP AES Validation Suite (AESVS) into a
+// format that can be consumed by cipher_test.
+//
+// The AESVS specification can be found at
+// http://csrc.nist.gov/groups/STM/cavp/documents/aes/AESAVS.pdf.
+//
+// The KAT vectors are located at
+// http://csrc.nist.gov/groups/STM/cavp/documents/aes/KAT_AES.zip
+// (linked from
+// http://csrc.nist.gov/groups/STM/cavp/block-ciphers.html).
+package main
+
+import (
+	"bufio"
+	"flag"
+	"fmt"
+	"io"
+	"log"
+	"os"
+	"strings"
+)
+
+var (
+	inFile             = flag.String("in", "", "The input file name.")
+	cmdLineLabelStr    = flag.String("extra-labels", "", "Comma-separated list of additional label pairs to add (e.g. 'Cipher=AES-128-CBC,Operation=ENCRYPT')")
+	swapIVAndPlaintext = flag.Bool("swap-iv-plaintext", false, "When processing CBC vector files for CTR mode, swap IV and plaintext.")
+)
+
+// The character to delimit key-value pairs throughout the file ('=' or ':').
+var kvDelim rune
+
+func parseKeyValue(s string) (key, value string) {
+	if kvDelim == 0 {
+		i := strings.IndexAny(s, "=:")
+		if i != -1 {
+			kvDelim = rune(s[i])
+		}
+	}
+	if i := strings.IndexRune(s, kvDelim); kvDelim != 0 && i != -1 {
+		key, value = s[:i], s[i+1:]
+	} else {
+		key = s
+	}
+	return strings.TrimSpace(key), strings.TrimSpace(value)
+}
+
+type kvPair struct {
+	key, value string
+}
+
+var kvTranslations = map[kvPair]kvPair{
+	{"ENCRYPT", ""}:    {"Operation", "ENCRYPT"},
+	{"DECRYPT", ""}:    {"Operation", "DECRYPT"},
+	{"COUNT", ""}:      {"Count", ""},
+	{"KEY", ""}:        {"Key", ""},
+	{"PLAINTEXT", ""}:  {"Plaintext", ""},
+	{"CIPHERTEXT", ""}: {"Ciphertext", ""},
+	{"COUNT", ""}:      {"", ""}, // delete
+}
+
+func translateKeyValue(key, value string) (string, string) {
+	if t, ok := kvTranslations[kvPair{key, ""}]; ok {
+		if len(t.value) == 0 && len(value) != 0 {
+			return t.key, value
+		}
+		return t.key, t.value
+	}
+	if t, ok := kvTranslations[kvPair{key, value}]; ok {
+		return t.key, t.value
+	}
+	return key, value
+}
+
+func printKeyValue(key, value string) {
+	if len(value) == 0 {
+		fmt.Println(key)
+	} else {
+		fmt.Printf("%s: %s\n", key, value)
+	}
+}
+
+func generateTest(r io.Reader) {
+	s := bufio.NewScanner(r)
+
+	// Label blocks consist of lines of the form "[key]" or "[key =
+	// value]". |labels| holds keys and values of the most recent block
+	// of labels.
+	var labels map[string]string
+
+	// Auxiliary labels passed as a flag.
+	cmdLineLabels := make(map[string]string)
+	if len(*cmdLineLabelStr) != 0 {
+		pairs := strings.Split(*cmdLineLabelStr, ",")
+		for _, p := range pairs {
+			key, value := parseKeyValue(p)
+			cmdLineLabels[key] = value
+		}
+	}
+
+	kvDelim = 0
+
+	// Whether we are in a test or a label section.
+	inLabels := false
+	inTest := false
+
+	n := 0
+	for s.Scan() {
+		n++
+		line := s.Text()
+		l := strings.TrimSpace(line)
+		l = strings.SplitN(l, "#", 2)[0] // Trim trailing comments.
+
+		// Blank line.
+		if len(l) == 0 {
+			if inTest {
+				fmt.Println()
+			}
+			inTest = false
+			inLabels = false
+			continue
+		}
+
+		// Label section.
+		if l[0] == '[' {
+			if l[len(l)-1] != ']' {
+				log.Fatalf("line #%d invalid: %q", n, line)
+			}
+			if !inLabels {
+				labels = make(map[string]string)
+				inLabels = true
+			}
+
+			k, v := parseKeyValue(l[1 : len(l)-1])
+			k, v = translateKeyValue(k, v)
+			if len(k) != 0 {
+				labels[k] = v
+			}
+
+			continue
+		}
+
+		// Repeat the label map at the beginning of each test section.
+		if !inTest {
+			inTest = true
+			for k, v := range cmdLineLabels {
+				printKeyValue(k, v)
+			}
+			for k, v := range labels {
+				printKeyValue(k, v)
+			}
+		}
+
+		k, v := parseKeyValue(l)
+		k, v = translateKeyValue(k, v)
+		if len(k) != 0 {
+			printKeyValue(k, v)
+		}
+	}
+}
+
+func main() {
+	flag.Parse()
+
+	if *swapIVAndPlaintext {
+		kvTranslations[kvPair{"PLAINTEXT", ""}] = kvPair{"IV", ""}
+		kvTranslations[kvPair{"IV", ""}] = kvPair{"Plaintext", ""}
+	}
+
+	if len(*inFile) == 0 {
+		fmt.Fprintln(os.Stderr, "-in required")
+		flag.Usage()
+		os.Exit(1)
+	}
+
+	f, err := os.Open(*inFile)
+	if err != nil {
+		log.Fatal(err)
+	}
+	defer f.Close()
+
+	args := append([]string{"make_nist_aesvs_kat_tests"}, os.Args[1:]...)
+	fmt.Printf("# Generated by %q\n\n", strings.Join(args, " "))
+
+	generateTest(f)
+}
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_gf_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_gf_sbox.txt
new file mode 100644
index 0000000..6f79916
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_gf_sbox.txt
@@ -0,0 +1,100 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCGFSbox128.rsp -extra-labels=Cipher=AES-128-CBC"
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: f34481ec3cc627bacd5dc3fb08f273e6
+Ciphertext: 0336763e966d92595a567cc9ce537f5e
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 9798c4640bad75c7c3227db910174e72
+Ciphertext: a9a1631bf4996954ebc093957b234589
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 96ab5c2ff612d9dfaae8c31f30c42168
+Ciphertext: ff4f8391a6a40ca5b25d23bedd44a597
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 6a118a874519e64e9963798a503f1d35
+Ciphertext: dc43be40be0e53712f7e2bf5ca707209
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: cb9fceec81286ca3e989bd979b0cb284
+Ciphertext: 92beedab1895a94faa69b632e5cc47ce
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: b26aeb1874e47ca8358ff22378f09144
+Ciphertext: 459264f4798f6a78bacb89c15ed3d601
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 58c8e00b2631686d54eab84b91f0aca1
+Ciphertext: 08a4e2efec8a8e3312ca7460b9040bbf
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0336763e966d92595a567cc9ce537f5e
+Plaintext: f34481ec3cc627bacd5dc3fb08f273e6
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a9a1631bf4996954ebc093957b234589
+Plaintext: 9798c4640bad75c7c3227db910174e72
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ff4f8391a6a40ca5b25d23bedd44a597
+Plaintext: 96ab5c2ff612d9dfaae8c31f30c42168
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dc43be40be0e53712f7e2bf5ca707209
+Plaintext: 6a118a874519e64e9963798a503f1d35
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 92beedab1895a94faa69b632e5cc47ce
+Plaintext: cb9fceec81286ca3e989bd979b0cb284
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 459264f4798f6a78bacb89c15ed3d601
+Plaintext: b26aeb1874e47ca8358ff22378f09144
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 08a4e2efec8a8e3312ca7460b9040bbf
+Plaintext: 58c8e00b2631686d54eab84b91f0aca1
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_key_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_key_sbox.txt
new file mode 100644
index 0000000..4948d6f
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_key_sbox.txt
@@ -0,0 +1,296 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCKeySbox128.rsp -extra-labels=Cipher=AES-128-CBC"
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 10a58869d74be5a374cf867cfb473859
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6d251e6944b051e04eaa6fb4dbf78465
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: caea65cdbb75e9169ecd22ebe6e54675
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6e29201190152df4ee058139def610bb
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: a2e2fa9baf7d20822ca9f0542f764a41
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c3b44b95d9d2f25670eee9a0de099fa3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: b6364ac4e1de1e285eaf144a2415f7a0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5d9b05578fc944b3cf1ccf0e746cd581
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 64cf9c7abc50b888af65f49d521944b2
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f7efc89d5dba578104016ce5ad659c05
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 47d6742eefcc0465dc96355e851b64d9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0306194f666d183624aa230a8b264ae7
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 3eb39790678c56bee34bbcdeccf6cdb5
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 858075d536d79ccee571f7d7204b1f67
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 64110a924f0743d500ccadae72c13427
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 35870c6a57e9e92314bcb8087cde72ce
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 18d8126516f8a12ab1a36d9f04d68e51
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c68e9be5ec41e22c825b7c7affb4363
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: f530357968578480b398a3c251cd1093
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f5df39990fc688f1b07224cc03e86cea
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: da84367f325d42d601b4326964802e8e
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bba071bcb470f8f6586e5d3add18bc66
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: e37b1c6aa2846f6fdb413f238b089f23
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 43c9f7e62f5d288bb27aa40ef8fe1ea8
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 6c002b682483e0cabcc731c253be5674
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3580d19cff44f1014a7c966a69059de5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 143ae8ed6555aba96110ab58893a8ae1
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 806da864dd29d48deafbe764f8202aef
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: b69418a85332240dc82492353956ae0c
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a303d940ded8f0baff6f75414cac5243
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 71b5c08a1993e1362e4d0ce9b22b78d5
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c2dabd117f8a3ecabfbb11d12194d9d0
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: e234cdca2606b81f29408d5f6da21206
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fff60a4740086b3b9c56195b98d91a7b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 13237c49074a3da078dc1d828bb78c6f
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8146a08e2357f0caa30ca8c94d1a0544
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 3071a2a48fe6cbd04f1a129098e308f8
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4b98e06d356deb07ebb824e5713f7be3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 90f42ec0f68385f2ffc5dfc03a654dce
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7a20a53d460fc9ce0423a7a0764c6cf2
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: febd9a24d8b65c1c787d50a4ed3619a9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f4a70d8af877f9b02b4c40df57d45b17
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 10a58869d74be5a374cf867cfb473859
+IV: 00000000000000000000000000000000
+Ciphertext: 6d251e6944b051e04eaa6fb4dbf78465
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: caea65cdbb75e9169ecd22ebe6e54675
+IV: 00000000000000000000000000000000
+Ciphertext: 6e29201190152df4ee058139def610bb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: a2e2fa9baf7d20822ca9f0542f764a41
+IV: 00000000000000000000000000000000
+Ciphertext: c3b44b95d9d2f25670eee9a0de099fa3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: b6364ac4e1de1e285eaf144a2415f7a0
+IV: 00000000000000000000000000000000
+Ciphertext: 5d9b05578fc944b3cf1ccf0e746cd581
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 64cf9c7abc50b888af65f49d521944b2
+IV: 00000000000000000000000000000000
+Ciphertext: f7efc89d5dba578104016ce5ad659c05
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 47d6742eefcc0465dc96355e851b64d9
+IV: 00000000000000000000000000000000
+Ciphertext: 0306194f666d183624aa230a8b264ae7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 3eb39790678c56bee34bbcdeccf6cdb5
+IV: 00000000000000000000000000000000
+Ciphertext: 858075d536d79ccee571f7d7204b1f67
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 64110a924f0743d500ccadae72c13427
+IV: 00000000000000000000000000000000
+Ciphertext: 35870c6a57e9e92314bcb8087cde72ce
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 18d8126516f8a12ab1a36d9f04d68e51
+IV: 00000000000000000000000000000000
+Ciphertext: 6c68e9be5ec41e22c825b7c7affb4363
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: f530357968578480b398a3c251cd1093
+IV: 00000000000000000000000000000000
+Ciphertext: f5df39990fc688f1b07224cc03e86cea
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: da84367f325d42d601b4326964802e8e
+IV: 00000000000000000000000000000000
+Ciphertext: bba071bcb470f8f6586e5d3add18bc66
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: e37b1c6aa2846f6fdb413f238b089f23
+IV: 00000000000000000000000000000000
+Ciphertext: 43c9f7e62f5d288bb27aa40ef8fe1ea8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 6c002b682483e0cabcc731c253be5674
+IV: 00000000000000000000000000000000
+Ciphertext: 3580d19cff44f1014a7c966a69059de5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 143ae8ed6555aba96110ab58893a8ae1
+IV: 00000000000000000000000000000000
+Ciphertext: 806da864dd29d48deafbe764f8202aef
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: b69418a85332240dc82492353956ae0c
+IV: 00000000000000000000000000000000
+Ciphertext: a303d940ded8f0baff6f75414cac5243
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 71b5c08a1993e1362e4d0ce9b22b78d5
+IV: 00000000000000000000000000000000
+Ciphertext: c2dabd117f8a3ecabfbb11d12194d9d0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: e234cdca2606b81f29408d5f6da21206
+IV: 00000000000000000000000000000000
+Ciphertext: fff60a4740086b3b9c56195b98d91a7b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 13237c49074a3da078dc1d828bb78c6f
+IV: 00000000000000000000000000000000
+Ciphertext: 8146a08e2357f0caa30ca8c94d1a0544
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 3071a2a48fe6cbd04f1a129098e308f8
+IV: 00000000000000000000000000000000
+Ciphertext: 4b98e06d356deb07ebb824e5713f7be3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 90f42ec0f68385f2ffc5dfc03a654dce
+IV: 00000000000000000000000000000000
+Ciphertext: 7a20a53d460fc9ce0423a7a0764c6cf2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: febd9a24d8b65c1c787d50a4ed3619a9
+IV: 00000000000000000000000000000000
+Ciphertext: f4a70d8af877f9b02b4c40df57d45b17
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_var_key.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_var_key.txt
new file mode 100644
index 0000000..29d6377
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_var_key.txt
@@ -0,0 +1,1794 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarKey128.rsp -extra-labels=Cipher=AES-128-CBC"
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0edd33d3c621e546455bd8ba1418bec8
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: c0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4bc3f883450c113c64ca42e1112a9e87
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: e0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 72a1da770f5d7ac4c9ef94d822affd97
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: f0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 970014d634e2b7650777e8e84d03ccd8
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: f8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f17e79aed0db7e279e955b5f493875a7
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ed5a75136a940d0963da379db4af26a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c4295f83465c7755e8fa364bac6a7ea5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b1d758256b28fd850ad4944208cf1155
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 42ffb34c743de4d88ca38011c990890b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9958f0ecea8b2172c0c1995f9182c0f3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 956d7798fac20f82a8823f984d06f7f5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a01bf44f2d16be928ca44aaf7b9b106b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5f1a33e50d40d103764c76bd4c6b6f8
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2637050c9fc0d4817e2d69de878aee8d
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 113ecbe4a453269a0dd26069467fb5b5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 97d0754fe68f11b9e375d070a608c884
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c6a0b3e998d05068a5399778405200b4
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: df556a33438db87bc41b1752c55e5e49
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 90fb128d3a1af6e548521bb962bf1f05
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 26298e9c1db517c215fadfb7d2a8d691
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a6cb761d61f8292d0df393a279ad0380
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 12acd89b13cd5f8726e34d44fd486108
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 95b1703fc57ba09fe0c3580febdd7ed4
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: de11722d893e9f9121c381becc1da59a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6d114ccb27bf391012e8974c546d9bf2
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5ce37e17eb4646ecfac29b9cc38d9340
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 18c1b6e2157122056d0243d8a165cddb
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 99693e6a59d1366c74d823562d7e1431
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c7c64dc84a8bba758ed17eb025a57e3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e17bc79f30eaab2fac2cbbe3458d687a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1114bc2028009b923f0b01915ce5e7c4
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9c28524a16a1e1c1452971caa8d13476
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ed62e16363638360fdd6ad62112794f0
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5a8688f0b2a2c16224c161658ffd4044
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 23f710842b9bb9c32f26648c786807ca
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 44a98bf11e163f632c47ec6a49683a89
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0f18aff94274696d9b61848bd50ac5e5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 82408571c3e2424540207f833b6dda69
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 303ff996947f0c7d1f43c8f3027b9b75
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7df4daf4ad29a3615a9b6ece5c99518a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c72954a48d0774db0b4971c526260415
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1df9b76112dc6531e07d2cfda04411f0
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8e4d8e699119e1fc87545a647fb1d34f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e6c4807ae11f36f091c57d9fb68548d1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8ebf73aad49c82007f77a5c1ccec6ab4
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4fb288cc2040049001d2c7585ad123fc
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 04497110efb9dceb13e2b13fb4465564
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 75550e6cb5a88e49634c9ab69eda0430
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b6768473ce9843ea66a81405dd50b345
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cb2f430383f9084e03a653571e065de6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff4e66c07bae3e79fb7d210847a3b0ba
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7b90785125505fad59b13c186dd66ce3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8b527a6aebdaec9eaef8eda2cb7783e5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 43fdaf53ebbc9880c228617d6a9b548b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 53786104b9744b98f052c46f1c850d0b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5ab3013dd1e61df06cbaf34ca2aee78
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7470469be9723030fdcc73a8cd4fbb10
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a35a63f5343ebe9ef8167bcb48ad122e
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fd8687f0757a210e9fdf181204c30863
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7a181e84bd5457d26a88fbae96018fb0
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 653317b9362b6f9b9e1a580e68d494b5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 995c9dc0b689f03c45867b5faa5c18d1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77a4d96d56dda398b9aabecfc75729fd
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 84be19e053635f09f2665e7bae85b42d
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 32cd652842926aea4aa6137bb2be2b5e
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 493d4a4f38ebb337d10aa84e9171a554
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d9bff7ff454b0ec5a4a2a69566e2cb84
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3535d565ace3f31eb249ba2cc6765d7a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f60e91fc3269eecf3231c6e9945697c6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ab69cfadf51f8e604d9cc37182f6635a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7866373f24a0b6ed56e0d96fcdafb877
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ea448c2aac954f5d812e9d78494446a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: acc5599dd8ac02239a0fef4a36dd1668
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d8764468bb103828cf7e1473ce895073
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b0d02893683b9f180458e4aa6b73982
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 96d9b017d302df410a937dcdb8bb6e43
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ef1623cc44313cff440b1594a7e21cc6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 284ca2fa35807b8b0ae4d19e11d7dbd7
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f2e976875755f9401d54f36e2a23a594
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ec198a18e10e532403b7e20887c8dd80
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 545d50ebd919e4a6949d96ad47e46a80
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dbdfb527060e0a71009c7bb0c68f1d44
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9cfa1322ea33da2173a024f2ff0d896d
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8785b1a75b0f3bd958dcd0e29318c521
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 38f67b9e98e4a97b6df030a9fcdd0104
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 192afffb2c880e82b05926d0fc6c448b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6a7980ce7b105cf530952d74daaf798c
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ea3695e1351b9d6858bd958cf513ef6c
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6da0490ba0ba0343b935681d2cce5ba1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f0ea23af08534011c60009ab29ada2f1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff13806cf19cc38721554d7c0fcdcd4b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6838af1f4f69bae9d85dd188dcdf0688
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36cf44c92d550bfb1ed28ef583ddf5d7
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d06e3195b5376f109d5c4ec6c5d62ced
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c440de014d3d610707279b13242a5c36
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f0c5c6ffa5e0bd3a94c88f6b6f7c16b9
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3e40c3901cd7effc22bffc35dee0b4d9
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b63305c72bedfab97382c406d0c49bc6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36bbaab22a6bd4925a99a2b408d2dbae
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 307c5b8fcd0533ab98bc51e27a6ce461
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 829c04ff4c07513c0b3ef05c03e337b5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f17af0e895dda5eb98efc68066e84c54
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 277167f3812afff1ffacb4a934379fc3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2cb1dc3a9c72972e425ae2ef3eb597cd
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36aeaa3a213e968d4b5b679d3a2c97fe
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9241daca4fdd034a82372db50e1a0f3f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c14574d9cd00cf2b5a7f77e53cd57885
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 793de39236570aba83ab9b737cb521c9
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 16591c0f27d60e29b85a96c33861a7ef
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 44fb5c4d4f5cb79be5c174a3b1c97348
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 674d2b61633d162be59dde04222f4740
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b4750ff263a65e1f9e924ccfd98f3e37
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 62d0662d6eaeddedebae7f7ea3a4f6b6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 70c46bb30692be657f7eaa93ebad9897
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 323994cfb9da285a5d9642e1759b224a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1dbf57877b7b17385c85d0b54851e371
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dfa5c097cdc1532ac071d57b1d28d1bd
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a0c53fa37311fc10bd2a9981f513174
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ba4f970c0a25c41814bdae2e506be3b4
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2dce3acb727cd13ccd76d425ea56e4f6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5160474d504b9b3eefb68d35f245f4b3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 41a8a947766635dec37553d9a6c0cbb7
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 25d6cfe6881f2bf497dd14cd4ddf445b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 41c78c135ed9e98c096640647265da1e
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5a4d404d8917e353e92a21072c3b2305
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 02bc96846b3fdc71643f384cd3cc3eaf
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ba4a9143f4e5d4048521c4f8877d88e
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a1f6258c877d5fcd8964484538bfc92c
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0edd33d3c621e546455bd8ba1418bec8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: c0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4bc3f883450c113c64ca42e1112a9e87
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: e0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 72a1da770f5d7ac4c9ef94d822affd97
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: f0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 970014d634e2b7650777e8e84d03ccd8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: f8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f17e79aed0db7e279e955b5f493875a7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9ed5a75136a940d0963da379db4af26a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c4295f83465c7755e8fa364bac6a7ea5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b1d758256b28fd850ad4944208cf1155
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 42ffb34c743de4d88ca38011c990890b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9958f0ecea8b2172c0c1995f9182c0f3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 956d7798fac20f82a8823f984d06f7f5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a01bf44f2d16be928ca44aaf7b9b106b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5f1a33e50d40d103764c76bd4c6b6f8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2637050c9fc0d4817e2d69de878aee8d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 113ecbe4a453269a0dd26069467fb5b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 97d0754fe68f11b9e375d070a608c884
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c6a0b3e998d05068a5399778405200b4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: df556a33438db87bc41b1752c55e5e49
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 90fb128d3a1af6e548521bb962bf1f05
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 26298e9c1db517c215fadfb7d2a8d691
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a6cb761d61f8292d0df393a279ad0380
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 12acd89b13cd5f8726e34d44fd486108
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 95b1703fc57ba09fe0c3580febdd7ed4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: de11722d893e9f9121c381becc1da59a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6d114ccb27bf391012e8974c546d9bf2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5ce37e17eb4646ecfac29b9cc38d9340
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 18c1b6e2157122056d0243d8a165cddb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 99693e6a59d1366c74d823562d7e1431
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6c7c64dc84a8bba758ed17eb025a57e3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e17bc79f30eaab2fac2cbbe3458d687a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1114bc2028009b923f0b01915ce5e7c4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9c28524a16a1e1c1452971caa8d13476
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ed62e16363638360fdd6ad62112794f0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5a8688f0b2a2c16224c161658ffd4044
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 23f710842b9bb9c32f26648c786807ca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 44a98bf11e163f632c47ec6a49683a89
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0f18aff94274696d9b61848bd50ac5e5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 82408571c3e2424540207f833b6dda69
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 303ff996947f0c7d1f43c8f3027b9b75
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7df4daf4ad29a3615a9b6ece5c99518a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c72954a48d0774db0b4971c526260415
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1df9b76112dc6531e07d2cfda04411f0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8e4d8e699119e1fc87545a647fb1d34f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e6c4807ae11f36f091c57d9fb68548d1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8ebf73aad49c82007f77a5c1ccec6ab4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4fb288cc2040049001d2c7585ad123fc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 04497110efb9dceb13e2b13fb4465564
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 75550e6cb5a88e49634c9ab69eda0430
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b6768473ce9843ea66a81405dd50b345
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cb2f430383f9084e03a653571e065de6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ff4e66c07bae3e79fb7d210847a3b0ba
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7b90785125505fad59b13c186dd66ce3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8b527a6aebdaec9eaef8eda2cb7783e5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 43fdaf53ebbc9880c228617d6a9b548b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 53786104b9744b98f052c46f1c850d0b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5ab3013dd1e61df06cbaf34ca2aee78
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7470469be9723030fdcc73a8cd4fbb10
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a35a63f5343ebe9ef8167bcb48ad122e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fd8687f0757a210e9fdf181204c30863
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7a181e84bd5457d26a88fbae96018fb0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 653317b9362b6f9b9e1a580e68d494b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 995c9dc0b689f03c45867b5faa5c18d1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77a4d96d56dda398b9aabecfc75729fd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 84be19e053635f09f2665e7bae85b42d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 32cd652842926aea4aa6137bb2be2b5e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 493d4a4f38ebb337d10aa84e9171a554
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d9bff7ff454b0ec5a4a2a69566e2cb84
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3535d565ace3f31eb249ba2cc6765d7a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f60e91fc3269eecf3231c6e9945697c6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ab69cfadf51f8e604d9cc37182f6635a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7866373f24a0b6ed56e0d96fcdafb877
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ea448c2aac954f5d812e9d78494446a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: acc5599dd8ac02239a0fef4a36dd1668
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d8764468bb103828cf7e1473ce895073
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b0d02893683b9f180458e4aa6b73982
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 96d9b017d302df410a937dcdb8bb6e43
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ef1623cc44313cff440b1594a7e21cc6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 284ca2fa35807b8b0ae4d19e11d7dbd7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f2e976875755f9401d54f36e2a23a594
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ec198a18e10e532403b7e20887c8dd80
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 545d50ebd919e4a6949d96ad47e46a80
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dbdfb527060e0a71009c7bb0c68f1d44
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9cfa1322ea33da2173a024f2ff0d896d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8785b1a75b0f3bd958dcd0e29318c521
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 38f67b9e98e4a97b6df030a9fcdd0104
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 192afffb2c880e82b05926d0fc6c448b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6a7980ce7b105cf530952d74daaf798c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ea3695e1351b9d6858bd958cf513ef6c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6da0490ba0ba0343b935681d2cce5ba1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f0ea23af08534011c60009ab29ada2f1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ff13806cf19cc38721554d7c0fcdcd4b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6838af1f4f69bae9d85dd188dcdf0688
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Ciphertext: 36cf44c92d550bfb1ed28ef583ddf5d7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Ciphertext: d06e3195b5376f109d5c4ec6c5d62ced
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Ciphertext: c440de014d3d610707279b13242a5c36
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Ciphertext: f0c5c6ffa5e0bd3a94c88f6b6f7c16b9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3e40c3901cd7effc22bffc35dee0b4d9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Ciphertext: b63305c72bedfab97382c406d0c49bc6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 36bbaab22a6bd4925a99a2b408d2dbae
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 307c5b8fcd0533ab98bc51e27a6ce461
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Ciphertext: 829c04ff4c07513c0b3ef05c03e337b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Ciphertext: f17af0e895dda5eb98efc68066e84c54
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Ciphertext: 277167f3812afff1ffacb4a934379fc3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2cb1dc3a9c72972e425ae2ef3eb597cd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Ciphertext: 36aeaa3a213e968d4b5b679d3a2c97fe
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Ciphertext: 9241daca4fdd034a82372db50e1a0f3f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Ciphertext: c14574d9cd00cf2b5a7f77e53cd57885
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Ciphertext: 793de39236570aba83ab9b737cb521c9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Ciphertext: 16591c0f27d60e29b85a96c33861a7ef
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Ciphertext: 44fb5c4d4f5cb79be5c174a3b1c97348
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Ciphertext: 674d2b61633d162be59dde04222f4740
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Ciphertext: b4750ff263a65e1f9e924ccfd98f3e37
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Ciphertext: 62d0662d6eaeddedebae7f7ea3a4f6b6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Ciphertext: 70c46bb30692be657f7eaa93ebad9897
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Ciphertext: 323994cfb9da285a5d9642e1759b224a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Ciphertext: 1dbf57877b7b17385c85d0b54851e371
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Ciphertext: dfa5c097cdc1532ac071d57b1d28d1bd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Ciphertext: 3a0c53fa37311fc10bd2a9981f513174
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Ciphertext: ba4f970c0a25c41814bdae2e506be3b4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Ciphertext: 2dce3acb727cd13ccd76d425ea56e4f6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Ciphertext: 5160474d504b9b3eefb68d35f245f4b3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Ciphertext: 41a8a947766635dec37553d9a6c0cbb7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Ciphertext: 25d6cfe6881f2bf497dd14cd4ddf445b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Ciphertext: 41c78c135ed9e98c096640647265da1e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Ciphertext: 5a4d404d8917e353e92a21072c3b2305
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Ciphertext: 02bc96846b3fdc71643f384cd3cc3eaf
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Ciphertext: 9ba4a9143f4e5d4048521c4f8877d88e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Ciphertext: a1f6258c877d5fcd8964484538bfc92c
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_var_txt.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_var_txt.txt
new file mode 100644
index 0000000..1f11c12
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_cbc_var_txt.txt
@@ -0,0 +1,1794 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarTxt128.rsp -extra-labels=Cipher=AES-128-CBC"
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 80000000000000000000000000000000
+Ciphertext: 3ad78e726c1ec02b7ebfe92b23d9ec34
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: c0000000000000000000000000000000
+Ciphertext: aae5939c8efdf2f04e60b9fe7117b2c2
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: e0000000000000000000000000000000
+Ciphertext: f031d4d74f5dcbf39daaf8ca3af6e527
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: f0000000000000000000000000000000
+Ciphertext: 96d9fd5cc4f07441727df0f33e401a36
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: f8000000000000000000000000000000
+Ciphertext: 30ccdb044646d7e1f3ccea3dca08b8c0
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fc000000000000000000000000000000
+Ciphertext: 16ae4ce5042a67ee8e177b7c587ecc82
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fe000000000000000000000000000000
+Ciphertext: b6da0bb11a23855d9c5cb1b4c6412e0a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ff000000000000000000000000000000
+Ciphertext: db4f1aa530967d6732ce4715eb0ee24b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ff800000000000000000000000000000
+Ciphertext: a81738252621dd180a34f3455b4baa2f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffc00000000000000000000000000000
+Ciphertext: 77e2b508db7fd89234caf7939ee5621a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffe00000000000000000000000000000
+Ciphertext: b8499c251f8442ee13f0933b688fcd19
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fff00000000000000000000000000000
+Ciphertext: 965135f8a81f25c9d630b17502f68e53
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fff80000000000000000000000000000
+Ciphertext: 8b87145a01ad1c6cede995ea3670454f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffc0000000000000000000000000000
+Ciphertext: 8eae3b10a0c8ca6d1d3b0fa61e56b0b2
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffe0000000000000000000000000000
+Ciphertext: 64b4d629810fda6bafdf08f3b0d8d2c5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffff0000000000000000000000000000
+Ciphertext: d7e5dbd3324595f8fdc7d7c571da6c2a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffff8000000000000000000000000000
+Ciphertext: f3f72375264e167fca9de2c1527d9606
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffc000000000000000000000000000
+Ciphertext: 8ee79dd4f401ff9b7ea945d86666c13b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffe000000000000000000000000000
+Ciphertext: dd35cea2799940b40db3f819cb94c08b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffff000000000000000000000000000
+Ciphertext: 6941cb6b3e08c2b7afa581ebdd607b87
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffff800000000000000000000000000
+Ciphertext: 2c20f439f6bb097b29b8bd6d99aad799
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffc00000000000000000000000000
+Ciphertext: 625d01f058e565f77ae86378bd2c49b3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffe00000000000000000000000000
+Ciphertext: c0b5fd98190ef45fbb4301438d095950
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffff00000000000000000000000000
+Ciphertext: 13001ff5d99806efd25da34f56be854b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffff80000000000000000000000000
+Ciphertext: 3b594c60f5c8277a5113677f94208d82
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffc0000000000000000000000000
+Ciphertext: e9c0fc1818e4aa46bd2e39d638f89e05
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffe0000000000000000000000000
+Ciphertext: f8023ee9c3fdc45a019b4e985c7e1a54
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffff0000000000000000000000000
+Ciphertext: 35f40182ab4662f3023baec1ee796b57
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffff8000000000000000000000000
+Ciphertext: 3aebbad7303649b4194a6945c6cc3694
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffc000000000000000000000000
+Ciphertext: a2124bea53ec2834279bed7f7eb0f938
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffe000000000000000000000000
+Ciphertext: b9fb4399fa4facc7309e14ec98360b0a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffff000000000000000000000000
+Ciphertext: c26277437420c5d634f715aea81a9132
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffff800000000000000000000000
+Ciphertext: 171a0e1b2dd424f0e089af2c4c10f32f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffc00000000000000000000000
+Ciphertext: 7cadbe402d1b208fe735edce00aee7ce
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffe00000000000000000000000
+Ciphertext: 43b02ff929a1485af6f5c6d6558baa0f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffff00000000000000000000000
+Ciphertext: 092faacc9bf43508bf8fa8613ca75dea
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffff80000000000000000000000
+Ciphertext: cb2bf8280f3f9742c7ed513fe802629c
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffc0000000000000000000000
+Ciphertext: 215a41ee442fa992a6e323986ded3f68
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffe0000000000000000000000
+Ciphertext: f21e99cf4f0f77cea836e11a2fe75fb1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffff0000000000000000000000
+Ciphertext: 95e3a0ca9079e646331df8b4e70d2cd6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffff8000000000000000000000
+Ciphertext: 4afe7f120ce7613f74fc12a01a828073
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffc000000000000000000000
+Ciphertext: 827f000e75e2c8b9d479beed913fe678
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffe000000000000000000000
+Ciphertext: 35830c8e7aaefe2d30310ef381cbf691
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffff000000000000000000000
+Ciphertext: 191aa0f2c8570144f38657ea4085ebe5
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffff800000000000000000000
+Ciphertext: 85062c2c909f15d9269b6c18ce99c4f0
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffc00000000000000000000
+Ciphertext: 678034dc9e41b5a560ed239eeab1bc78
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffe00000000000000000000
+Ciphertext: c2f93a4ce5ab6d5d56f1b93cf19911c1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffff00000000000000000000
+Ciphertext: 1c3112bcb0c1dcc749d799743691bf82
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffff80000000000000000000
+Ciphertext: 00c55bd75c7f9c881989d3ec1911c0d4
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffc0000000000000000000
+Ciphertext: ea2e6b5ef182b7dff3629abd6a12045f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffe0000000000000000000
+Ciphertext: 22322327e01780b17397f24087f8cc6f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffff0000000000000000000
+Ciphertext: c9cacb5cd11692c373b2411768149ee7
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffff8000000000000000000
+Ciphertext: a18e3dbbca577860dab6b80da3139256
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffc000000000000000000
+Ciphertext: 79b61c37bf328ecca8d743265a3d425c
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffe000000000000000000
+Ciphertext: d2d99c6bcc1f06fda8e27e8ae3f1ccc7
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffff000000000000000000
+Ciphertext: 1bfd4b91c701fd6b61b7f997829d663b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffff800000000000000000
+Ciphertext: 11005d52f25f16bdc9545a876a63490a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffc00000000000000000
+Ciphertext: 3a4d354f02bb5a5e47d39666867f246a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffe00000000000000000
+Ciphertext: d451b8d6e1e1a0ebb155fbbf6e7b7dc3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffff00000000000000000
+Ciphertext: 6898d4f42fa7ba6a10ac05e87b9f2080
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffff80000000000000000
+Ciphertext: b611295e739ca7d9b50f8e4c0e754a3f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffc0000000000000000
+Ciphertext: 7d33fc7d8abe3ca1936759f8f5deaf20
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffe0000000000000000
+Ciphertext: 3b5e0f566dc96c298f0c12637539b25c
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffff0000000000000000
+Ciphertext: f807c3e7985fe0f5a50e2cdb25c5109e
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffff8000000000000000
+Ciphertext: 41f992a856fb278b389a62f5d274d7e9
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffc000000000000000
+Ciphertext: 10d3ed7a6fe15ab4d91acbc7d0767ab1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffe000000000000000
+Ciphertext: 21feecd45b2e675973ac33bf0c5424fc
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffff000000000000000
+Ciphertext: 1480cb3955ba62d09eea668f7c708817
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffff800000000000000
+Ciphertext: 66404033d6b72b609354d5496e7eb511
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffc00000000000000
+Ciphertext: 1c317a220a7d700da2b1e075b00266e1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffe00000000000000
+Ciphertext: ab3b89542233f1271bf8fd0c0f403545
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffff00000000000000
+Ciphertext: d93eae966fac46dca927d6b114fa3f9e
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffff80000000000000
+Ciphertext: 1bdec521316503d9d5ee65df3ea94ddf
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffc0000000000000
+Ciphertext: eef456431dea8b4acf83bdae3717f75f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffe0000000000000
+Ciphertext: 06f2519a2fafaa596bfef5cfa15c21b9
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffff0000000000000
+Ciphertext: 251a7eac7e2fe809e4aa8d0d7012531a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffff8000000000000
+Ciphertext: 3bffc16e4c49b268a20f8d96a60b4058
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffc000000000000
+Ciphertext: e886f9281999c5bb3b3e8862e2f7c988
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffe000000000000
+Ciphertext: 563bf90d61beef39f48dd625fcef1361
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffff000000000000
+Ciphertext: 4d37c850644563c69fd0acd9a049325b
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffff800000000000
+Ciphertext: b87c921b91829ef3b13ca541ee1130a6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffc00000000000
+Ciphertext: 2e65eb6b6ea383e109accce8326b0393
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffe00000000000
+Ciphertext: 9ca547f7439edc3e255c0f4d49aa8990
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffff00000000000
+Ciphertext: a5e652614c9300f37816b1f9fd0c87f9
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffff80000000000
+Ciphertext: 14954f0b4697776f44494fe458d814ed
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffc0000000000
+Ciphertext: 7c8d9ab6c2761723fe42f8bb506cbcf7
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffe0000000000
+Ciphertext: db7e1932679fdd99742aab04aa0d5a80
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffff0000000000
+Ciphertext: 4c6a1c83e568cd10f27c2d73ded19c28
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffff8000000000
+Ciphertext: 90ecbe6177e674c98de412413f7ac915
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffc000000000
+Ciphertext: 90684a2ac55fe1ec2b8ebd5622520b73
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffe000000000
+Ciphertext: 7472f9a7988607ca79707795991035e6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffff000000000
+Ciphertext: 56aff089878bf3352f8df172a3ae47d8
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffff800000000
+Ciphertext: 65c0526cbe40161b8019a2a3171abd23
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffc00000000
+Ciphertext: 377be0be33b4e3e310b4aabda173f84f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffe00000000
+Ciphertext: 9402e9aa6f69de6504da8d20c4fcaa2f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffff00000000
+Ciphertext: 123c1f4af313ad8c2ce648b2e71fb6e1
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffff80000000
+Ciphertext: 1ffc626d30203dcdb0019fb80f726cf4
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffc0000000
+Ciphertext: 76da1fbe3a50728c50fd2e621b5ad885
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffe0000000
+Ciphertext: 082eb8be35f442fb52668e16a591d1d6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffff0000000
+Ciphertext: e656f9ecf5fe27ec3e4a73d00c282fb3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffff8000000
+Ciphertext: 2ca8209d63274cd9a29bb74bcd77683a
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffc000000
+Ciphertext: 79bf5dce14bb7dd73a8e3611de7ce026
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffe000000
+Ciphertext: 3c849939a5d29399f344c4a0eca8a576
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffff000000
+Ciphertext: ed3c0a94d59bece98835da7aa4f07ca2
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffff800000
+Ciphertext: 63919ed4ce10196438b6ad09d99cd795
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffc00000
+Ciphertext: 7678f3a833f19fea95f3c6029e2bc610
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffe00000
+Ciphertext: 3aa426831067d36b92be7c5f81c13c56
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffff00000
+Ciphertext: 9272e2d2cdd11050998c845077a30ea0
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffff80000
+Ciphertext: 088c4b53f5ec0ff814c19adae7f6246c
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffc0000
+Ciphertext: 4010a5e401fdf0a0354ddbcc0d012b17
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffe0000
+Ciphertext: a87a385736c0a6189bd6589bd8445a93
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffff0000
+Ciphertext: 545f2b83d9616dccf60fa9830e9cd287
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffff8000
+Ciphertext: 4b706f7f92406352394037a6d4f4688d
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffc000
+Ciphertext: b7972b3941c44b90afa7b264bfba7387
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffe000
+Ciphertext: 6f45732cf10881546f0fd23896d2bb60
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffff000
+Ciphertext: 2e3579ca15af27f64b3c955a5bfc30ba
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffff800
+Ciphertext: 34a2c5a91ae2aec99b7d1b5fa6780447
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffc00
+Ciphertext: a4d6616bd04f87335b0e53351227a9ee
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffe00
+Ciphertext: 7f692b03945867d16179a8cefc83ea3f
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffff00
+Ciphertext: 3bd141ee84a0e6414a26e7a4f281f8a2
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffff80
+Ciphertext: d1788f572d98b2b16ec5d5f3922b99bc
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffc0
+Ciphertext: 0833ff6f61d98a57b288e8c3586b85a6
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffe0
+Ciphertext: 8568261797de176bf0b43becc6285afb
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffff0
+Ciphertext: f9b0fda0c4a898f5b9e6f661c4ce4d07
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffff8
+Ciphertext: 8ade895913685c67c5269f8aae42983e
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffffc
+Ciphertext: 39bde67d5c8ed8a8b1c37eb8fa9f5ac0
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffffe
+Ciphertext: 5c005e72c1418c44f569f2ea33ba54f3
+
+Cipher: AES-128-CBC
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffff
+Ciphertext: 3f5b8cc9ea855a0afa7347d23e8d664e
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3ad78e726c1ec02b7ebfe92b23d9ec34
+Plaintext: 80000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: aae5939c8efdf2f04e60b9fe7117b2c2
+Plaintext: c0000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f031d4d74f5dcbf39daaf8ca3af6e527
+Plaintext: e0000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 96d9fd5cc4f07441727df0f33e401a36
+Plaintext: f0000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 30ccdb044646d7e1f3ccea3dca08b8c0
+Plaintext: f8000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 16ae4ce5042a67ee8e177b7c587ecc82
+Plaintext: fc000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b6da0bb11a23855d9c5cb1b4c6412e0a
+Plaintext: fe000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: db4f1aa530967d6732ce4715eb0ee24b
+Plaintext: ff000000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a81738252621dd180a34f3455b4baa2f
+Plaintext: ff800000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77e2b508db7fd89234caf7939ee5621a
+Plaintext: ffc00000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b8499c251f8442ee13f0933b688fcd19
+Plaintext: ffe00000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 965135f8a81f25c9d630b17502f68e53
+Plaintext: fff00000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8b87145a01ad1c6cede995ea3670454f
+Plaintext: fff80000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8eae3b10a0c8ca6d1d3b0fa61e56b0b2
+Plaintext: fffc0000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 64b4d629810fda6bafdf08f3b0d8d2c5
+Plaintext: fffe0000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d7e5dbd3324595f8fdc7d7c571da6c2a
+Plaintext: ffff0000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f3f72375264e167fca9de2c1527d9606
+Plaintext: ffff8000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8ee79dd4f401ff9b7ea945d86666c13b
+Plaintext: ffffc000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dd35cea2799940b40db3f819cb94c08b
+Plaintext: ffffe000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6941cb6b3e08c2b7afa581ebdd607b87
+Plaintext: fffff000000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2c20f439f6bb097b29b8bd6d99aad799
+Plaintext: fffff800000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 625d01f058e565f77ae86378bd2c49b3
+Plaintext: fffffc00000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c0b5fd98190ef45fbb4301438d095950
+Plaintext: fffffe00000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 13001ff5d99806efd25da34f56be854b
+Plaintext: ffffff00000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3b594c60f5c8277a5113677f94208d82
+Plaintext: ffffff80000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e9c0fc1818e4aa46bd2e39d638f89e05
+Plaintext: ffffffc0000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f8023ee9c3fdc45a019b4e985c7e1a54
+Plaintext: ffffffe0000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 35f40182ab4662f3023baec1ee796b57
+Plaintext: fffffff0000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3aebbad7303649b4194a6945c6cc3694
+Plaintext: fffffff8000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a2124bea53ec2834279bed7f7eb0f938
+Plaintext: fffffffc000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b9fb4399fa4facc7309e14ec98360b0a
+Plaintext: fffffffe000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c26277437420c5d634f715aea81a9132
+Plaintext: ffffffff000000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 171a0e1b2dd424f0e089af2c4c10f32f
+Plaintext: ffffffff800000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7cadbe402d1b208fe735edce00aee7ce
+Plaintext: ffffffffc00000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 43b02ff929a1485af6f5c6d6558baa0f
+Plaintext: ffffffffe00000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 092faacc9bf43508bf8fa8613ca75dea
+Plaintext: fffffffff00000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cb2bf8280f3f9742c7ed513fe802629c
+Plaintext: fffffffff80000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 215a41ee442fa992a6e323986ded3f68
+Plaintext: fffffffffc0000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f21e99cf4f0f77cea836e11a2fe75fb1
+Plaintext: fffffffffe0000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 95e3a0ca9079e646331df8b4e70d2cd6
+Plaintext: ffffffffff0000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4afe7f120ce7613f74fc12a01a828073
+Plaintext: ffffffffff8000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 827f000e75e2c8b9d479beed913fe678
+Plaintext: ffffffffffc000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 35830c8e7aaefe2d30310ef381cbf691
+Plaintext: ffffffffffe000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 191aa0f2c8570144f38657ea4085ebe5
+Plaintext: fffffffffff000000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 85062c2c909f15d9269b6c18ce99c4f0
+Plaintext: fffffffffff800000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 678034dc9e41b5a560ed239eeab1bc78
+Plaintext: fffffffffffc00000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c2f93a4ce5ab6d5d56f1b93cf19911c1
+Plaintext: fffffffffffe00000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c3112bcb0c1dcc749d799743691bf82
+Plaintext: ffffffffffff00000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 00c55bd75c7f9c881989d3ec1911c0d4
+Plaintext: ffffffffffff80000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ea2e6b5ef182b7dff3629abd6a12045f
+Plaintext: ffffffffffffc0000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 22322327e01780b17397f24087f8cc6f
+Plaintext: ffffffffffffe0000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c9cacb5cd11692c373b2411768149ee7
+Plaintext: fffffffffffff0000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a18e3dbbca577860dab6b80da3139256
+Plaintext: fffffffffffff8000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 79b61c37bf328ecca8d743265a3d425c
+Plaintext: fffffffffffffc000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d2d99c6bcc1f06fda8e27e8ae3f1ccc7
+Plaintext: fffffffffffffe000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1bfd4b91c701fd6b61b7f997829d663b
+Plaintext: ffffffffffffff000000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 11005d52f25f16bdc9545a876a63490a
+Plaintext: ffffffffffffff800000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3a4d354f02bb5a5e47d39666867f246a
+Plaintext: ffffffffffffffc00000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d451b8d6e1e1a0ebb155fbbf6e7b7dc3
+Plaintext: ffffffffffffffe00000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6898d4f42fa7ba6a10ac05e87b9f2080
+Plaintext: fffffffffffffff00000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b611295e739ca7d9b50f8e4c0e754a3f
+Plaintext: fffffffffffffff80000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7d33fc7d8abe3ca1936759f8f5deaf20
+Plaintext: fffffffffffffffc0000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3b5e0f566dc96c298f0c12637539b25c
+Plaintext: fffffffffffffffe0000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f807c3e7985fe0f5a50e2cdb25c5109e
+Plaintext: ffffffffffffffff0000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 41f992a856fb278b389a62f5d274d7e9
+Plaintext: ffffffffffffffff8000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 10d3ed7a6fe15ab4d91acbc7d0767ab1
+Plaintext: ffffffffffffffffc000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 21feecd45b2e675973ac33bf0c5424fc
+Plaintext: ffffffffffffffffe000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1480cb3955ba62d09eea668f7c708817
+Plaintext: fffffffffffffffff000000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 66404033d6b72b609354d5496e7eb511
+Plaintext: fffffffffffffffff800000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c317a220a7d700da2b1e075b00266e1
+Plaintext: fffffffffffffffffc00000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ab3b89542233f1271bf8fd0c0f403545
+Plaintext: fffffffffffffffffe00000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d93eae966fac46dca927d6b114fa3f9e
+Plaintext: ffffffffffffffffff00000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1bdec521316503d9d5ee65df3ea94ddf
+Plaintext: ffffffffffffffffff80000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eef456431dea8b4acf83bdae3717f75f
+Plaintext: ffffffffffffffffffc0000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 06f2519a2fafaa596bfef5cfa15c21b9
+Plaintext: ffffffffffffffffffe0000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 251a7eac7e2fe809e4aa8d0d7012531a
+Plaintext: fffffffffffffffffff0000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3bffc16e4c49b268a20f8d96a60b4058
+Plaintext: fffffffffffffffffff8000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e886f9281999c5bb3b3e8862e2f7c988
+Plaintext: fffffffffffffffffffc000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 563bf90d61beef39f48dd625fcef1361
+Plaintext: fffffffffffffffffffe000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4d37c850644563c69fd0acd9a049325b
+Plaintext: ffffffffffffffffffff000000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b87c921b91829ef3b13ca541ee1130a6
+Plaintext: ffffffffffffffffffff800000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e65eb6b6ea383e109accce8326b0393
+Plaintext: ffffffffffffffffffffc00000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9ca547f7439edc3e255c0f4d49aa8990
+Plaintext: ffffffffffffffffffffe00000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a5e652614c9300f37816b1f9fd0c87f9
+Plaintext: fffffffffffffffffffff00000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 14954f0b4697776f44494fe458d814ed
+Plaintext: fffffffffffffffffffff80000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7c8d9ab6c2761723fe42f8bb506cbcf7
+Plaintext: fffffffffffffffffffffc0000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: db7e1932679fdd99742aab04aa0d5a80
+Plaintext: fffffffffffffffffffffe0000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4c6a1c83e568cd10f27c2d73ded19c28
+Plaintext: ffffffffffffffffffffff0000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 90ecbe6177e674c98de412413f7ac915
+Plaintext: ffffffffffffffffffffff8000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 90684a2ac55fe1ec2b8ebd5622520b73
+Plaintext: ffffffffffffffffffffffc000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7472f9a7988607ca79707795991035e6
+Plaintext: ffffffffffffffffffffffe000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 56aff089878bf3352f8df172a3ae47d8
+Plaintext: fffffffffffffffffffffff000000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 65c0526cbe40161b8019a2a3171abd23
+Plaintext: fffffffffffffffffffffff800000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 377be0be33b4e3e310b4aabda173f84f
+Plaintext: fffffffffffffffffffffffc00000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9402e9aa6f69de6504da8d20c4fcaa2f
+Plaintext: fffffffffffffffffffffffe00000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 123c1f4af313ad8c2ce648b2e71fb6e1
+Plaintext: ffffffffffffffffffffffff00000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ffc626d30203dcdb0019fb80f726cf4
+Plaintext: ffffffffffffffffffffffff80000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 76da1fbe3a50728c50fd2e621b5ad885
+Plaintext: ffffffffffffffffffffffffc0000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 082eb8be35f442fb52668e16a591d1d6
+Plaintext: ffffffffffffffffffffffffe0000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e656f9ecf5fe27ec3e4a73d00c282fb3
+Plaintext: fffffffffffffffffffffffff0000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2ca8209d63274cd9a29bb74bcd77683a
+Plaintext: fffffffffffffffffffffffff8000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 79bf5dce14bb7dd73a8e3611de7ce026
+Plaintext: fffffffffffffffffffffffffc000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3c849939a5d29399f344c4a0eca8a576
+Plaintext: fffffffffffffffffffffffffe000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ed3c0a94d59bece98835da7aa4f07ca2
+Plaintext: ffffffffffffffffffffffffff000000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 63919ed4ce10196438b6ad09d99cd795
+Plaintext: ffffffffffffffffffffffffff800000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7678f3a833f19fea95f3c6029e2bc610
+Plaintext: ffffffffffffffffffffffffffc00000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3aa426831067d36b92be7c5f81c13c56
+Plaintext: ffffffffffffffffffffffffffe00000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9272e2d2cdd11050998c845077a30ea0
+Plaintext: fffffffffffffffffffffffffff00000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 088c4b53f5ec0ff814c19adae7f6246c
+Plaintext: fffffffffffffffffffffffffff80000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4010a5e401fdf0a0354ddbcc0d012b17
+Plaintext: fffffffffffffffffffffffffffc0000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a87a385736c0a6189bd6589bd8445a93
+Plaintext: fffffffffffffffffffffffffffe0000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 545f2b83d9616dccf60fa9830e9cd287
+Plaintext: ffffffffffffffffffffffffffff0000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4b706f7f92406352394037a6d4f4688d
+Plaintext: ffffffffffffffffffffffffffff8000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b7972b3941c44b90afa7b264bfba7387
+Plaintext: ffffffffffffffffffffffffffffc000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6f45732cf10881546f0fd23896d2bb60
+Plaintext: ffffffffffffffffffffffffffffe000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e3579ca15af27f64b3c955a5bfc30ba
+Plaintext: fffffffffffffffffffffffffffff000
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 34a2c5a91ae2aec99b7d1b5fa6780447
+Plaintext: fffffffffffffffffffffffffffff800
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a4d6616bd04f87335b0e53351227a9ee
+Plaintext: fffffffffffffffffffffffffffffc00
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7f692b03945867d16179a8cefc83ea3f
+Plaintext: fffffffffffffffffffffffffffffe00
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3bd141ee84a0e6414a26e7a4f281f8a2
+Plaintext: ffffffffffffffffffffffffffffff00
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d1788f572d98b2b16ec5d5f3922b99bc
+Plaintext: ffffffffffffffffffffffffffffff80
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0833ff6f61d98a57b288e8c3586b85a6
+Plaintext: ffffffffffffffffffffffffffffffc0
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8568261797de176bf0b43becc6285afb
+Plaintext: ffffffffffffffffffffffffffffffe0
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f9b0fda0c4a898f5b9e6f661c4ce4d07
+Plaintext: fffffffffffffffffffffffffffffff0
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8ade895913685c67c5269f8aae42983e
+Plaintext: fffffffffffffffffffffffffffffff8
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 39bde67d5c8ed8a8b1c37eb8fa9f5ac0
+Plaintext: fffffffffffffffffffffffffffffffc
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5c005e72c1418c44f569f2ea33ba54f3
+Plaintext: fffffffffffffffffffffffffffffffe
+
+Cipher: AES-128-CBC
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3f5b8cc9ea855a0afa7347d23e8d664e
+Plaintext: ffffffffffffffffffffffffffffffff
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_gf_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_gf_sbox.txt
new file mode 100644
index 0000000..578175b
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_gf_sbox.txt
@@ -0,0 +1,100 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCGFSbox128.rsp -extra-labels=Cipher=AES-128-CTR -swap-iv-plaintext"
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: f34481ec3cc627bacd5dc3fb08f273e6
+Ciphertext: 0336763e966d92595a567cc9ce537f5e
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 9798c4640bad75c7c3227db910174e72
+Ciphertext: a9a1631bf4996954ebc093957b234589
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 96ab5c2ff612d9dfaae8c31f30c42168
+Ciphertext: ff4f8391a6a40ca5b25d23bedd44a597
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 6a118a874519e64e9963798a503f1d35
+Ciphertext: dc43be40be0e53712f7e2bf5ca707209
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: cb9fceec81286ca3e989bd979b0cb284
+Ciphertext: 92beedab1895a94faa69b632e5cc47ce
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: b26aeb1874e47ca8358ff22378f09144
+Ciphertext: 459264f4798f6a78bacb89c15ed3d601
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 58c8e00b2631686d54eab84b91f0aca1
+Ciphertext: 08a4e2efec8a8e3312ca7460b9040bbf
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0336763e966d92595a567cc9ce537f5e
+IV: f34481ec3cc627bacd5dc3fb08f273e6
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a9a1631bf4996954ebc093957b234589
+IV: 9798c4640bad75c7c3227db910174e72
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff4f8391a6a40ca5b25d23bedd44a597
+IV: 96ab5c2ff612d9dfaae8c31f30c42168
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dc43be40be0e53712f7e2bf5ca707209
+IV: 6a118a874519e64e9963798a503f1d35
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 92beedab1895a94faa69b632e5cc47ce
+IV: cb9fceec81286ca3e989bd979b0cb284
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 459264f4798f6a78bacb89c15ed3d601
+IV: b26aeb1874e47ca8358ff22378f09144
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 08a4e2efec8a8e3312ca7460b9040bbf
+IV: 58c8e00b2631686d54eab84b91f0aca1
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_key_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_key_sbox.txt
new file mode 100644
index 0000000..aa2a49e
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_key_sbox.txt
@@ -0,0 +1,296 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCKeySbox128.rsp -extra-labels=Cipher=AES-128-CTR"
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 10a58869d74be5a374cf867cfb473859
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6d251e6944b051e04eaa6fb4dbf78465
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: caea65cdbb75e9169ecd22ebe6e54675
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6e29201190152df4ee058139def610bb
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: a2e2fa9baf7d20822ca9f0542f764a41
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c3b44b95d9d2f25670eee9a0de099fa3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: b6364ac4e1de1e285eaf144a2415f7a0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5d9b05578fc944b3cf1ccf0e746cd581
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 64cf9c7abc50b888af65f49d521944b2
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f7efc89d5dba578104016ce5ad659c05
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 47d6742eefcc0465dc96355e851b64d9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0306194f666d183624aa230a8b264ae7
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 3eb39790678c56bee34bbcdeccf6cdb5
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 858075d536d79ccee571f7d7204b1f67
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 64110a924f0743d500ccadae72c13427
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 35870c6a57e9e92314bcb8087cde72ce
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 18d8126516f8a12ab1a36d9f04d68e51
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c68e9be5ec41e22c825b7c7affb4363
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: f530357968578480b398a3c251cd1093
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f5df39990fc688f1b07224cc03e86cea
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: da84367f325d42d601b4326964802e8e
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bba071bcb470f8f6586e5d3add18bc66
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: e37b1c6aa2846f6fdb413f238b089f23
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 43c9f7e62f5d288bb27aa40ef8fe1ea8
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 6c002b682483e0cabcc731c253be5674
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3580d19cff44f1014a7c966a69059de5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 143ae8ed6555aba96110ab58893a8ae1
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 806da864dd29d48deafbe764f8202aef
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: b69418a85332240dc82492353956ae0c
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a303d940ded8f0baff6f75414cac5243
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 71b5c08a1993e1362e4d0ce9b22b78d5
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c2dabd117f8a3ecabfbb11d12194d9d0
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: e234cdca2606b81f29408d5f6da21206
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fff60a4740086b3b9c56195b98d91a7b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 13237c49074a3da078dc1d828bb78c6f
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8146a08e2357f0caa30ca8c94d1a0544
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 3071a2a48fe6cbd04f1a129098e308f8
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4b98e06d356deb07ebb824e5713f7be3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 90f42ec0f68385f2ffc5dfc03a654dce
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7a20a53d460fc9ce0423a7a0764c6cf2
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: febd9a24d8b65c1c787d50a4ed3619a9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f4a70d8af877f9b02b4c40df57d45b17
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 10a58869d74be5a374cf867cfb473859
+IV: 00000000000000000000000000000000
+Ciphertext: 6d251e6944b051e04eaa6fb4dbf78465
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: caea65cdbb75e9169ecd22ebe6e54675
+IV: 00000000000000000000000000000000
+Ciphertext: 6e29201190152df4ee058139def610bb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: a2e2fa9baf7d20822ca9f0542f764a41
+IV: 00000000000000000000000000000000
+Ciphertext: c3b44b95d9d2f25670eee9a0de099fa3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: b6364ac4e1de1e285eaf144a2415f7a0
+IV: 00000000000000000000000000000000
+Ciphertext: 5d9b05578fc944b3cf1ccf0e746cd581
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 64cf9c7abc50b888af65f49d521944b2
+IV: 00000000000000000000000000000000
+Ciphertext: f7efc89d5dba578104016ce5ad659c05
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 47d6742eefcc0465dc96355e851b64d9
+IV: 00000000000000000000000000000000
+Ciphertext: 0306194f666d183624aa230a8b264ae7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 3eb39790678c56bee34bbcdeccf6cdb5
+IV: 00000000000000000000000000000000
+Ciphertext: 858075d536d79ccee571f7d7204b1f67
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 64110a924f0743d500ccadae72c13427
+IV: 00000000000000000000000000000000
+Ciphertext: 35870c6a57e9e92314bcb8087cde72ce
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 18d8126516f8a12ab1a36d9f04d68e51
+IV: 00000000000000000000000000000000
+Ciphertext: 6c68e9be5ec41e22c825b7c7affb4363
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: f530357968578480b398a3c251cd1093
+IV: 00000000000000000000000000000000
+Ciphertext: f5df39990fc688f1b07224cc03e86cea
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: da84367f325d42d601b4326964802e8e
+IV: 00000000000000000000000000000000
+Ciphertext: bba071bcb470f8f6586e5d3add18bc66
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: e37b1c6aa2846f6fdb413f238b089f23
+IV: 00000000000000000000000000000000
+Ciphertext: 43c9f7e62f5d288bb27aa40ef8fe1ea8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 6c002b682483e0cabcc731c253be5674
+IV: 00000000000000000000000000000000
+Ciphertext: 3580d19cff44f1014a7c966a69059de5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 143ae8ed6555aba96110ab58893a8ae1
+IV: 00000000000000000000000000000000
+Ciphertext: 806da864dd29d48deafbe764f8202aef
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: b69418a85332240dc82492353956ae0c
+IV: 00000000000000000000000000000000
+Ciphertext: a303d940ded8f0baff6f75414cac5243
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 71b5c08a1993e1362e4d0ce9b22b78d5
+IV: 00000000000000000000000000000000
+Ciphertext: c2dabd117f8a3ecabfbb11d12194d9d0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: e234cdca2606b81f29408d5f6da21206
+IV: 00000000000000000000000000000000
+Ciphertext: fff60a4740086b3b9c56195b98d91a7b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 13237c49074a3da078dc1d828bb78c6f
+IV: 00000000000000000000000000000000
+Ciphertext: 8146a08e2357f0caa30ca8c94d1a0544
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 3071a2a48fe6cbd04f1a129098e308f8
+IV: 00000000000000000000000000000000
+Ciphertext: 4b98e06d356deb07ebb824e5713f7be3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 90f42ec0f68385f2ffc5dfc03a654dce
+IV: 00000000000000000000000000000000
+Ciphertext: 7a20a53d460fc9ce0423a7a0764c6cf2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: febd9a24d8b65c1c787d50a4ed3619a9
+IV: 00000000000000000000000000000000
+Ciphertext: f4a70d8af877f9b02b4c40df57d45b17
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_var_key.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_var_key.txt
new file mode 100644
index 0000000..f679187
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_var_key.txt
@@ -0,0 +1,1794 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarKey128.rsp -extra-labels=Cipher=AES-128-CTR"
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0edd33d3c621e546455bd8ba1418bec8
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: c0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4bc3f883450c113c64ca42e1112a9e87
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: e0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 72a1da770f5d7ac4c9ef94d822affd97
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: f0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 970014d634e2b7650777e8e84d03ccd8
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: f8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f17e79aed0db7e279e955b5f493875a7
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ed5a75136a940d0963da379db4af26a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c4295f83465c7755e8fa364bac6a7ea5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b1d758256b28fd850ad4944208cf1155
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 42ffb34c743de4d88ca38011c990890b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9958f0ecea8b2172c0c1995f9182c0f3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 956d7798fac20f82a8823f984d06f7f5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a01bf44f2d16be928ca44aaf7b9b106b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5f1a33e50d40d103764c76bd4c6b6f8
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2637050c9fc0d4817e2d69de878aee8d
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 113ecbe4a453269a0dd26069467fb5b5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 97d0754fe68f11b9e375d070a608c884
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c6a0b3e998d05068a5399778405200b4
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: df556a33438db87bc41b1752c55e5e49
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 90fb128d3a1af6e548521bb962bf1f05
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 26298e9c1db517c215fadfb7d2a8d691
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a6cb761d61f8292d0df393a279ad0380
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 12acd89b13cd5f8726e34d44fd486108
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 95b1703fc57ba09fe0c3580febdd7ed4
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: de11722d893e9f9121c381becc1da59a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6d114ccb27bf391012e8974c546d9bf2
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5ce37e17eb4646ecfac29b9cc38d9340
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 18c1b6e2157122056d0243d8a165cddb
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 99693e6a59d1366c74d823562d7e1431
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c7c64dc84a8bba758ed17eb025a57e3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e17bc79f30eaab2fac2cbbe3458d687a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1114bc2028009b923f0b01915ce5e7c4
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9c28524a16a1e1c1452971caa8d13476
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ed62e16363638360fdd6ad62112794f0
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5a8688f0b2a2c16224c161658ffd4044
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 23f710842b9bb9c32f26648c786807ca
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 44a98bf11e163f632c47ec6a49683a89
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0f18aff94274696d9b61848bd50ac5e5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 82408571c3e2424540207f833b6dda69
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 303ff996947f0c7d1f43c8f3027b9b75
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7df4daf4ad29a3615a9b6ece5c99518a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c72954a48d0774db0b4971c526260415
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1df9b76112dc6531e07d2cfda04411f0
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8e4d8e699119e1fc87545a647fb1d34f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e6c4807ae11f36f091c57d9fb68548d1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8ebf73aad49c82007f77a5c1ccec6ab4
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4fb288cc2040049001d2c7585ad123fc
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 04497110efb9dceb13e2b13fb4465564
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 75550e6cb5a88e49634c9ab69eda0430
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b6768473ce9843ea66a81405dd50b345
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cb2f430383f9084e03a653571e065de6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff4e66c07bae3e79fb7d210847a3b0ba
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7b90785125505fad59b13c186dd66ce3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8b527a6aebdaec9eaef8eda2cb7783e5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 43fdaf53ebbc9880c228617d6a9b548b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 53786104b9744b98f052c46f1c850d0b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5ab3013dd1e61df06cbaf34ca2aee78
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7470469be9723030fdcc73a8cd4fbb10
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a35a63f5343ebe9ef8167bcb48ad122e
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fd8687f0757a210e9fdf181204c30863
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7a181e84bd5457d26a88fbae96018fb0
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 653317b9362b6f9b9e1a580e68d494b5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 995c9dc0b689f03c45867b5faa5c18d1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77a4d96d56dda398b9aabecfc75729fd
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 84be19e053635f09f2665e7bae85b42d
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 32cd652842926aea4aa6137bb2be2b5e
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 493d4a4f38ebb337d10aa84e9171a554
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d9bff7ff454b0ec5a4a2a69566e2cb84
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3535d565ace3f31eb249ba2cc6765d7a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f60e91fc3269eecf3231c6e9945697c6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ab69cfadf51f8e604d9cc37182f6635a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7866373f24a0b6ed56e0d96fcdafb877
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ea448c2aac954f5d812e9d78494446a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: acc5599dd8ac02239a0fef4a36dd1668
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d8764468bb103828cf7e1473ce895073
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b0d02893683b9f180458e4aa6b73982
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 96d9b017d302df410a937dcdb8bb6e43
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ef1623cc44313cff440b1594a7e21cc6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 284ca2fa35807b8b0ae4d19e11d7dbd7
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f2e976875755f9401d54f36e2a23a594
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ec198a18e10e532403b7e20887c8dd80
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 545d50ebd919e4a6949d96ad47e46a80
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dbdfb527060e0a71009c7bb0c68f1d44
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9cfa1322ea33da2173a024f2ff0d896d
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8785b1a75b0f3bd958dcd0e29318c521
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 38f67b9e98e4a97b6df030a9fcdd0104
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 192afffb2c880e82b05926d0fc6c448b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6a7980ce7b105cf530952d74daaf798c
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ea3695e1351b9d6858bd958cf513ef6c
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6da0490ba0ba0343b935681d2cce5ba1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f0ea23af08534011c60009ab29ada2f1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff13806cf19cc38721554d7c0fcdcd4b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6838af1f4f69bae9d85dd188dcdf0688
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36cf44c92d550bfb1ed28ef583ddf5d7
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d06e3195b5376f109d5c4ec6c5d62ced
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c440de014d3d610707279b13242a5c36
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f0c5c6ffa5e0bd3a94c88f6b6f7c16b9
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3e40c3901cd7effc22bffc35dee0b4d9
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b63305c72bedfab97382c406d0c49bc6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36bbaab22a6bd4925a99a2b408d2dbae
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 307c5b8fcd0533ab98bc51e27a6ce461
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 829c04ff4c07513c0b3ef05c03e337b5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f17af0e895dda5eb98efc68066e84c54
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 277167f3812afff1ffacb4a934379fc3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2cb1dc3a9c72972e425ae2ef3eb597cd
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36aeaa3a213e968d4b5b679d3a2c97fe
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9241daca4fdd034a82372db50e1a0f3f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c14574d9cd00cf2b5a7f77e53cd57885
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 793de39236570aba83ab9b737cb521c9
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 16591c0f27d60e29b85a96c33861a7ef
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 44fb5c4d4f5cb79be5c174a3b1c97348
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 674d2b61633d162be59dde04222f4740
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b4750ff263a65e1f9e924ccfd98f3e37
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 62d0662d6eaeddedebae7f7ea3a4f6b6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 70c46bb30692be657f7eaa93ebad9897
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 323994cfb9da285a5d9642e1759b224a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1dbf57877b7b17385c85d0b54851e371
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dfa5c097cdc1532ac071d57b1d28d1bd
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a0c53fa37311fc10bd2a9981f513174
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ba4f970c0a25c41814bdae2e506be3b4
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2dce3acb727cd13ccd76d425ea56e4f6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5160474d504b9b3eefb68d35f245f4b3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 41a8a947766635dec37553d9a6c0cbb7
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 25d6cfe6881f2bf497dd14cd4ddf445b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 41c78c135ed9e98c096640647265da1e
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5a4d404d8917e353e92a21072c3b2305
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 02bc96846b3fdc71643f384cd3cc3eaf
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ba4a9143f4e5d4048521c4f8877d88e
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a1f6258c877d5fcd8964484538bfc92c
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0edd33d3c621e546455bd8ba1418bec8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: c0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4bc3f883450c113c64ca42e1112a9e87
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: e0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 72a1da770f5d7ac4c9ef94d822affd97
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: f0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 970014d634e2b7650777e8e84d03ccd8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: f8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f17e79aed0db7e279e955b5f493875a7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9ed5a75136a940d0963da379db4af26a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c4295f83465c7755e8fa364bac6a7ea5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b1d758256b28fd850ad4944208cf1155
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 42ffb34c743de4d88ca38011c990890b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9958f0ecea8b2172c0c1995f9182c0f3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 956d7798fac20f82a8823f984d06f7f5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a01bf44f2d16be928ca44aaf7b9b106b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5f1a33e50d40d103764c76bd4c6b6f8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2637050c9fc0d4817e2d69de878aee8d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 113ecbe4a453269a0dd26069467fb5b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 97d0754fe68f11b9e375d070a608c884
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c6a0b3e998d05068a5399778405200b4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: df556a33438db87bc41b1752c55e5e49
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 90fb128d3a1af6e548521bb962bf1f05
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 26298e9c1db517c215fadfb7d2a8d691
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a6cb761d61f8292d0df393a279ad0380
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 12acd89b13cd5f8726e34d44fd486108
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 95b1703fc57ba09fe0c3580febdd7ed4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: de11722d893e9f9121c381becc1da59a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6d114ccb27bf391012e8974c546d9bf2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5ce37e17eb4646ecfac29b9cc38d9340
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 18c1b6e2157122056d0243d8a165cddb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 99693e6a59d1366c74d823562d7e1431
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6c7c64dc84a8bba758ed17eb025a57e3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e17bc79f30eaab2fac2cbbe3458d687a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1114bc2028009b923f0b01915ce5e7c4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9c28524a16a1e1c1452971caa8d13476
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ed62e16363638360fdd6ad62112794f0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5a8688f0b2a2c16224c161658ffd4044
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 23f710842b9bb9c32f26648c786807ca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 44a98bf11e163f632c47ec6a49683a89
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0f18aff94274696d9b61848bd50ac5e5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 82408571c3e2424540207f833b6dda69
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 303ff996947f0c7d1f43c8f3027b9b75
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7df4daf4ad29a3615a9b6ece5c99518a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c72954a48d0774db0b4971c526260415
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1df9b76112dc6531e07d2cfda04411f0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8e4d8e699119e1fc87545a647fb1d34f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e6c4807ae11f36f091c57d9fb68548d1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8ebf73aad49c82007f77a5c1ccec6ab4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4fb288cc2040049001d2c7585ad123fc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 04497110efb9dceb13e2b13fb4465564
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 75550e6cb5a88e49634c9ab69eda0430
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b6768473ce9843ea66a81405dd50b345
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cb2f430383f9084e03a653571e065de6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ff4e66c07bae3e79fb7d210847a3b0ba
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7b90785125505fad59b13c186dd66ce3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8b527a6aebdaec9eaef8eda2cb7783e5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 43fdaf53ebbc9880c228617d6a9b548b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 53786104b9744b98f052c46f1c850d0b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5ab3013dd1e61df06cbaf34ca2aee78
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7470469be9723030fdcc73a8cd4fbb10
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a35a63f5343ebe9ef8167bcb48ad122e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fd8687f0757a210e9fdf181204c30863
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7a181e84bd5457d26a88fbae96018fb0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 653317b9362b6f9b9e1a580e68d494b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 995c9dc0b689f03c45867b5faa5c18d1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77a4d96d56dda398b9aabecfc75729fd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 84be19e053635f09f2665e7bae85b42d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 32cd652842926aea4aa6137bb2be2b5e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 493d4a4f38ebb337d10aa84e9171a554
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d9bff7ff454b0ec5a4a2a69566e2cb84
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3535d565ace3f31eb249ba2cc6765d7a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f60e91fc3269eecf3231c6e9945697c6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ab69cfadf51f8e604d9cc37182f6635a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7866373f24a0b6ed56e0d96fcdafb877
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ea448c2aac954f5d812e9d78494446a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: acc5599dd8ac02239a0fef4a36dd1668
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d8764468bb103828cf7e1473ce895073
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b0d02893683b9f180458e4aa6b73982
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 96d9b017d302df410a937dcdb8bb6e43
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ef1623cc44313cff440b1594a7e21cc6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 284ca2fa35807b8b0ae4d19e11d7dbd7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f2e976875755f9401d54f36e2a23a594
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ec198a18e10e532403b7e20887c8dd80
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 545d50ebd919e4a6949d96ad47e46a80
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dbdfb527060e0a71009c7bb0c68f1d44
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9cfa1322ea33da2173a024f2ff0d896d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8785b1a75b0f3bd958dcd0e29318c521
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 38f67b9e98e4a97b6df030a9fcdd0104
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 192afffb2c880e82b05926d0fc6c448b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6a7980ce7b105cf530952d74daaf798c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ea3695e1351b9d6858bd958cf513ef6c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6da0490ba0ba0343b935681d2cce5ba1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f0ea23af08534011c60009ab29ada2f1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ff13806cf19cc38721554d7c0fcdcd4b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6838af1f4f69bae9d85dd188dcdf0688
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Ciphertext: 36cf44c92d550bfb1ed28ef583ddf5d7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Ciphertext: d06e3195b5376f109d5c4ec6c5d62ced
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Ciphertext: c440de014d3d610707279b13242a5c36
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Ciphertext: f0c5c6ffa5e0bd3a94c88f6b6f7c16b9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3e40c3901cd7effc22bffc35dee0b4d9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Ciphertext: b63305c72bedfab97382c406d0c49bc6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 36bbaab22a6bd4925a99a2b408d2dbae
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 307c5b8fcd0533ab98bc51e27a6ce461
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Ciphertext: 829c04ff4c07513c0b3ef05c03e337b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Ciphertext: f17af0e895dda5eb98efc68066e84c54
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Ciphertext: 277167f3812afff1ffacb4a934379fc3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2cb1dc3a9c72972e425ae2ef3eb597cd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Ciphertext: 36aeaa3a213e968d4b5b679d3a2c97fe
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Ciphertext: 9241daca4fdd034a82372db50e1a0f3f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Ciphertext: c14574d9cd00cf2b5a7f77e53cd57885
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Ciphertext: 793de39236570aba83ab9b737cb521c9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Ciphertext: 16591c0f27d60e29b85a96c33861a7ef
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Ciphertext: 44fb5c4d4f5cb79be5c174a3b1c97348
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Ciphertext: 674d2b61633d162be59dde04222f4740
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Ciphertext: b4750ff263a65e1f9e924ccfd98f3e37
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Ciphertext: 62d0662d6eaeddedebae7f7ea3a4f6b6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Ciphertext: 70c46bb30692be657f7eaa93ebad9897
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Ciphertext: 323994cfb9da285a5d9642e1759b224a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Ciphertext: 1dbf57877b7b17385c85d0b54851e371
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Ciphertext: dfa5c097cdc1532ac071d57b1d28d1bd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Ciphertext: 3a0c53fa37311fc10bd2a9981f513174
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Ciphertext: ba4f970c0a25c41814bdae2e506be3b4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Ciphertext: 2dce3acb727cd13ccd76d425ea56e4f6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Ciphertext: 5160474d504b9b3eefb68d35f245f4b3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Ciphertext: 41a8a947766635dec37553d9a6c0cbb7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Ciphertext: 25d6cfe6881f2bf497dd14cd4ddf445b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Ciphertext: 41c78c135ed9e98c096640647265da1e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Ciphertext: 5a4d404d8917e353e92a21072c3b2305
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Ciphertext: 02bc96846b3fdc71643f384cd3cc3eaf
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Ciphertext: 9ba4a9143f4e5d4048521c4f8877d88e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Ciphertext: a1f6258c877d5fcd8964484538bfc92c
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_var_txt.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_var_txt.txt
new file mode 100644
index 0000000..e7e59df
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_128_ctr_var_txt.txt
@@ -0,0 +1,1794 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarTxt128.rsp -extra-labels=Cipher=AES-128-CTR -swap-iv-plaintext"
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 80000000000000000000000000000000
+Ciphertext: 3ad78e726c1ec02b7ebfe92b23d9ec34
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: c0000000000000000000000000000000
+Ciphertext: aae5939c8efdf2f04e60b9fe7117b2c2
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: e0000000000000000000000000000000
+Ciphertext: f031d4d74f5dcbf39daaf8ca3af6e527
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: f0000000000000000000000000000000
+Ciphertext: 96d9fd5cc4f07441727df0f33e401a36
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: f8000000000000000000000000000000
+Ciphertext: 30ccdb044646d7e1f3ccea3dca08b8c0
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fc000000000000000000000000000000
+Ciphertext: 16ae4ce5042a67ee8e177b7c587ecc82
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fe000000000000000000000000000000
+Ciphertext: b6da0bb11a23855d9c5cb1b4c6412e0a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ff000000000000000000000000000000
+Ciphertext: db4f1aa530967d6732ce4715eb0ee24b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ff800000000000000000000000000000
+Ciphertext: a81738252621dd180a34f3455b4baa2f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffc00000000000000000000000000000
+Ciphertext: 77e2b508db7fd89234caf7939ee5621a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffe00000000000000000000000000000
+Ciphertext: b8499c251f8442ee13f0933b688fcd19
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fff00000000000000000000000000000
+Ciphertext: 965135f8a81f25c9d630b17502f68e53
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fff80000000000000000000000000000
+Ciphertext: 8b87145a01ad1c6cede995ea3670454f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffc0000000000000000000000000000
+Ciphertext: 8eae3b10a0c8ca6d1d3b0fa61e56b0b2
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffe0000000000000000000000000000
+Ciphertext: 64b4d629810fda6bafdf08f3b0d8d2c5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffff0000000000000000000000000000
+Ciphertext: d7e5dbd3324595f8fdc7d7c571da6c2a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffff8000000000000000000000000000
+Ciphertext: f3f72375264e167fca9de2c1527d9606
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffc000000000000000000000000000
+Ciphertext: 8ee79dd4f401ff9b7ea945d86666c13b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffe000000000000000000000000000
+Ciphertext: dd35cea2799940b40db3f819cb94c08b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffff000000000000000000000000000
+Ciphertext: 6941cb6b3e08c2b7afa581ebdd607b87
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffff800000000000000000000000000
+Ciphertext: 2c20f439f6bb097b29b8bd6d99aad799
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffc00000000000000000000000000
+Ciphertext: 625d01f058e565f77ae86378bd2c49b3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffe00000000000000000000000000
+Ciphertext: c0b5fd98190ef45fbb4301438d095950
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffff00000000000000000000000000
+Ciphertext: 13001ff5d99806efd25da34f56be854b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffff80000000000000000000000000
+Ciphertext: 3b594c60f5c8277a5113677f94208d82
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffc0000000000000000000000000
+Ciphertext: e9c0fc1818e4aa46bd2e39d638f89e05
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffe0000000000000000000000000
+Ciphertext: f8023ee9c3fdc45a019b4e985c7e1a54
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffff0000000000000000000000000
+Ciphertext: 35f40182ab4662f3023baec1ee796b57
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffff8000000000000000000000000
+Ciphertext: 3aebbad7303649b4194a6945c6cc3694
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffc000000000000000000000000
+Ciphertext: a2124bea53ec2834279bed7f7eb0f938
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffe000000000000000000000000
+Ciphertext: b9fb4399fa4facc7309e14ec98360b0a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffff000000000000000000000000
+Ciphertext: c26277437420c5d634f715aea81a9132
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffff800000000000000000000000
+Ciphertext: 171a0e1b2dd424f0e089af2c4c10f32f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffc00000000000000000000000
+Ciphertext: 7cadbe402d1b208fe735edce00aee7ce
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffe00000000000000000000000
+Ciphertext: 43b02ff929a1485af6f5c6d6558baa0f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffff00000000000000000000000
+Ciphertext: 092faacc9bf43508bf8fa8613ca75dea
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffff80000000000000000000000
+Ciphertext: cb2bf8280f3f9742c7ed513fe802629c
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffc0000000000000000000000
+Ciphertext: 215a41ee442fa992a6e323986ded3f68
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffe0000000000000000000000
+Ciphertext: f21e99cf4f0f77cea836e11a2fe75fb1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffff0000000000000000000000
+Ciphertext: 95e3a0ca9079e646331df8b4e70d2cd6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffff8000000000000000000000
+Ciphertext: 4afe7f120ce7613f74fc12a01a828073
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffc000000000000000000000
+Ciphertext: 827f000e75e2c8b9d479beed913fe678
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffe000000000000000000000
+Ciphertext: 35830c8e7aaefe2d30310ef381cbf691
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffff000000000000000000000
+Ciphertext: 191aa0f2c8570144f38657ea4085ebe5
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffff800000000000000000000
+Ciphertext: 85062c2c909f15d9269b6c18ce99c4f0
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffc00000000000000000000
+Ciphertext: 678034dc9e41b5a560ed239eeab1bc78
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffe00000000000000000000
+Ciphertext: c2f93a4ce5ab6d5d56f1b93cf19911c1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffff00000000000000000000
+Ciphertext: 1c3112bcb0c1dcc749d799743691bf82
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffff80000000000000000000
+Ciphertext: 00c55bd75c7f9c881989d3ec1911c0d4
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffc0000000000000000000
+Ciphertext: ea2e6b5ef182b7dff3629abd6a12045f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffe0000000000000000000
+Ciphertext: 22322327e01780b17397f24087f8cc6f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffff0000000000000000000
+Ciphertext: c9cacb5cd11692c373b2411768149ee7
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffff8000000000000000000
+Ciphertext: a18e3dbbca577860dab6b80da3139256
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffc000000000000000000
+Ciphertext: 79b61c37bf328ecca8d743265a3d425c
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffe000000000000000000
+Ciphertext: d2d99c6bcc1f06fda8e27e8ae3f1ccc7
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffff000000000000000000
+Ciphertext: 1bfd4b91c701fd6b61b7f997829d663b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffff800000000000000000
+Ciphertext: 11005d52f25f16bdc9545a876a63490a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffc00000000000000000
+Ciphertext: 3a4d354f02bb5a5e47d39666867f246a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffe00000000000000000
+Ciphertext: d451b8d6e1e1a0ebb155fbbf6e7b7dc3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffff00000000000000000
+Ciphertext: 6898d4f42fa7ba6a10ac05e87b9f2080
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffff80000000000000000
+Ciphertext: b611295e739ca7d9b50f8e4c0e754a3f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffc0000000000000000
+Ciphertext: 7d33fc7d8abe3ca1936759f8f5deaf20
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffe0000000000000000
+Ciphertext: 3b5e0f566dc96c298f0c12637539b25c
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffff0000000000000000
+Ciphertext: f807c3e7985fe0f5a50e2cdb25c5109e
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffff8000000000000000
+Ciphertext: 41f992a856fb278b389a62f5d274d7e9
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffc000000000000000
+Ciphertext: 10d3ed7a6fe15ab4d91acbc7d0767ab1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffe000000000000000
+Ciphertext: 21feecd45b2e675973ac33bf0c5424fc
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffff000000000000000
+Ciphertext: 1480cb3955ba62d09eea668f7c708817
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffff800000000000000
+Ciphertext: 66404033d6b72b609354d5496e7eb511
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffc00000000000000
+Ciphertext: 1c317a220a7d700da2b1e075b00266e1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffe00000000000000
+Ciphertext: ab3b89542233f1271bf8fd0c0f403545
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffff00000000000000
+Ciphertext: d93eae966fac46dca927d6b114fa3f9e
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffff80000000000000
+Ciphertext: 1bdec521316503d9d5ee65df3ea94ddf
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffc0000000000000
+Ciphertext: eef456431dea8b4acf83bdae3717f75f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffe0000000000000
+Ciphertext: 06f2519a2fafaa596bfef5cfa15c21b9
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffff0000000000000
+Ciphertext: 251a7eac7e2fe809e4aa8d0d7012531a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffff8000000000000
+Ciphertext: 3bffc16e4c49b268a20f8d96a60b4058
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffc000000000000
+Ciphertext: e886f9281999c5bb3b3e8862e2f7c988
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffe000000000000
+Ciphertext: 563bf90d61beef39f48dd625fcef1361
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffff000000000000
+Ciphertext: 4d37c850644563c69fd0acd9a049325b
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffff800000000000
+Ciphertext: b87c921b91829ef3b13ca541ee1130a6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffc00000000000
+Ciphertext: 2e65eb6b6ea383e109accce8326b0393
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffe00000000000
+Ciphertext: 9ca547f7439edc3e255c0f4d49aa8990
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffff00000000000
+Ciphertext: a5e652614c9300f37816b1f9fd0c87f9
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffff80000000000
+Ciphertext: 14954f0b4697776f44494fe458d814ed
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffc0000000000
+Ciphertext: 7c8d9ab6c2761723fe42f8bb506cbcf7
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffe0000000000
+Ciphertext: db7e1932679fdd99742aab04aa0d5a80
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffff0000000000
+Ciphertext: 4c6a1c83e568cd10f27c2d73ded19c28
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffff8000000000
+Ciphertext: 90ecbe6177e674c98de412413f7ac915
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffc000000000
+Ciphertext: 90684a2ac55fe1ec2b8ebd5622520b73
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffe000000000
+Ciphertext: 7472f9a7988607ca79707795991035e6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffff000000000
+Ciphertext: 56aff089878bf3352f8df172a3ae47d8
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffff800000000
+Ciphertext: 65c0526cbe40161b8019a2a3171abd23
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffc00000000
+Ciphertext: 377be0be33b4e3e310b4aabda173f84f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffe00000000
+Ciphertext: 9402e9aa6f69de6504da8d20c4fcaa2f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffff00000000
+Ciphertext: 123c1f4af313ad8c2ce648b2e71fb6e1
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffff80000000
+Ciphertext: 1ffc626d30203dcdb0019fb80f726cf4
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffc0000000
+Ciphertext: 76da1fbe3a50728c50fd2e621b5ad885
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffe0000000
+Ciphertext: 082eb8be35f442fb52668e16a591d1d6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffff0000000
+Ciphertext: e656f9ecf5fe27ec3e4a73d00c282fb3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffff8000000
+Ciphertext: 2ca8209d63274cd9a29bb74bcd77683a
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffc000000
+Ciphertext: 79bf5dce14bb7dd73a8e3611de7ce026
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffe000000
+Ciphertext: 3c849939a5d29399f344c4a0eca8a576
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffff000000
+Ciphertext: ed3c0a94d59bece98835da7aa4f07ca2
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffff800000
+Ciphertext: 63919ed4ce10196438b6ad09d99cd795
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffc00000
+Ciphertext: 7678f3a833f19fea95f3c6029e2bc610
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffe00000
+Ciphertext: 3aa426831067d36b92be7c5f81c13c56
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffff00000
+Ciphertext: 9272e2d2cdd11050998c845077a30ea0
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffff80000
+Ciphertext: 088c4b53f5ec0ff814c19adae7f6246c
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffc0000
+Ciphertext: 4010a5e401fdf0a0354ddbcc0d012b17
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffe0000
+Ciphertext: a87a385736c0a6189bd6589bd8445a93
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffff0000
+Ciphertext: 545f2b83d9616dccf60fa9830e9cd287
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffff8000
+Ciphertext: 4b706f7f92406352394037a6d4f4688d
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffc000
+Ciphertext: b7972b3941c44b90afa7b264bfba7387
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffe000
+Ciphertext: 6f45732cf10881546f0fd23896d2bb60
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffff000
+Ciphertext: 2e3579ca15af27f64b3c955a5bfc30ba
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffff800
+Ciphertext: 34a2c5a91ae2aec99b7d1b5fa6780447
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffc00
+Ciphertext: a4d6616bd04f87335b0e53351227a9ee
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffe00
+Ciphertext: 7f692b03945867d16179a8cefc83ea3f
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffff00
+Ciphertext: 3bd141ee84a0e6414a26e7a4f281f8a2
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffff80
+Ciphertext: d1788f572d98b2b16ec5d5f3922b99bc
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffc0
+Ciphertext: 0833ff6f61d98a57b288e8c3586b85a6
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffe0
+Ciphertext: 8568261797de176bf0b43becc6285afb
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffff0
+Ciphertext: f9b0fda0c4a898f5b9e6f661c4ce4d07
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffff8
+Ciphertext: 8ade895913685c67c5269f8aae42983e
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffffc
+Ciphertext: 39bde67d5c8ed8a8b1c37eb8fa9f5ac0
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffffe
+Ciphertext: 5c005e72c1418c44f569f2ea33ba54f3
+
+Cipher: AES-128-CTR
+Operation: ENCRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffff
+Ciphertext: 3f5b8cc9ea855a0afa7347d23e8d664e
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3ad78e726c1ec02b7ebfe92b23d9ec34
+IV: 80000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: aae5939c8efdf2f04e60b9fe7117b2c2
+IV: c0000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f031d4d74f5dcbf39daaf8ca3af6e527
+IV: e0000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 96d9fd5cc4f07441727df0f33e401a36
+IV: f0000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 30ccdb044646d7e1f3ccea3dca08b8c0
+IV: f8000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 16ae4ce5042a67ee8e177b7c587ecc82
+IV: fc000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b6da0bb11a23855d9c5cb1b4c6412e0a
+IV: fe000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: db4f1aa530967d6732ce4715eb0ee24b
+IV: ff000000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a81738252621dd180a34f3455b4baa2f
+IV: ff800000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77e2b508db7fd89234caf7939ee5621a
+IV: ffc00000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b8499c251f8442ee13f0933b688fcd19
+IV: ffe00000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 965135f8a81f25c9d630b17502f68e53
+IV: fff00000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8b87145a01ad1c6cede995ea3670454f
+IV: fff80000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8eae3b10a0c8ca6d1d3b0fa61e56b0b2
+IV: fffc0000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 64b4d629810fda6bafdf08f3b0d8d2c5
+IV: fffe0000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d7e5dbd3324595f8fdc7d7c571da6c2a
+IV: ffff0000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f3f72375264e167fca9de2c1527d9606
+IV: ffff8000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8ee79dd4f401ff9b7ea945d86666c13b
+IV: ffffc000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dd35cea2799940b40db3f819cb94c08b
+IV: ffffe000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6941cb6b3e08c2b7afa581ebdd607b87
+IV: fffff000000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2c20f439f6bb097b29b8bd6d99aad799
+IV: fffff800000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 625d01f058e565f77ae86378bd2c49b3
+IV: fffffc00000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c0b5fd98190ef45fbb4301438d095950
+IV: fffffe00000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 13001ff5d99806efd25da34f56be854b
+IV: ffffff00000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3b594c60f5c8277a5113677f94208d82
+IV: ffffff80000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e9c0fc1818e4aa46bd2e39d638f89e05
+IV: ffffffc0000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f8023ee9c3fdc45a019b4e985c7e1a54
+IV: ffffffe0000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 35f40182ab4662f3023baec1ee796b57
+IV: fffffff0000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3aebbad7303649b4194a6945c6cc3694
+IV: fffffff8000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a2124bea53ec2834279bed7f7eb0f938
+IV: fffffffc000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b9fb4399fa4facc7309e14ec98360b0a
+IV: fffffffe000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c26277437420c5d634f715aea81a9132
+IV: ffffffff000000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 171a0e1b2dd424f0e089af2c4c10f32f
+IV: ffffffff800000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7cadbe402d1b208fe735edce00aee7ce
+IV: ffffffffc00000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 43b02ff929a1485af6f5c6d6558baa0f
+IV: ffffffffe00000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 092faacc9bf43508bf8fa8613ca75dea
+IV: fffffffff00000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cb2bf8280f3f9742c7ed513fe802629c
+IV: fffffffff80000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 215a41ee442fa992a6e323986ded3f68
+IV: fffffffffc0000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f21e99cf4f0f77cea836e11a2fe75fb1
+IV: fffffffffe0000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 95e3a0ca9079e646331df8b4e70d2cd6
+IV: ffffffffff0000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4afe7f120ce7613f74fc12a01a828073
+IV: ffffffffff8000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 827f000e75e2c8b9d479beed913fe678
+IV: ffffffffffc000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 35830c8e7aaefe2d30310ef381cbf691
+IV: ffffffffffe000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 191aa0f2c8570144f38657ea4085ebe5
+IV: fffffffffff000000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 85062c2c909f15d9269b6c18ce99c4f0
+IV: fffffffffff800000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 678034dc9e41b5a560ed239eeab1bc78
+IV: fffffffffffc00000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c2f93a4ce5ab6d5d56f1b93cf19911c1
+IV: fffffffffffe00000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c3112bcb0c1dcc749d799743691bf82
+IV: ffffffffffff00000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 00c55bd75c7f9c881989d3ec1911c0d4
+IV: ffffffffffff80000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ea2e6b5ef182b7dff3629abd6a12045f
+IV: ffffffffffffc0000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 22322327e01780b17397f24087f8cc6f
+IV: ffffffffffffe0000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c9cacb5cd11692c373b2411768149ee7
+IV: fffffffffffff0000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a18e3dbbca577860dab6b80da3139256
+IV: fffffffffffff8000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 79b61c37bf328ecca8d743265a3d425c
+IV: fffffffffffffc000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2d99c6bcc1f06fda8e27e8ae3f1ccc7
+IV: fffffffffffffe000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1bfd4b91c701fd6b61b7f997829d663b
+IV: ffffffffffffff000000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 11005d52f25f16bdc9545a876a63490a
+IV: ffffffffffffff800000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a4d354f02bb5a5e47d39666867f246a
+IV: ffffffffffffffc00000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d451b8d6e1e1a0ebb155fbbf6e7b7dc3
+IV: ffffffffffffffe00000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6898d4f42fa7ba6a10ac05e87b9f2080
+IV: fffffffffffffff00000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b611295e739ca7d9b50f8e4c0e754a3f
+IV: fffffffffffffff80000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7d33fc7d8abe3ca1936759f8f5deaf20
+IV: fffffffffffffffc0000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3b5e0f566dc96c298f0c12637539b25c
+IV: fffffffffffffffe0000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f807c3e7985fe0f5a50e2cdb25c5109e
+IV: ffffffffffffffff0000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 41f992a856fb278b389a62f5d274d7e9
+IV: ffffffffffffffff8000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 10d3ed7a6fe15ab4d91acbc7d0767ab1
+IV: ffffffffffffffffc000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 21feecd45b2e675973ac33bf0c5424fc
+IV: ffffffffffffffffe000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1480cb3955ba62d09eea668f7c708817
+IV: fffffffffffffffff000000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 66404033d6b72b609354d5496e7eb511
+IV: fffffffffffffffff800000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c317a220a7d700da2b1e075b00266e1
+IV: fffffffffffffffffc00000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ab3b89542233f1271bf8fd0c0f403545
+IV: fffffffffffffffffe00000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d93eae966fac46dca927d6b114fa3f9e
+IV: ffffffffffffffffff00000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1bdec521316503d9d5ee65df3ea94ddf
+IV: ffffffffffffffffff80000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eef456431dea8b4acf83bdae3717f75f
+IV: ffffffffffffffffffc0000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 06f2519a2fafaa596bfef5cfa15c21b9
+IV: ffffffffffffffffffe0000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 251a7eac7e2fe809e4aa8d0d7012531a
+IV: fffffffffffffffffff0000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3bffc16e4c49b268a20f8d96a60b4058
+IV: fffffffffffffffffff8000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e886f9281999c5bb3b3e8862e2f7c988
+IV: fffffffffffffffffffc000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 563bf90d61beef39f48dd625fcef1361
+IV: fffffffffffffffffffe000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4d37c850644563c69fd0acd9a049325b
+IV: ffffffffffffffffffff000000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b87c921b91829ef3b13ca541ee1130a6
+IV: ffffffffffffffffffff800000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e65eb6b6ea383e109accce8326b0393
+IV: ffffffffffffffffffffc00000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ca547f7439edc3e255c0f4d49aa8990
+IV: ffffffffffffffffffffe00000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a5e652614c9300f37816b1f9fd0c87f9
+IV: fffffffffffffffffffff00000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 14954f0b4697776f44494fe458d814ed
+IV: fffffffffffffffffffff80000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7c8d9ab6c2761723fe42f8bb506cbcf7
+IV: fffffffffffffffffffffc0000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: db7e1932679fdd99742aab04aa0d5a80
+IV: fffffffffffffffffffffe0000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4c6a1c83e568cd10f27c2d73ded19c28
+IV: ffffffffffffffffffffff0000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 90ecbe6177e674c98de412413f7ac915
+IV: ffffffffffffffffffffff8000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 90684a2ac55fe1ec2b8ebd5622520b73
+IV: ffffffffffffffffffffffc000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7472f9a7988607ca79707795991035e6
+IV: ffffffffffffffffffffffe000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 56aff089878bf3352f8df172a3ae47d8
+IV: fffffffffffffffffffffff000000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 65c0526cbe40161b8019a2a3171abd23
+IV: fffffffffffffffffffffff800000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 377be0be33b4e3e310b4aabda173f84f
+IV: fffffffffffffffffffffffc00000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9402e9aa6f69de6504da8d20c4fcaa2f
+IV: fffffffffffffffffffffffe00000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 123c1f4af313ad8c2ce648b2e71fb6e1
+IV: ffffffffffffffffffffffff00000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ffc626d30203dcdb0019fb80f726cf4
+IV: ffffffffffffffffffffffff80000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 76da1fbe3a50728c50fd2e621b5ad885
+IV: ffffffffffffffffffffffffc0000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 082eb8be35f442fb52668e16a591d1d6
+IV: ffffffffffffffffffffffffe0000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e656f9ecf5fe27ec3e4a73d00c282fb3
+IV: fffffffffffffffffffffffff0000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2ca8209d63274cd9a29bb74bcd77683a
+IV: fffffffffffffffffffffffff8000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 79bf5dce14bb7dd73a8e3611de7ce026
+IV: fffffffffffffffffffffffffc000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3c849939a5d29399f344c4a0eca8a576
+IV: fffffffffffffffffffffffffe000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ed3c0a94d59bece98835da7aa4f07ca2
+IV: ffffffffffffffffffffffffff000000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 63919ed4ce10196438b6ad09d99cd795
+IV: ffffffffffffffffffffffffff800000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7678f3a833f19fea95f3c6029e2bc610
+IV: ffffffffffffffffffffffffffc00000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3aa426831067d36b92be7c5f81c13c56
+IV: ffffffffffffffffffffffffffe00000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9272e2d2cdd11050998c845077a30ea0
+IV: fffffffffffffffffffffffffff00000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 088c4b53f5ec0ff814c19adae7f6246c
+IV: fffffffffffffffffffffffffff80000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4010a5e401fdf0a0354ddbcc0d012b17
+IV: fffffffffffffffffffffffffffc0000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a87a385736c0a6189bd6589bd8445a93
+IV: fffffffffffffffffffffffffffe0000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 545f2b83d9616dccf60fa9830e9cd287
+IV: ffffffffffffffffffffffffffff0000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4b706f7f92406352394037a6d4f4688d
+IV: ffffffffffffffffffffffffffff8000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b7972b3941c44b90afa7b264bfba7387
+IV: ffffffffffffffffffffffffffffc000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6f45732cf10881546f0fd23896d2bb60
+IV: ffffffffffffffffffffffffffffe000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e3579ca15af27f64b3c955a5bfc30ba
+IV: fffffffffffffffffffffffffffff000
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 34a2c5a91ae2aec99b7d1b5fa6780447
+IV: fffffffffffffffffffffffffffff800
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a4d6616bd04f87335b0e53351227a9ee
+IV: fffffffffffffffffffffffffffffc00
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7f692b03945867d16179a8cefc83ea3f
+IV: fffffffffffffffffffffffffffffe00
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3bd141ee84a0e6414a26e7a4f281f8a2
+IV: ffffffffffffffffffffffffffffff00
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d1788f572d98b2b16ec5d5f3922b99bc
+IV: ffffffffffffffffffffffffffffff80
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0833ff6f61d98a57b288e8c3586b85a6
+IV: ffffffffffffffffffffffffffffffc0
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8568261797de176bf0b43becc6285afb
+IV: ffffffffffffffffffffffffffffffe0
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f9b0fda0c4a898f5b9e6f661c4ce4d07
+IV: fffffffffffffffffffffffffffffff0
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8ade895913685c67c5269f8aae42983e
+IV: fffffffffffffffffffffffffffffff8
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 39bde67d5c8ed8a8b1c37eb8fa9f5ac0
+IV: fffffffffffffffffffffffffffffffc
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5c005e72c1418c44f569f2ea33ba54f3
+IV: fffffffffffffffffffffffffffffffe
+
+Cipher: AES-128-CTR
+Operation: DECRYPT
+Key: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3f5b8cc9ea855a0afa7347d23e8d664e
+IV: ffffffffffffffffffffffffffffffff
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_gf_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_gf_sbox.txt
new file mode 100644
index 0000000..56ab85b
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_gf_sbox.txt
@@ -0,0 +1,86 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCGFSbox192.rsp -extra-labels=Cipher=AES-192-CBC"
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 1b077a6af4b7f98229de786d7516b639
+Ciphertext: 275cfc0413d8ccb70513c3859b1d0f72
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 9c2d8842e5f48f57648205d39a239af1
+Ciphertext: c9b8135ff1b5adc413dfd053b21bd96d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: bff52510095f518ecca60af4205444bb
+Ciphertext: 4a3650c3371ce2eb35e389a171427440
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 51719783d3185a535bd75adc65071ce1
+Ciphertext: 4f354592ff7c8847d2d0870ca9481b7c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 26aa49dcfe7629a8901a69a9914e6dfd
+Ciphertext: d5e08bf9a182e857cf40b3a36ee248cc
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 941a4773058224e1ef66d10e0a6ee782
+Ciphertext: 067cd9d3749207791841562507fa9626
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 275cfc0413d8ccb70513c3859b1d0f72
+Plaintext: 1b077a6af4b7f98229de786d7516b639
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c9b8135ff1b5adc413dfd053b21bd96d
+Plaintext: 9c2d8842e5f48f57648205d39a239af1
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4a3650c3371ce2eb35e389a171427440
+Plaintext: bff52510095f518ecca60af4205444bb
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4f354592ff7c8847d2d0870ca9481b7c
+Plaintext: 51719783d3185a535bd75adc65071ce1
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d5e08bf9a182e857cf40b3a36ee248cc
+Plaintext: 26aa49dcfe7629a8901a69a9914e6dfd
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 067cd9d3749207791841562507fa9626
+Plaintext: 941a4773058224e1ef66d10e0a6ee782
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_key_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_key_sbox.txt
new file mode 100644
index 0000000..1633528
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_key_sbox.txt
@@ -0,0 +1,338 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCKeySbox192.rsp -extra-labels=Cipher=AES-192-CBC"
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0956259c9cd5cfd0181cca53380cde06
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 15d20f6ebc7e649fd95b76b107e6daba967c8a9484797f29
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8e4e18424e591a3d5b6f0876f16f8594
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: a8a282ee31c03fae4f8e9b8930d5473c2ed695a347e88b7c
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93f3270cfc877ef17e106ce938979cb0
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: cd62376d5ebb414917f0c78f05266433dc9192a1ec943300
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7f6c25ff41858561bb62f36492e93c29
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 502a6ab36984af268bf423c7f509205207fc1552af4a91e5
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8e06556dcbb00b809a025047cff2a940
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 25a39dbfd8034f71a81f9ceb55026e4037f8f6aa30ab44ce
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3608c344868e94555d23a120f8a5502d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: e08c15411774ec4a908b64eadc6ac4199c7cd453f3aaef53
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77da2021935b840b7f5dcc39132da9e5
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 3b375a1ff7e8d44409696e6326ec9dec86138e2ae010b980
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3b7c24f825e3bf9873c9f14d39a0e6f4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 950bb9f22cc35be6fe79f52c320af93dec5bc9c0c2f9cd53
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 64ebf95686b353508c90ecd8b6134316
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 7001c487cc3e572cfc92f4d0e697d982e8856fdcc957da40
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff558c5d27210b7929b73fc708eb4cf1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: f029ce61d4e5a405b41ead0a883cc6a737da2cf50a6c92ae
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a2c3b2a818075490a7b4c14380f02702
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cfe4d74002696ccf7d87b14a2f9cafc9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: b0ab0a6a818baef2d11fa33eac947284fb7d748cfb75e570
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2eafd86f63b109b91f5dbb3a3fb7e13
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ee053aa011c8b428cdcc3636313c54d6a03cac01c71579d6
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b9fdd1c5975655f539998b306a324af
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dd619e1cf204446112e0af2b9afa8f8c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 982215f4e173dfa0fcffe5d3da41c4812c7bcc8ed3540f93
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d4f0aae13c8fe9339fbf9e69ed0ad74d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 98c6b8e01e379fbd14e61af6af891596583565f2a27d59e9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 19c80ec4a6deb7e5ed1033dda933498f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: b3ad5cea1dddc214ca969ac35f37dae1a9a9d1528f89bb35
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3cf5e1d21a17956d1dffad6a7c41c659
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 45899367c3132849763073c435a9288a766c8b9ec2308516
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 69fd12e8505f8ded2fdcb197a121b362
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ec250e04c3903f602647b85a401a1ae7ca2f02f67fa4253e
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8aa584e2cc4d17417a97cb9a28ba29c8
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: d077a03bd8a38973928ccafe4a9d2f455130bd0af5ae46a9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: abc786fb1edb504580c4d882ef29a0c7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: d184c36cf0dddfec39e654195006022237871a47c33d3198
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e19fb60a3e1de0166f483c97824a978
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 4c6994ffa9dcdc805b60c2c0095334c42d95a8fc0ca5b080
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7656709538dd5fec41e0ce6a0f8e207d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: c88f5b00a4ef9a6840e2acaf33f00a3bdc4e25895303fa72
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a67cf333b314d411d3c0ae6e1cfcd8f5
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd
+IV: 00000000000000000000000000000000
+Ciphertext: 0956259c9cd5cfd0181cca53380cde06
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 15d20f6ebc7e649fd95b76b107e6daba967c8a9484797f29
+IV: 00000000000000000000000000000000
+Ciphertext: 8e4e18424e591a3d5b6f0876f16f8594
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: a8a282ee31c03fae4f8e9b8930d5473c2ed695a347e88b7c
+IV: 00000000000000000000000000000000
+Ciphertext: 93f3270cfc877ef17e106ce938979cb0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: cd62376d5ebb414917f0c78f05266433dc9192a1ec943300
+IV: 00000000000000000000000000000000
+Ciphertext: 7f6c25ff41858561bb62f36492e93c29
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 502a6ab36984af268bf423c7f509205207fc1552af4a91e5
+IV: 00000000000000000000000000000000
+Ciphertext: 8e06556dcbb00b809a025047cff2a940
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 25a39dbfd8034f71a81f9ceb55026e4037f8f6aa30ab44ce
+IV: 00000000000000000000000000000000
+Ciphertext: 3608c344868e94555d23a120f8a5502d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: e08c15411774ec4a908b64eadc6ac4199c7cd453f3aaef53
+IV: 00000000000000000000000000000000
+Ciphertext: 77da2021935b840b7f5dcc39132da9e5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 3b375a1ff7e8d44409696e6326ec9dec86138e2ae010b980
+IV: 00000000000000000000000000000000
+Ciphertext: 3b7c24f825e3bf9873c9f14d39a0e6f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 950bb9f22cc35be6fe79f52c320af93dec5bc9c0c2f9cd53
+IV: 00000000000000000000000000000000
+Ciphertext: 64ebf95686b353508c90ecd8b6134316
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 7001c487cc3e572cfc92f4d0e697d982e8856fdcc957da40
+IV: 00000000000000000000000000000000
+Ciphertext: ff558c5d27210b7929b73fc708eb4cf1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: f029ce61d4e5a405b41ead0a883cc6a737da2cf50a6c92ae
+IV: 00000000000000000000000000000000
+Ciphertext: a2c3b2a818075490a7b4c14380f02702
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79
+IV: 00000000000000000000000000000000
+Ciphertext: cfe4d74002696ccf7d87b14a2f9cafc9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: b0ab0a6a818baef2d11fa33eac947284fb7d748cfb75e570
+IV: 00000000000000000000000000000000
+Ciphertext: d2eafd86f63b109b91f5dbb3a3fb7e13
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ee053aa011c8b428cdcc3636313c54d6a03cac01c71579d6
+IV: 00000000000000000000000000000000
+Ciphertext: 9b9fdd1c5975655f539998b306a324af
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3
+IV: 00000000000000000000000000000000
+Ciphertext: dd619e1cf204446112e0af2b9afa8f8c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 982215f4e173dfa0fcffe5d3da41c4812c7bcc8ed3540f93
+IV: 00000000000000000000000000000000
+Ciphertext: d4f0aae13c8fe9339fbf9e69ed0ad74d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 98c6b8e01e379fbd14e61af6af891596583565f2a27d59e9
+IV: 00000000000000000000000000000000
+Ciphertext: 19c80ec4a6deb7e5ed1033dda933498f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: b3ad5cea1dddc214ca969ac35f37dae1a9a9d1528f89bb35
+IV: 00000000000000000000000000000000
+Ciphertext: 3cf5e1d21a17956d1dffad6a7c41c659
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 45899367c3132849763073c435a9288a766c8b9ec2308516
+IV: 00000000000000000000000000000000
+Ciphertext: 69fd12e8505f8ded2fdcb197a121b362
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ec250e04c3903f602647b85a401a1ae7ca2f02f67fa4253e
+IV: 00000000000000000000000000000000
+Ciphertext: 8aa584e2cc4d17417a97cb9a28ba29c8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: d077a03bd8a38973928ccafe4a9d2f455130bd0af5ae46a9
+IV: 00000000000000000000000000000000
+Ciphertext: abc786fb1edb504580c4d882ef29a0c7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: d184c36cf0dddfec39e654195006022237871a47c33d3198
+IV: 00000000000000000000000000000000
+Ciphertext: 2e19fb60a3e1de0166f483c97824a978
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 4c6994ffa9dcdc805b60c2c0095334c42d95a8fc0ca5b080
+IV: 00000000000000000000000000000000
+Ciphertext: 7656709538dd5fec41e0ce6a0f8e207d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: c88f5b00a4ef9a6840e2acaf33f00a3bdc4e25895303fa72
+IV: 00000000000000000000000000000000
+Ciphertext: a67cf333b314d411d3c0ae6e1cfcd8f5
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_var_key.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_var_key.txt
new file mode 100644
index 0000000..1085e6c
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_var_key.txt
@@ -0,0 +1,2690 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarKey192.rsp -extra-labels=Cipher=AES-192-CBC"
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 800000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: de885dc87f5a92594082d02cc1e1b42c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: c00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 132b074e80f2a597bf5febd8ea5da55e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: e00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6eccedf8de592c22fb81347b79f2db1f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: f00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 180b09f267c45145db2f826c2582d35c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: f80000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: edd807ef7652d7eb0e13c8b5e15b3bc0
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fc0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9978bcf8dd8fd72241223ad24b31b8a4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fe0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5310f654343e8f27e12c83a48d24ff81
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ff0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 833f71258d53036b02952c76c744f5a1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ff8000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eba83ff200cff9318a92f8691a06b09f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffc000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff620ccbe9f3292abdf2176b09f04eba
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffe000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7ababc4b3f516c9aafb35f4140b548f9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fff000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: aa187824d9c4582b0916493ecbde8c57
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fff800000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c0ad553177fd5ea1092c9d626a29dc4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffc00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a5dc46c37261194124ecaebd680408ec
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffe00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e4f2f2ae23e9b10bacfa58601531ba54
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffff00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b7d67cf1a1e91e8ff3a57a172c7bf412
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffff80000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 26706be06967884e847d137128ce47b3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffc0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b2f8b409b0585909aad3a7b5a219072a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffe0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5e4b7bff0290c78344c54a23b722cd20
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffff0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 07093657552d4414227ce161e9ebf7dd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffff8000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e1af1e7d8bc225ed4dffb771ecbb9e67
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffc000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ef6555253635d8432156cfd9c11b145a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffe000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fb4035074a5d4260c90cbd6da6c3fceb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffff000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 446ee416f9ad1c103eb0cc96751c88e1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffff800000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 198ae2a4637ac0a7890a8fd1485445c9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffc00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 562012ec8faded0825fb2fa70ab30cbd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffe00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc8a64b46b5d88bf7f247d4dbaf38f05
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffff00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a168253762e2cc81b42d1e5001762699
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffff80000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b41f83b38ce5032c6cd7af98cf62061
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffc0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 61a89990cd1411750d5fb0dc988447d4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffe0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5accc8ed629edf8c68a539183b1ea82
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffff0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b16fa71f846b81a13f361c43a851f290
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffff8000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4fad6efdff5975aee7692234bcd54488
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffc000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ebfdb05a783d03082dfe5fdd80a00b17
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffe000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eb81b584766997af6ba5529d3bdd8609
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffff000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0cf4ff4f49c8a0ca060c443499e29313
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffff800000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc4ba8a8e029f8b26d8afff9df133bb6
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffc00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fefebf64360f38e4e63558f0ffc550c3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffe00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 12ad98cbf725137d6a8108c2bed99322
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffff00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6afaa996226198b3e2610413ce1b3f78
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffff80000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2a8ce6747a7e39367828e290848502d9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffc0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 223736e8b8f89ca1e37b6deab40facf1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffe0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c0f797e50418b95fa6013333917a9480
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffff0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a758de37c2ece2a02c73c01fedc9a132
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffff8000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a9b87ae77bae706803966c66c73adbd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffc000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d365ab8df8ffd782e358121a4a4fc541
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffe000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c8dcd9e6f75e6c36c8daee0466f0ed74
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffff000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c79a637beb1c0304f14014c037e736dd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffff800000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 105f0a25e84ac930d996281a5f954dd9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffc00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 42e4074b2927973e8d17ffa92f7fe615
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffe00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4fe2a9d2c1824449c69e3e0398f12963
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffff00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b7f29c1e1f62847a15253b28a1e9d712
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffff80000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36ed5d29b903f31e8983ef8b0a2bf990
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffc0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27b8070270810f9d023f9dd7ff3b4aa2
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffe0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 94d46e155c1228f61d1a0db4815ecc4b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffff0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca6108d1d98071428eeceef1714b96dd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffff8000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dc5b25b71b6296cf73dd2cdcac2f70b1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffc000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 44aba95e8a06a2d9d3530d2677878c80
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffe000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a570d20e89b467e8f5176061b81dd396
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffff000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 758f4467a5d8f1e7307dc30b34e404f4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffff800000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bcea28e9071b5a2302970ff352451bc5
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffc00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7523c00bc177d331ad312e09c9015c1c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffe00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ccac61e3183747b3f5836da21a1bc4f4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffff00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 707b075791878880b44189d3522b8c30
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffff80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7132d0c0e4a07593cf12ebb12be7688c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffc0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: effbac1644deb0c784275fe56e19ead3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffe0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a005063f30f4228b374e2459738f26bb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffff0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 29975b5f48bb68fcbbc7cea93b452ed7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffff8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cf3f2576e2afedc74bb1ca7eeec1c0e7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 07c403f5f966e0e3d9f296d6226dca28
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c8c20908249ab4a34d6dd0a31327ff1a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c0541329ecb6159ab23b7fc5e6a21bca
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7aa1acf1a2ed9ba72bc6deb31d88b863
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 808bd8eddabb6f3bf0d5a8a27be1fe8a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 273c7d7685e14ec66bbb96b8f05b6ddd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 32752eefc8c2a93f91b6e73eb07cca6e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d893e7d62f6ce502c64f75e281f9c000
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8dfd999be5d0cfa35732c0ddc88ff5a5
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 02647c76a300c3173b841487eb2bae9f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 172df8b02f04b53adab028b4e01acd87
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 054b3bf4998aeb05afd87ec536533a36
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3783f7bf44c97f065258a666cae03020
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: aad4c8a63f80954104de7b92cede1be1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cbfe61810fd5467ccdacb75800f3ac07
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 830d8a2590f7d8e1b55a737f4af45f34
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fffcd4683f858058e74314671d43fa2c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 523d0babbb82f46ebc9e70b1cd41ddd0
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 344aab37080d7486f7d542a309e53eed
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 56c5609d0906b23ab9caca816f5dbebd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7026026eedd91adc6d831cdf9894bdc6
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 88330baa4f2b618fc9d9b021bf503d5a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fc9e0ea22480b0bac935c8a8ebefcdcf
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 29ca779f398fb04f867da7e8a44756cb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 51f89c42985786bfc43c6df8ada36832
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6ac1de5fb8f21d874e91c53b560c50e3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 03aa9058490eda306001a8a9f48d0ca7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e34ec71d6128d4871865d617c30b37e3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 14be1c535b17cabd0c4d93529d69bf47
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c9ef67756507beec9dd3862883478044
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 40e231fa5a5948ce2134e92fc0664d4b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 03194b8e5dda5530d0c678c0b48f5d92
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 90bd086f237cc4fd99f4d76bde6b4826
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 19259761ca17130d6ed86d57cd7951ee
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d7cbb3f34b9b450f24b0e8518e54da6d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 725b9caebe9f7f417f4068d0d2ee20b3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9d924b934a90ce1fd39b8a9794f82672
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c50562bf094526a91c5bc63c0c224995
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2f11805046743bd74f57188d9188df7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8dd274bd0f1b58ae345d9e7233f9b8f3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9d6bdc8f4ce5feb0f3bed2e4b9a9bb0b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fd5548bcf3f42565f7efa94562528d46
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2ccaebd3a4c3e80b063748131ba4a71
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e03cb23d9e11c9d93f117e9c0a91b576
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 78f933a2081ac1db84f69d10f4523fe0
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4061f7412ed320de0edc8851c2e2436f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9064ba1cd04ce6bab98474330814b4d4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 48391bffb9cfff80ac238c886ef0a461
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b8d2a67df5a999fdbf93edd0343296c9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: aaca7367396b69a221bd632bea386eec
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a80fd5020dfe65f5f16293ec92c6fd89
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2162995b8217a67f1abc342e146406f8
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c6a6164b7a60bae4e986ffac28dfadd9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 64e0d7f900e3d9c83e4b8f96717b2146
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ad2561de8c1232f5d8dbab4739b6cbb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 279689e9a557f58b1c3bf40c97a90964
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c4637e4a5e6377f9cc5a8638045de029
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 492e607e5aea4688594b45f3aee3df90
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e8c4e4381feec74054954c05b777a00a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 91549514605f38246c9b724ad839f01d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 74b24e3b6fefe40a4f9ef7ac6e44d76a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2437a683dc5d4b52abb4a123a8df86c6
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bb2852c891c5947d2ed44032c421b85f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b9f5fbd5e8a4264c0a85b80409afa5e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 30dab809f85a917fe924733f424ac589
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eaef5c1f8d605192646695ceadc65f32
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b8aa90040b4c15a12316b78e0f9586fc
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 97fac8297ceaabc87d454350601e0673
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b47ef567ac28dfe488492f157e2b2e0
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b8426027ddb962b5c5ba7eb8bc9ab63
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e917fc77e71992a12dbe4c18068bec82
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dceebbc98840f8ae6daf76573b7e56f4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4e11a9f74205125b61e0aee047eca20d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f60467f55a1f17eab88e800120cbc284
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d436649f600b449ee276530f0cd83c11
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3bc0e3656a9e3ac7cd378a737f53b637
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6bacae63d33b928aa8380f8d54d88c17
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8935ffbc75ae6251bf8e859f085adcb9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93dc4970fe35f67747cb0562c06d875a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 14f9df858975851797ba604fb0d16cc7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 02ea0c98dca10b38c21b3b14e8d1b71f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8f091b1b5b0749b2adc803e63dda9b72
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 05b389e3322c6da08384345a4137fd08
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 381308c438f35b399f10ad71b05027d8
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 68c230fcfa9279c3409fc423e2acbe04
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c84a475acb011f3f59f4f46b76274c0
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 45119b68cb3f8399ee60066b5611a4d7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9423762f527a4060ffca312dcca22a16
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f361a2745a33f056a5ac6ace2f08e344
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5ef145766eca849f5d011536a6557fdb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c9af27b2c89c9b4cf4a0c4106ac80318
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fb9c4f16c621f4eab7e9ac1d7551dd57
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 138e06fba466fa70854d8c2e524cffb2
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fb4bc78b225070773f04c40466d4e90c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8b2cbff1ed0150feda8a4799be94551f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 08b30d7b3f27962709a36bcadfb974bd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fdf6d32e044d77adcf37fb97ac213326
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93cb284ecdcfd781a8afe32077949e88
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7b017bb02ec87b2b94c96e40a26fc71a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c5c038b6990664ab08a3aaa5df9f3266
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4b7020be37fab6259b2a27f4ec551576
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 60136703374f64e860b48ce31f930716
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8d63a269b14d506ccc401ab8a9f1b591
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d317f81dc6aa454aee4bd4a5a5cff4bd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dddececd5354f04d530d76ed884246eb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 41c5205cc8fd8eda9a3cffd2518f365a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cf42fb474293d96eca9db1b37b1ba676
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a231692607169b4ecdead5cd3b10db3e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ace4b91c9c669e77e7acacd19859ed49
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 75db7cfd4a7b2b62ab78a48f3ddaf4af
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c1faba2d46e259cf480d7c38e4572a58
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 241c45bc6ae16dee6eb7bea128701582
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8fd03057cf1364420c2b78069a3e2502
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ddb505e6cc1384cbaec1df90b80beb20
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5674a3bed27bf4bd3622f9f5fe208306
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b687f26a89cfbfbb8e5eeac54055315e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0547dd32d3b29ab6a4caeb606c5b6f78
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 186861f8bc5386d31fb77f720c3226e6
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eacf1e6c4224efb38900b185ab1dfd42
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d241aab05a42d319de81d874f5c7b90d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5eb9bc759e2ad8d2140a6c762ae9e1ab
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 018596e15e78e2c064159defce5f3085
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dd8a493514231cbf56eccee4c40889fb
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 800000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: de885dc87f5a92594082d02cc1e1b42c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: c00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 132b074e80f2a597bf5febd8ea5da55e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: e00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6eccedf8de592c22fb81347b79f2db1f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: f00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 180b09f267c45145db2f826c2582d35c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: f80000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: edd807ef7652d7eb0e13c8b5e15b3bc0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fc0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9978bcf8dd8fd72241223ad24b31b8a4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fe0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5310f654343e8f27e12c83a48d24ff81
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ff0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 833f71258d53036b02952c76c744f5a1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ff8000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eba83ff200cff9318a92f8691a06b09f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffc000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ff620ccbe9f3292abdf2176b09f04eba
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffe000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7ababc4b3f516c9aafb35f4140b548f9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fff000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: aa187824d9c4582b0916493ecbde8c57
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fff800000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c0ad553177fd5ea1092c9d626a29dc4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffc00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a5dc46c37261194124ecaebd680408ec
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffe00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e4f2f2ae23e9b10bacfa58601531ba54
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffff00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b7d67cf1a1e91e8ff3a57a172c7bf412
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffff80000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 26706be06967884e847d137128ce47b3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffc0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b2f8b409b0585909aad3a7b5a219072a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffe0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5e4b7bff0290c78344c54a23b722cd20
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffff0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 07093657552d4414227ce161e9ebf7dd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffff8000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e1af1e7d8bc225ed4dffb771ecbb9e67
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffc000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ef6555253635d8432156cfd9c11b145a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffe000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fb4035074a5d4260c90cbd6da6c3fceb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffff000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 446ee416f9ad1c103eb0cc96751c88e1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffff800000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 198ae2a4637ac0a7890a8fd1485445c9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffc00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 562012ec8faded0825fb2fa70ab30cbd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffe00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc8a64b46b5d88bf7f247d4dbaf38f05
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffff00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a168253762e2cc81b42d1e5001762699
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffff80000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b41f83b38ce5032c6cd7af98cf62061
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffc0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 61a89990cd1411750d5fb0dc988447d4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffe0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5accc8ed629edf8c68a539183b1ea82
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffff0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b16fa71f846b81a13f361c43a851f290
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffff8000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4fad6efdff5975aee7692234bcd54488
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffc000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ebfdb05a783d03082dfe5fdd80a00b17
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffe000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eb81b584766997af6ba5529d3bdd8609
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffff000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0cf4ff4f49c8a0ca060c443499e29313
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffff800000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc4ba8a8e029f8b26d8afff9df133bb6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffc00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fefebf64360f38e4e63558f0ffc550c3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffe00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 12ad98cbf725137d6a8108c2bed99322
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffff00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6afaa996226198b3e2610413ce1b3f78
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffff80000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2a8ce6747a7e39367828e290848502d9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffc0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 223736e8b8f89ca1e37b6deab40facf1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffe0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c0f797e50418b95fa6013333917a9480
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffff0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a758de37c2ece2a02c73c01fedc9a132
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffff8000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3a9b87ae77bae706803966c66c73adbd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffc000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d365ab8df8ffd782e358121a4a4fc541
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffe000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c8dcd9e6f75e6c36c8daee0466f0ed74
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffff000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c79a637beb1c0304f14014c037e736dd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffff800000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 105f0a25e84ac930d996281a5f954dd9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffc00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 42e4074b2927973e8d17ffa92f7fe615
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffe00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4fe2a9d2c1824449c69e3e0398f12963
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffff00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b7f29c1e1f62847a15253b28a1e9d712
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffff80000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 36ed5d29b903f31e8983ef8b0a2bf990
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffc0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 27b8070270810f9d023f9dd7ff3b4aa2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffe0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 94d46e155c1228f61d1a0db4815ecc4b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffff0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca6108d1d98071428eeceef1714b96dd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffff8000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dc5b25b71b6296cf73dd2cdcac2f70b1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffc000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 44aba95e8a06a2d9d3530d2677878c80
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffe000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a570d20e89b467e8f5176061b81dd396
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffff000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 758f4467a5d8f1e7307dc30b34e404f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffff800000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bcea28e9071b5a2302970ff352451bc5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffc00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7523c00bc177d331ad312e09c9015c1c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffe00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ccac61e3183747b3f5836da21a1bc4f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffff00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 707b075791878880b44189d3522b8c30
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffff80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7132d0c0e4a07593cf12ebb12be7688c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffc0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: effbac1644deb0c784275fe56e19ead3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffe0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a005063f30f4228b374e2459738f26bb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffff0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 29975b5f48bb68fcbbc7cea93b452ed7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffff8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cf3f2576e2afedc74bb1ca7eeec1c0e7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 07c403f5f966e0e3d9f296d6226dca28
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c8c20908249ab4a34d6dd0a31327ff1a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c0541329ecb6159ab23b7fc5e6a21bca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7aa1acf1a2ed9ba72bc6deb31d88b863
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 808bd8eddabb6f3bf0d5a8a27be1fe8a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 273c7d7685e14ec66bbb96b8f05b6ddd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 32752eefc8c2a93f91b6e73eb07cca6e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d893e7d62f6ce502c64f75e281f9c000
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8dfd999be5d0cfa35732c0ddc88ff5a5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 02647c76a300c3173b841487eb2bae9f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 172df8b02f04b53adab028b4e01acd87
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 054b3bf4998aeb05afd87ec536533a36
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3783f7bf44c97f065258a666cae03020
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: aad4c8a63f80954104de7b92cede1be1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cbfe61810fd5467ccdacb75800f3ac07
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 830d8a2590f7d8e1b55a737f4af45f34
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fffcd4683f858058e74314671d43fa2c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 523d0babbb82f46ebc9e70b1cd41ddd0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 344aab37080d7486f7d542a309e53eed
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 56c5609d0906b23ab9caca816f5dbebd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7026026eedd91adc6d831cdf9894bdc6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 88330baa4f2b618fc9d9b021bf503d5a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fc9e0ea22480b0bac935c8a8ebefcdcf
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 29ca779f398fb04f867da7e8a44756cb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 51f89c42985786bfc43c6df8ada36832
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6ac1de5fb8f21d874e91c53b560c50e3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 03aa9058490eda306001a8a9f48d0ca7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e34ec71d6128d4871865d617c30b37e3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 14be1c535b17cabd0c4d93529d69bf47
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c9ef67756507beec9dd3862883478044
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 40e231fa5a5948ce2134e92fc0664d4b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 03194b8e5dda5530d0c678c0b48f5d92
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 90bd086f237cc4fd99f4d76bde6b4826
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 19259761ca17130d6ed86d57cd7951ee
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d7cbb3f34b9b450f24b0e8518e54da6d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 725b9caebe9f7f417f4068d0d2ee20b3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9d924b934a90ce1fd39b8a9794f82672
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c50562bf094526a91c5bc63c0c224995
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d2f11805046743bd74f57188d9188df7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8dd274bd0f1b58ae345d9e7233f9b8f3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9d6bdc8f4ce5feb0f3bed2e4b9a9bb0b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fd5548bcf3f42565f7efa94562528d46
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d2ccaebd3a4c3e80b063748131ba4a71
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e03cb23d9e11c9d93f117e9c0a91b576
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 78f933a2081ac1db84f69d10f4523fe0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4061f7412ed320de0edc8851c2e2436f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9064ba1cd04ce6bab98474330814b4d4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 48391bffb9cfff80ac238c886ef0a461
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b8d2a67df5a999fdbf93edd0343296c9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: aaca7367396b69a221bd632bea386eec
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a80fd5020dfe65f5f16293ec92c6fd89
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2162995b8217a67f1abc342e146406f8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c6a6164b7a60bae4e986ffac28dfadd9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 64e0d7f900e3d9c83e4b8f96717b2146
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ad2561de8c1232f5d8dbab4739b6cbb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 279689e9a557f58b1c3bf40c97a90964
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c4637e4a5e6377f9cc5a8638045de029
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 492e607e5aea4688594b45f3aee3df90
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e8c4e4381feec74054954c05b777a00a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 91549514605f38246c9b724ad839f01d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 74b24e3b6fefe40a4f9ef7ac6e44d76a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2437a683dc5d4b52abb4a123a8df86c6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bb2852c891c5947d2ed44032c421b85f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b9f5fbd5e8a4264c0a85b80409afa5e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 30dab809f85a917fe924733f424ac589
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eaef5c1f8d605192646695ceadc65f32
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b8aa90040b4c15a12316b78e0f9586fc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 97fac8297ceaabc87d454350601e0673
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9b47ef567ac28dfe488492f157e2b2e0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b8426027ddb962b5c5ba7eb8bc9ab63
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e917fc77e71992a12dbe4c18068bec82
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dceebbc98840f8ae6daf76573b7e56f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4e11a9f74205125b61e0aee047eca20d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f60467f55a1f17eab88e800120cbc284
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d436649f600b449ee276530f0cd83c11
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3bc0e3656a9e3ac7cd378a737f53b637
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6bacae63d33b928aa8380f8d54d88c17
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8935ffbc75ae6251bf8e859f085adcb9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 93dc4970fe35f67747cb0562c06d875a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 14f9df858975851797ba604fb0d16cc7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 02ea0c98dca10b38c21b3b14e8d1b71f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8f091b1b5b0749b2adc803e63dda9b72
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 05b389e3322c6da08384345a4137fd08
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 381308c438f35b399f10ad71b05027d8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 68c230fcfa9279c3409fc423e2acbe04
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c84a475acb011f3f59f4f46b76274c0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 45119b68cb3f8399ee60066b5611a4d7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9423762f527a4060ffca312dcca22a16
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Ciphertext: f361a2745a33f056a5ac6ace2f08e344
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5ef145766eca849f5d011536a6557fdb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Ciphertext: c9af27b2c89c9b4cf4a0c4106ac80318
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Ciphertext: fb9c4f16c621f4eab7e9ac1d7551dd57
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 138e06fba466fa70854d8c2e524cffb2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Ciphertext: fb4bc78b225070773f04c40466d4e90c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8b2cbff1ed0150feda8a4799be94551f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Ciphertext: 08b30d7b3f27962709a36bcadfb974bd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Ciphertext: fdf6d32e044d77adcf37fb97ac213326
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Ciphertext: 93cb284ecdcfd781a8afe32077949e88
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7b017bb02ec87b2b94c96e40a26fc71a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Ciphertext: c5c038b6990664ab08a3aaa5df9f3266
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Ciphertext: 4b7020be37fab6259b2a27f4ec551576
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Ciphertext: 60136703374f64e860b48ce31f930716
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Ciphertext: 8d63a269b14d506ccc401ab8a9f1b591
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Ciphertext: d317f81dc6aa454aee4bd4a5a5cff4bd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Ciphertext: dddececd5354f04d530d76ed884246eb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Ciphertext: 41c5205cc8fd8eda9a3cffd2518f365a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Ciphertext: cf42fb474293d96eca9db1b37b1ba676
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Ciphertext: a231692607169b4ecdead5cd3b10db3e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Ciphertext: ace4b91c9c669e77e7acacd19859ed49
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Ciphertext: 75db7cfd4a7b2b62ab78a48f3ddaf4af
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Ciphertext: c1faba2d46e259cf480d7c38e4572a58
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Ciphertext: 241c45bc6ae16dee6eb7bea128701582
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Ciphertext: 8fd03057cf1364420c2b78069a3e2502
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Ciphertext: ddb505e6cc1384cbaec1df90b80beb20
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Ciphertext: 5674a3bed27bf4bd3622f9f5fe208306
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Ciphertext: b687f26a89cfbfbb8e5eeac54055315e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Ciphertext: 0547dd32d3b29ab6a4caeb606c5b6f78
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Ciphertext: 186861f8bc5386d31fb77f720c3226e6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Ciphertext: eacf1e6c4224efb38900b185ab1dfd42
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Ciphertext: d241aab05a42d319de81d874f5c7b90d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Ciphertext: 5eb9bc759e2ad8d2140a6c762ae9e1ab
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Ciphertext: 018596e15e78e2c064159defce5f3085
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Ciphertext: dd8a493514231cbf56eccee4c40889fb
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_var_txt.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_var_txt.txt
new file mode 100644
index 0000000..2340d2a
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_cbc_var_txt.txt
@@ -0,0 +1,1794 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarTxt192.rsp -extra-labels=Cipher=AES-192-CBC"
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 80000000000000000000000000000000
+Ciphertext: 6cd02513e8d4dc986b4afe087a60bd0c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: c0000000000000000000000000000000
+Ciphertext: 2ce1f8b7e30627c1c4519eada44bc436
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: e0000000000000000000000000000000
+Ciphertext: 9946b5f87af446f5796c1fee63a2da24
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: f0000000000000000000000000000000
+Ciphertext: 2a560364ce529efc21788779568d5555
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: f8000000000000000000000000000000
+Ciphertext: 35c1471837af446153bce55d5ba72a0a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fc000000000000000000000000000000
+Ciphertext: ce60bc52386234f158f84341e534cd9e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fe000000000000000000000000000000
+Ciphertext: 8c7c27ff32bcf8dc2dc57c90c2903961
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ff000000000000000000000000000000
+Ciphertext: 32bb6a7ec84499e166f936003d55a5bb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ff800000000000000000000000000000
+Ciphertext: a5c772e5c62631ef660ee1d5877f6d1b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffc00000000000000000000000000000
+Ciphertext: 030d7e5b64f380a7e4ea5387b5cd7f49
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffe00000000000000000000000000000
+Ciphertext: 0dc9a2610037009b698f11bb7e86c83e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fff00000000000000000000000000000
+Ciphertext: 0046612c766d1840c226364f1fa7ed72
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fff80000000000000000000000000000
+Ciphertext: 4880c7e08f27befe78590743c05e698b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffc0000000000000000000000000000
+Ciphertext: 2520ce829a26577f0f4822c4ecc87401
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffe0000000000000000000000000000
+Ciphertext: 8765e8acc169758319cb46dc7bcf3dca
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffff0000000000000000000000000000
+Ciphertext: e98f4ba4f073df4baa116d011dc24a28
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffff8000000000000000000000000000
+Ciphertext: f378f68c5dbf59e211b3a659a7317d94
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffc000000000000000000000000000
+Ciphertext: 283d3b069d8eb9fb432d74b96ca762b4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffe000000000000000000000000000
+Ciphertext: a7e1842e8a87861c221a500883245c51
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffff000000000000000000000000000
+Ciphertext: 77aa270471881be070fb52c7067ce732
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffff800000000000000000000000000
+Ciphertext: 01b0f476d484f43f1aeb6efa9361a8ac
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffc00000000000000000000000000
+Ciphertext: 1c3a94f1c052c55c2d8359aff2163b4f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffe00000000000000000000000000
+Ciphertext: e8a067b604d5373d8b0f2e05a03b341b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffff00000000000000000000000000
+Ciphertext: a7876ec87f5a09bfea42c77da30fd50e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffff80000000000000000000000000
+Ciphertext: 0cf3e9d3a42be5b854ca65b13f35f48d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffc0000000000000000000000000
+Ciphertext: 6c62f6bbcab7c3e821c9290f08892dda
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffe0000000000000000000000000
+Ciphertext: 7f5e05bd2068738196fee79ace7e3aec
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffff0000000000000000000000000
+Ciphertext: 440e0d733255cda92fb46e842fe58054
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffff8000000000000000000000000
+Ciphertext: aa5d5b1c4ea1b7a22e5583ac2e9ed8a7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffc000000000000000000000000
+Ciphertext: 77e537e89e8491e8662aae3bc809421d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffe000000000000000000000000
+Ciphertext: 997dd3e9f1598bfa73f75973f7e93b76
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffff000000000000000000000000
+Ciphertext: 1b38d4f7452afefcb7fc721244e4b72e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffff800000000000000000000000
+Ciphertext: 0be2b18252e774dda30cdda02c6906e3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffc00000000000000000000000
+Ciphertext: d2695e59c20361d82652d7d58b6f11b2
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffe00000000000000000000000
+Ciphertext: 902d88d13eae52089abd6143cfe394e9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffff00000000000000000000000
+Ciphertext: d49bceb3b823fedd602c305345734bd2
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffff80000000000000000000000
+Ciphertext: 707b1dbb0ffa40ef7d95def421233fae
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffc0000000000000000000000
+Ciphertext: 7ca0c1d93356d9eb8aa952084d75f913
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffe0000000000000000000000
+Ciphertext: f2cbf9cb186e270dd7bdb0c28febc57d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffff0000000000000000000000
+Ciphertext: c94337c37c4e790ab45780bd9c3674a0
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffff8000000000000000000000
+Ciphertext: 8e3558c135252fb9c9f367ed609467a1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffc000000000000000000000
+Ciphertext: 1b72eeaee4899b443914e5b3a57fba92
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffe000000000000000000000
+Ciphertext: 011865f91bc56868d051e52c9efd59b7
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffff000000000000000000000
+Ciphertext: e4771318ad7a63dd680f6e583b7747ea
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffff800000000000000000000
+Ciphertext: 61e3d194088dc8d97e9e6db37457eac5
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffc00000000000000000000
+Ciphertext: 36ff1ec9ccfbc349e5d356d063693ad6
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffe00000000000000000000
+Ciphertext: 3cc9e9a9be8cc3f6fb2ea24088e9bb19
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffff00000000000000000000
+Ciphertext: 1ee5ab003dc8722e74905d9a8fe3d350
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffff80000000000000000000
+Ciphertext: 245339319584b0a412412869d6c2eada
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffc0000000000000000000
+Ciphertext: 7bd496918115d14ed5380852716c8814
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffe0000000000000000000
+Ciphertext: 273ab2f2b4a366a57d582a339313c8b1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffff0000000000000000000
+Ciphertext: 113365a9ffbe3b0ca61e98507554168b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffff8000000000000000000
+Ciphertext: afa99c997ac478a0dea4119c9e45f8b1
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffc000000000000000000
+Ciphertext: 9216309a7842430b83ffb98638011512
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffe000000000000000000
+Ciphertext: 62abc792288258492a7cb45145f4b759
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffff000000000000000000
+Ciphertext: 534923c169d504d7519c15d30e756c50
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffff800000000000000000
+Ciphertext: fa75e05bcdc7e00c273fa33f6ee441d2
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffc00000000000000000
+Ciphertext: 7d350fa6057080f1086a56b17ec240db
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffe00000000000000000
+Ciphertext: f34e4a6324ea4a5c39a661c8fe5ada8f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffff00000000000000000
+Ciphertext: 0882a16f44088d42447a29ac090ec17e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffff80000000000000000
+Ciphertext: 3a3c15bfc11a9537c130687004e136ee
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffc0000000000000000
+Ciphertext: 22c0a7678dc6d8cf5c8a6d5a9960767c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffe0000000000000000
+Ciphertext: b46b09809d68b9a456432a79bdc2e38c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffff0000000000000000
+Ciphertext: 93baaffb35fbe739c17c6ac22eecf18f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffff8000000000000000
+Ciphertext: c8aa80a7850675bc007c46df06b49868
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffc000000000000000
+Ciphertext: 12c6f3877af421a918a84b775858021d
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffe000000000000000
+Ciphertext: 33f123282c5d633924f7d5ba3f3cab11
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffff000000000000000
+Ciphertext: a8f161002733e93ca4527d22c1a0c5bb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffff800000000000000
+Ciphertext: b72f70ebf3e3fda23f508eec76b42c02
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffc00000000000000
+Ciphertext: 6a9d965e6274143f25afdcfc88ffd77c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffe00000000000000
+Ciphertext: a0c74fd0b9361764ce91c5200b095357
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffff00000000000000
+Ciphertext: 091d1fdc2bd2c346cd5046a8c6209146
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffff80000000000000
+Ciphertext: e2a37580116cfb71856254496ab0aca8
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffc0000000000000
+Ciphertext: e0b3a00785917c7efc9adba322813571
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffe0000000000000
+Ciphertext: 733d41f4727b5ef0df4af4cf3cffa0cb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffff0000000000000
+Ciphertext: a99ebb030260826f981ad3e64490aa4f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffff8000000000000
+Ciphertext: 73f34c7d3eae5e80082c1647524308ee
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffc000000000000
+Ciphertext: 40ebd5ad082345b7a2097ccd3464da02
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffe000000000000
+Ciphertext: 7cc4ae9a424b2cec90c97153c2457ec5
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffff000000000000
+Ciphertext: 54d632d03aba0bd0f91877ebdd4d09cb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffff800000000000
+Ciphertext: d3427be7e4d27cd54f5fe37b03cf0897
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffc00000000000
+Ciphertext: b2099795e88cc158fd75ea133d7e7fbe
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffe00000000000
+Ciphertext: a6cae46fb6fadfe7a2c302a34242817b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffff00000000000
+Ciphertext: 026a7024d6a902e0b3ffccbaa910cc3f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffff80000000000
+Ciphertext: 156f07767a85a4312321f63968338a01
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffc0000000000
+Ciphertext: 15eec9ebf42b9ca76897d2cd6c5a12e2
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffe0000000000
+Ciphertext: db0d3a6fdcc13f915e2b302ceeb70fd8
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffff0000000000
+Ciphertext: 71dbf37e87a2e34d15b20e8f10e48924
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffff8000000000
+Ciphertext: c745c451e96ff3c045e4367c833e3b54
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffc000000000
+Ciphertext: 340da09c2dd11c3b679d08ccd27dd595
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffe000000000
+Ciphertext: 8279f7c0c2a03ee660c6d392db025d18
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffff000000000
+Ciphertext: a4b2c7d8eba531ff47c5041a55fbd1ec
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffff800000000
+Ciphertext: 74569a2ca5a7bd5131ce8dc7cbfbf72f
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffc00000000
+Ciphertext: 3713da0c0219b63454035613b5a403dd
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffe00000000
+Ciphertext: 8827551ddcc9df23fa72a3de4e9f0b07
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffff00000000
+Ciphertext: 2e3febfd625bfcd0a2c06eb460da1732
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffff80000000
+Ciphertext: ee82e6ba488156f76496311da6941deb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffc0000000
+Ciphertext: 4770446f01d1f391256e85a1b30d89d3
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffe0000000
+Ciphertext: af04b68f104f21ef2afb4767cf74143c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffff0000000
+Ciphertext: cf3579a9ba38c8e43653173e14f3a4c6
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffff8000000
+Ciphertext: b3bba904f4953e09b54800af2f62e7d4
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffc000000
+Ciphertext: fc4249656e14b29eb9c44829b4c59a46
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffe000000
+Ciphertext: 9b31568febe81cfc2e65af1c86d1a308
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffff000000
+Ciphertext: 9ca09c25f273a766db98a480ce8dfedc
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffff800000
+Ciphertext: b909925786f34c3c92d971883c9fbedf
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffc00000
+Ciphertext: 82647f1332fe570a9d4d92b2ee771d3b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffe00000
+Ciphertext: 3604a7e80832b3a99954bca6f5b9f501
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffff00000
+Ciphertext: 884607b128c5de3ab39a529a1ef51bef
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffff80000
+Ciphertext: 670cfa093d1dbdb2317041404102435e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffc0000
+Ciphertext: 7a867195f3ce8769cbd336502fbb5130
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffe0000
+Ciphertext: 52efcf64c72b2f7ca5b3c836b1078c15
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffff0000
+Ciphertext: 4019250f6eefb2ac5ccbcae044e75c7e
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffff8000
+Ciphertext: 022c4f6f5a017d292785627667ddef24
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffc000
+Ciphertext: e9c21078a2eb7e03250f71000fa9e3ed
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffe000
+Ciphertext: a13eaeeb9cd391da4e2b09490b3e7fad
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffff000
+Ciphertext: c958a171dca1d4ed53e1af1d380803a9
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffff800
+Ciphertext: 21442e07a110667f2583eaeeee44dc8c
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffc00
+Ciphertext: 59bbb353cf1dd867a6e33737af655e99
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffe00
+Ciphertext: 43cd3b25375d0ce41087ff9fe2829639
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffff00
+Ciphertext: 6b98b17e80d1118e3516bd768b285a84
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffff80
+Ciphertext: ae47ed3676ca0c08deea02d95b81db58
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffc0
+Ciphertext: 34ec40dc20413795ed53628ea748720b
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffe0
+Ciphertext: 4dc68163f8e9835473253542c8a65d46
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffff0
+Ciphertext: 2aabb999f43693175af65c6c612c46fb
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffff8
+Ciphertext: e01f94499dac3547515c5b1d756f0f58
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffffc
+Ciphertext: 9d12435a46480ce00ea349f71799df9a
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffffe
+Ciphertext: cef41d16d266bdfe46938ad7884cc0cf
+
+Cipher: AES-192-CBC
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffff
+Ciphertext: b13db4da1f718bc6904797c82bcf2d32
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6cd02513e8d4dc986b4afe087a60bd0c
+Plaintext: 80000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2ce1f8b7e30627c1c4519eada44bc436
+Plaintext: c0000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9946b5f87af446f5796c1fee63a2da24
+Plaintext: e0000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2a560364ce529efc21788779568d5555
+Plaintext: f0000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 35c1471837af446153bce55d5ba72a0a
+Plaintext: f8000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ce60bc52386234f158f84341e534cd9e
+Plaintext: fc000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8c7c27ff32bcf8dc2dc57c90c2903961
+Plaintext: fe000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 32bb6a7ec84499e166f936003d55a5bb
+Plaintext: ff000000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a5c772e5c62631ef660ee1d5877f6d1b
+Plaintext: ff800000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 030d7e5b64f380a7e4ea5387b5cd7f49
+Plaintext: ffc00000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0dc9a2610037009b698f11bb7e86c83e
+Plaintext: ffe00000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0046612c766d1840c226364f1fa7ed72
+Plaintext: fff00000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4880c7e08f27befe78590743c05e698b
+Plaintext: fff80000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2520ce829a26577f0f4822c4ecc87401
+Plaintext: fffc0000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8765e8acc169758319cb46dc7bcf3dca
+Plaintext: fffe0000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e98f4ba4f073df4baa116d011dc24a28
+Plaintext: ffff0000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f378f68c5dbf59e211b3a659a7317d94
+Plaintext: ffff8000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 283d3b069d8eb9fb432d74b96ca762b4
+Plaintext: ffffc000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a7e1842e8a87861c221a500883245c51
+Plaintext: ffffe000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77aa270471881be070fb52c7067ce732
+Plaintext: fffff000000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 01b0f476d484f43f1aeb6efa9361a8ac
+Plaintext: fffff800000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c3a94f1c052c55c2d8359aff2163b4f
+Plaintext: fffffc00000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e8a067b604d5373d8b0f2e05a03b341b
+Plaintext: fffffe00000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a7876ec87f5a09bfea42c77da30fd50e
+Plaintext: ffffff00000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0cf3e9d3a42be5b854ca65b13f35f48d
+Plaintext: ffffff80000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6c62f6bbcab7c3e821c9290f08892dda
+Plaintext: ffffffc0000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7f5e05bd2068738196fee79ace7e3aec
+Plaintext: ffffffe0000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 440e0d733255cda92fb46e842fe58054
+Plaintext: fffffff0000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: aa5d5b1c4ea1b7a22e5583ac2e9ed8a7
+Plaintext: fffffff8000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77e537e89e8491e8662aae3bc809421d
+Plaintext: fffffffc000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 997dd3e9f1598bfa73f75973f7e93b76
+Plaintext: fffffffe000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b38d4f7452afefcb7fc721244e4b72e
+Plaintext: ffffffff000000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0be2b18252e774dda30cdda02c6906e3
+Plaintext: ffffffff800000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d2695e59c20361d82652d7d58b6f11b2
+Plaintext: ffffffffc00000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 902d88d13eae52089abd6143cfe394e9
+Plaintext: ffffffffe00000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d49bceb3b823fedd602c305345734bd2
+Plaintext: fffffffff00000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 707b1dbb0ffa40ef7d95def421233fae
+Plaintext: fffffffff80000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7ca0c1d93356d9eb8aa952084d75f913
+Plaintext: fffffffffc0000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f2cbf9cb186e270dd7bdb0c28febc57d
+Plaintext: fffffffffe0000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c94337c37c4e790ab45780bd9c3674a0
+Plaintext: ffffffffff0000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8e3558c135252fb9c9f367ed609467a1
+Plaintext: ffffffffff8000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b72eeaee4899b443914e5b3a57fba92
+Plaintext: ffffffffffc000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 011865f91bc56868d051e52c9efd59b7
+Plaintext: ffffffffffe000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e4771318ad7a63dd680f6e583b7747ea
+Plaintext: fffffffffff000000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 61e3d194088dc8d97e9e6db37457eac5
+Plaintext: fffffffffff800000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 36ff1ec9ccfbc349e5d356d063693ad6
+Plaintext: fffffffffffc00000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3cc9e9a9be8cc3f6fb2ea24088e9bb19
+Plaintext: fffffffffffe00000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ee5ab003dc8722e74905d9a8fe3d350
+Plaintext: ffffffffffff00000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 245339319584b0a412412869d6c2eada
+Plaintext: ffffffffffff80000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7bd496918115d14ed5380852716c8814
+Plaintext: ffffffffffffc0000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 273ab2f2b4a366a57d582a339313c8b1
+Plaintext: ffffffffffffe0000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 113365a9ffbe3b0ca61e98507554168b
+Plaintext: fffffffffffff0000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: afa99c997ac478a0dea4119c9e45f8b1
+Plaintext: fffffffffffff8000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9216309a7842430b83ffb98638011512
+Plaintext: fffffffffffffc000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 62abc792288258492a7cb45145f4b759
+Plaintext: fffffffffffffe000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 534923c169d504d7519c15d30e756c50
+Plaintext: ffffffffffffff000000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fa75e05bcdc7e00c273fa33f6ee441d2
+Plaintext: ffffffffffffff800000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7d350fa6057080f1086a56b17ec240db
+Plaintext: ffffffffffffffc00000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f34e4a6324ea4a5c39a661c8fe5ada8f
+Plaintext: ffffffffffffffe00000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0882a16f44088d42447a29ac090ec17e
+Plaintext: fffffffffffffff00000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3a3c15bfc11a9537c130687004e136ee
+Plaintext: fffffffffffffff80000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 22c0a7678dc6d8cf5c8a6d5a9960767c
+Plaintext: fffffffffffffffc0000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b46b09809d68b9a456432a79bdc2e38c
+Plaintext: fffffffffffffffe0000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 93baaffb35fbe739c17c6ac22eecf18f
+Plaintext: ffffffffffffffff0000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c8aa80a7850675bc007c46df06b49868
+Plaintext: ffffffffffffffff8000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 12c6f3877af421a918a84b775858021d
+Plaintext: ffffffffffffffffc000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 33f123282c5d633924f7d5ba3f3cab11
+Plaintext: ffffffffffffffffe000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a8f161002733e93ca4527d22c1a0c5bb
+Plaintext: fffffffffffffffff000000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b72f70ebf3e3fda23f508eec76b42c02
+Plaintext: fffffffffffffffff800000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6a9d965e6274143f25afdcfc88ffd77c
+Plaintext: fffffffffffffffffc00000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a0c74fd0b9361764ce91c5200b095357
+Plaintext: fffffffffffffffffe00000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 091d1fdc2bd2c346cd5046a8c6209146
+Plaintext: ffffffffffffffffff00000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e2a37580116cfb71856254496ab0aca8
+Plaintext: ffffffffffffffffff80000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e0b3a00785917c7efc9adba322813571
+Plaintext: ffffffffffffffffffc0000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 733d41f4727b5ef0df4af4cf3cffa0cb
+Plaintext: ffffffffffffffffffe0000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a99ebb030260826f981ad3e64490aa4f
+Plaintext: fffffffffffffffffff0000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 73f34c7d3eae5e80082c1647524308ee
+Plaintext: fffffffffffffffffff8000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 40ebd5ad082345b7a2097ccd3464da02
+Plaintext: fffffffffffffffffffc000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7cc4ae9a424b2cec90c97153c2457ec5
+Plaintext: fffffffffffffffffffe000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 54d632d03aba0bd0f91877ebdd4d09cb
+Plaintext: ffffffffffffffffffff000000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d3427be7e4d27cd54f5fe37b03cf0897
+Plaintext: ffffffffffffffffffff800000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b2099795e88cc158fd75ea133d7e7fbe
+Plaintext: ffffffffffffffffffffc00000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a6cae46fb6fadfe7a2c302a34242817b
+Plaintext: ffffffffffffffffffffe00000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 026a7024d6a902e0b3ffccbaa910cc3f
+Plaintext: fffffffffffffffffffff00000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 156f07767a85a4312321f63968338a01
+Plaintext: fffffffffffffffffffff80000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 15eec9ebf42b9ca76897d2cd6c5a12e2
+Plaintext: fffffffffffffffffffffc0000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: db0d3a6fdcc13f915e2b302ceeb70fd8
+Plaintext: fffffffffffffffffffffe0000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 71dbf37e87a2e34d15b20e8f10e48924
+Plaintext: ffffffffffffffffffffff0000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c745c451e96ff3c045e4367c833e3b54
+Plaintext: ffffffffffffffffffffff8000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 340da09c2dd11c3b679d08ccd27dd595
+Plaintext: ffffffffffffffffffffffc000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8279f7c0c2a03ee660c6d392db025d18
+Plaintext: ffffffffffffffffffffffe000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a4b2c7d8eba531ff47c5041a55fbd1ec
+Plaintext: fffffffffffffffffffffff000000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 74569a2ca5a7bd5131ce8dc7cbfbf72f
+Plaintext: fffffffffffffffffffffff800000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3713da0c0219b63454035613b5a403dd
+Plaintext: fffffffffffffffffffffffc00000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8827551ddcc9df23fa72a3de4e9f0b07
+Plaintext: fffffffffffffffffffffffe00000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e3febfd625bfcd0a2c06eb460da1732
+Plaintext: ffffffffffffffffffffffff00000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ee82e6ba488156f76496311da6941deb
+Plaintext: ffffffffffffffffffffffff80000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4770446f01d1f391256e85a1b30d89d3
+Plaintext: ffffffffffffffffffffffffc0000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: af04b68f104f21ef2afb4767cf74143c
+Plaintext: ffffffffffffffffffffffffe0000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cf3579a9ba38c8e43653173e14f3a4c6
+Plaintext: fffffffffffffffffffffffff0000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b3bba904f4953e09b54800af2f62e7d4
+Plaintext: fffffffffffffffffffffffff8000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fc4249656e14b29eb9c44829b4c59a46
+Plaintext: fffffffffffffffffffffffffc000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9b31568febe81cfc2e65af1c86d1a308
+Plaintext: fffffffffffffffffffffffffe000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9ca09c25f273a766db98a480ce8dfedc
+Plaintext: ffffffffffffffffffffffffff000000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b909925786f34c3c92d971883c9fbedf
+Plaintext: ffffffffffffffffffffffffff800000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 82647f1332fe570a9d4d92b2ee771d3b
+Plaintext: ffffffffffffffffffffffffffc00000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3604a7e80832b3a99954bca6f5b9f501
+Plaintext: ffffffffffffffffffffffffffe00000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 884607b128c5de3ab39a529a1ef51bef
+Plaintext: fffffffffffffffffffffffffff00000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 670cfa093d1dbdb2317041404102435e
+Plaintext: fffffffffffffffffffffffffff80000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7a867195f3ce8769cbd336502fbb5130
+Plaintext: fffffffffffffffffffffffffffc0000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 52efcf64c72b2f7ca5b3c836b1078c15
+Plaintext: fffffffffffffffffffffffffffe0000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4019250f6eefb2ac5ccbcae044e75c7e
+Plaintext: ffffffffffffffffffffffffffff0000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 022c4f6f5a017d292785627667ddef24
+Plaintext: ffffffffffffffffffffffffffff8000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e9c21078a2eb7e03250f71000fa9e3ed
+Plaintext: ffffffffffffffffffffffffffffc000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a13eaeeb9cd391da4e2b09490b3e7fad
+Plaintext: ffffffffffffffffffffffffffffe000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c958a171dca1d4ed53e1af1d380803a9
+Plaintext: fffffffffffffffffffffffffffff000
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 21442e07a110667f2583eaeeee44dc8c
+Plaintext: fffffffffffffffffffffffffffff800
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 59bbb353cf1dd867a6e33737af655e99
+Plaintext: fffffffffffffffffffffffffffffc00
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 43cd3b25375d0ce41087ff9fe2829639
+Plaintext: fffffffffffffffffffffffffffffe00
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6b98b17e80d1118e3516bd768b285a84
+Plaintext: ffffffffffffffffffffffffffffff00
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ae47ed3676ca0c08deea02d95b81db58
+Plaintext: ffffffffffffffffffffffffffffff80
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 34ec40dc20413795ed53628ea748720b
+Plaintext: ffffffffffffffffffffffffffffffc0
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4dc68163f8e9835473253542c8a65d46
+Plaintext: ffffffffffffffffffffffffffffffe0
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2aabb999f43693175af65c6c612c46fb
+Plaintext: fffffffffffffffffffffffffffffff0
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e01f94499dac3547515c5b1d756f0f58
+Plaintext: fffffffffffffffffffffffffffffff8
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9d12435a46480ce00ea349f71799df9a
+Plaintext: fffffffffffffffffffffffffffffffc
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cef41d16d266bdfe46938ad7884cc0cf
+Plaintext: fffffffffffffffffffffffffffffffe
+
+Cipher: AES-192-CBC
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b13db4da1f718bc6904797c82bcf2d32
+Plaintext: ffffffffffffffffffffffffffffffff
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_gf_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_gf_sbox.txt
new file mode 100644
index 0000000..6314f8f
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_gf_sbox.txt
@@ -0,0 +1,86 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCGFSbox192.rsp -extra-labels=Cipher=AES-192-CTR -swap-iv-plaintext"
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 1b077a6af4b7f98229de786d7516b639
+Ciphertext: 275cfc0413d8ccb70513c3859b1d0f72
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 9c2d8842e5f48f57648205d39a239af1
+Ciphertext: c9b8135ff1b5adc413dfd053b21bd96d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: bff52510095f518ecca60af4205444bb
+Ciphertext: 4a3650c3371ce2eb35e389a171427440
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 51719783d3185a535bd75adc65071ce1
+Ciphertext: 4f354592ff7c8847d2d0870ca9481b7c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 26aa49dcfe7629a8901a69a9914e6dfd
+Ciphertext: d5e08bf9a182e857cf40b3a36ee248cc
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 941a4773058224e1ef66d10e0a6ee782
+Ciphertext: 067cd9d3749207791841562507fa9626
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 275cfc0413d8ccb70513c3859b1d0f72
+IV: 1b077a6af4b7f98229de786d7516b639
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c9b8135ff1b5adc413dfd053b21bd96d
+IV: 9c2d8842e5f48f57648205d39a239af1
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4a3650c3371ce2eb35e389a171427440
+IV: bff52510095f518ecca60af4205444bb
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4f354592ff7c8847d2d0870ca9481b7c
+IV: 51719783d3185a535bd75adc65071ce1
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d5e08bf9a182e857cf40b3a36ee248cc
+IV: 26aa49dcfe7629a8901a69a9914e6dfd
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 067cd9d3749207791841562507fa9626
+IV: 941a4773058224e1ef66d10e0a6ee782
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_key_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_key_sbox.txt
new file mode 100644
index 0000000..5f12a64
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_key_sbox.txt
@@ -0,0 +1,338 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCKeySbox192.rsp -extra-labels=Cipher=AES-192-CTR"
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0956259c9cd5cfd0181cca53380cde06
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 15d20f6ebc7e649fd95b76b107e6daba967c8a9484797f29
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8e4e18424e591a3d5b6f0876f16f8594
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: a8a282ee31c03fae4f8e9b8930d5473c2ed695a347e88b7c
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93f3270cfc877ef17e106ce938979cb0
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: cd62376d5ebb414917f0c78f05266433dc9192a1ec943300
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7f6c25ff41858561bb62f36492e93c29
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 502a6ab36984af268bf423c7f509205207fc1552af4a91e5
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8e06556dcbb00b809a025047cff2a940
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 25a39dbfd8034f71a81f9ceb55026e4037f8f6aa30ab44ce
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3608c344868e94555d23a120f8a5502d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: e08c15411774ec4a908b64eadc6ac4199c7cd453f3aaef53
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77da2021935b840b7f5dcc39132da9e5
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 3b375a1ff7e8d44409696e6326ec9dec86138e2ae010b980
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3b7c24f825e3bf9873c9f14d39a0e6f4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 950bb9f22cc35be6fe79f52c320af93dec5bc9c0c2f9cd53
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 64ebf95686b353508c90ecd8b6134316
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 7001c487cc3e572cfc92f4d0e697d982e8856fdcc957da40
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff558c5d27210b7929b73fc708eb4cf1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: f029ce61d4e5a405b41ead0a883cc6a737da2cf50a6c92ae
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a2c3b2a818075490a7b4c14380f02702
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cfe4d74002696ccf7d87b14a2f9cafc9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: b0ab0a6a818baef2d11fa33eac947284fb7d748cfb75e570
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2eafd86f63b109b91f5dbb3a3fb7e13
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ee053aa011c8b428cdcc3636313c54d6a03cac01c71579d6
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b9fdd1c5975655f539998b306a324af
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dd619e1cf204446112e0af2b9afa8f8c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 982215f4e173dfa0fcffe5d3da41c4812c7bcc8ed3540f93
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d4f0aae13c8fe9339fbf9e69ed0ad74d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 98c6b8e01e379fbd14e61af6af891596583565f2a27d59e9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 19c80ec4a6deb7e5ed1033dda933498f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: b3ad5cea1dddc214ca969ac35f37dae1a9a9d1528f89bb35
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3cf5e1d21a17956d1dffad6a7c41c659
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 45899367c3132849763073c435a9288a766c8b9ec2308516
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 69fd12e8505f8ded2fdcb197a121b362
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ec250e04c3903f602647b85a401a1ae7ca2f02f67fa4253e
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8aa584e2cc4d17417a97cb9a28ba29c8
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: d077a03bd8a38973928ccafe4a9d2f455130bd0af5ae46a9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: abc786fb1edb504580c4d882ef29a0c7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: d184c36cf0dddfec39e654195006022237871a47c33d3198
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e19fb60a3e1de0166f483c97824a978
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 4c6994ffa9dcdc805b60c2c0095334c42d95a8fc0ca5b080
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7656709538dd5fec41e0ce6a0f8e207d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: c88f5b00a4ef9a6840e2acaf33f00a3bdc4e25895303fa72
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a67cf333b314d411d3c0ae6e1cfcd8f5
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd
+IV: 00000000000000000000000000000000
+Ciphertext: 0956259c9cd5cfd0181cca53380cde06
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 15d20f6ebc7e649fd95b76b107e6daba967c8a9484797f29
+IV: 00000000000000000000000000000000
+Ciphertext: 8e4e18424e591a3d5b6f0876f16f8594
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: a8a282ee31c03fae4f8e9b8930d5473c2ed695a347e88b7c
+IV: 00000000000000000000000000000000
+Ciphertext: 93f3270cfc877ef17e106ce938979cb0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: cd62376d5ebb414917f0c78f05266433dc9192a1ec943300
+IV: 00000000000000000000000000000000
+Ciphertext: 7f6c25ff41858561bb62f36492e93c29
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 502a6ab36984af268bf423c7f509205207fc1552af4a91e5
+IV: 00000000000000000000000000000000
+Ciphertext: 8e06556dcbb00b809a025047cff2a940
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 25a39dbfd8034f71a81f9ceb55026e4037f8f6aa30ab44ce
+IV: 00000000000000000000000000000000
+Ciphertext: 3608c344868e94555d23a120f8a5502d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: e08c15411774ec4a908b64eadc6ac4199c7cd453f3aaef53
+IV: 00000000000000000000000000000000
+Ciphertext: 77da2021935b840b7f5dcc39132da9e5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 3b375a1ff7e8d44409696e6326ec9dec86138e2ae010b980
+IV: 00000000000000000000000000000000
+Ciphertext: 3b7c24f825e3bf9873c9f14d39a0e6f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 950bb9f22cc35be6fe79f52c320af93dec5bc9c0c2f9cd53
+IV: 00000000000000000000000000000000
+Ciphertext: 64ebf95686b353508c90ecd8b6134316
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 7001c487cc3e572cfc92f4d0e697d982e8856fdcc957da40
+IV: 00000000000000000000000000000000
+Ciphertext: ff558c5d27210b7929b73fc708eb4cf1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: f029ce61d4e5a405b41ead0a883cc6a737da2cf50a6c92ae
+IV: 00000000000000000000000000000000
+Ciphertext: a2c3b2a818075490a7b4c14380f02702
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79
+IV: 00000000000000000000000000000000
+Ciphertext: cfe4d74002696ccf7d87b14a2f9cafc9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: b0ab0a6a818baef2d11fa33eac947284fb7d748cfb75e570
+IV: 00000000000000000000000000000000
+Ciphertext: d2eafd86f63b109b91f5dbb3a3fb7e13
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ee053aa011c8b428cdcc3636313c54d6a03cac01c71579d6
+IV: 00000000000000000000000000000000
+Ciphertext: 9b9fdd1c5975655f539998b306a324af
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3
+IV: 00000000000000000000000000000000
+Ciphertext: dd619e1cf204446112e0af2b9afa8f8c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 982215f4e173dfa0fcffe5d3da41c4812c7bcc8ed3540f93
+IV: 00000000000000000000000000000000
+Ciphertext: d4f0aae13c8fe9339fbf9e69ed0ad74d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 98c6b8e01e379fbd14e61af6af891596583565f2a27d59e9
+IV: 00000000000000000000000000000000
+Ciphertext: 19c80ec4a6deb7e5ed1033dda933498f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: b3ad5cea1dddc214ca969ac35f37dae1a9a9d1528f89bb35
+IV: 00000000000000000000000000000000
+Ciphertext: 3cf5e1d21a17956d1dffad6a7c41c659
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 45899367c3132849763073c435a9288a766c8b9ec2308516
+IV: 00000000000000000000000000000000
+Ciphertext: 69fd12e8505f8ded2fdcb197a121b362
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ec250e04c3903f602647b85a401a1ae7ca2f02f67fa4253e
+IV: 00000000000000000000000000000000
+Ciphertext: 8aa584e2cc4d17417a97cb9a28ba29c8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: d077a03bd8a38973928ccafe4a9d2f455130bd0af5ae46a9
+IV: 00000000000000000000000000000000
+Ciphertext: abc786fb1edb504580c4d882ef29a0c7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: d184c36cf0dddfec39e654195006022237871a47c33d3198
+IV: 00000000000000000000000000000000
+Ciphertext: 2e19fb60a3e1de0166f483c97824a978
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 4c6994ffa9dcdc805b60c2c0095334c42d95a8fc0ca5b080
+IV: 00000000000000000000000000000000
+Ciphertext: 7656709538dd5fec41e0ce6a0f8e207d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: c88f5b00a4ef9a6840e2acaf33f00a3bdc4e25895303fa72
+IV: 00000000000000000000000000000000
+Ciphertext: a67cf333b314d411d3c0ae6e1cfcd8f5
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_var_key.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_var_key.txt
new file mode 100644
index 0000000..a859e62
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_var_key.txt
@@ -0,0 +1,2690 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarKey192.rsp -extra-labels=Cipher=AES-192-CTR"
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 800000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: de885dc87f5a92594082d02cc1e1b42c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: c00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 132b074e80f2a597bf5febd8ea5da55e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: e00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6eccedf8de592c22fb81347b79f2db1f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: f00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 180b09f267c45145db2f826c2582d35c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: f80000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: edd807ef7652d7eb0e13c8b5e15b3bc0
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fc0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9978bcf8dd8fd72241223ad24b31b8a4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fe0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5310f654343e8f27e12c83a48d24ff81
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ff0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 833f71258d53036b02952c76c744f5a1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ff8000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eba83ff200cff9318a92f8691a06b09f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffc000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ff620ccbe9f3292abdf2176b09f04eba
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffe000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7ababc4b3f516c9aafb35f4140b548f9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fff000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: aa187824d9c4582b0916493ecbde8c57
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fff800000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c0ad553177fd5ea1092c9d626a29dc4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffc00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a5dc46c37261194124ecaebd680408ec
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffe00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e4f2f2ae23e9b10bacfa58601531ba54
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffff00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b7d67cf1a1e91e8ff3a57a172c7bf412
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffff80000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 26706be06967884e847d137128ce47b3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffc0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b2f8b409b0585909aad3a7b5a219072a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffe0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5e4b7bff0290c78344c54a23b722cd20
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffff0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 07093657552d4414227ce161e9ebf7dd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffff8000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e1af1e7d8bc225ed4dffb771ecbb9e67
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffc000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ef6555253635d8432156cfd9c11b145a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffe000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fb4035074a5d4260c90cbd6da6c3fceb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffff000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 446ee416f9ad1c103eb0cc96751c88e1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffff800000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 198ae2a4637ac0a7890a8fd1485445c9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffc00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 562012ec8faded0825fb2fa70ab30cbd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffe00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc8a64b46b5d88bf7f247d4dbaf38f05
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffff00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a168253762e2cc81b42d1e5001762699
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffff80000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b41f83b38ce5032c6cd7af98cf62061
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffc0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 61a89990cd1411750d5fb0dc988447d4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffe0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5accc8ed629edf8c68a539183b1ea82
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffff0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b16fa71f846b81a13f361c43a851f290
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffff8000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4fad6efdff5975aee7692234bcd54488
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffc000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ebfdb05a783d03082dfe5fdd80a00b17
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffe000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eb81b584766997af6ba5529d3bdd8609
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffff000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0cf4ff4f49c8a0ca060c443499e29313
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffff800000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc4ba8a8e029f8b26d8afff9df133bb6
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffc00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fefebf64360f38e4e63558f0ffc550c3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffe00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 12ad98cbf725137d6a8108c2bed99322
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffff00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6afaa996226198b3e2610413ce1b3f78
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffff80000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2a8ce6747a7e39367828e290848502d9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffc0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 223736e8b8f89ca1e37b6deab40facf1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffe0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c0f797e50418b95fa6013333917a9480
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffff0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a758de37c2ece2a02c73c01fedc9a132
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffff8000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a9b87ae77bae706803966c66c73adbd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffc000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d365ab8df8ffd782e358121a4a4fc541
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffe000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c8dcd9e6f75e6c36c8daee0466f0ed74
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffff000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c79a637beb1c0304f14014c037e736dd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffff800000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 105f0a25e84ac930d996281a5f954dd9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffc00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 42e4074b2927973e8d17ffa92f7fe615
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffe00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4fe2a9d2c1824449c69e3e0398f12963
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffff00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b7f29c1e1f62847a15253b28a1e9d712
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffff80000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36ed5d29b903f31e8983ef8b0a2bf990
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffc0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27b8070270810f9d023f9dd7ff3b4aa2
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffe0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 94d46e155c1228f61d1a0db4815ecc4b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffff0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca6108d1d98071428eeceef1714b96dd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffff8000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dc5b25b71b6296cf73dd2cdcac2f70b1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffc000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 44aba95e8a06a2d9d3530d2677878c80
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffe000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a570d20e89b467e8f5176061b81dd396
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffff000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 758f4467a5d8f1e7307dc30b34e404f4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffff800000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bcea28e9071b5a2302970ff352451bc5
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffc00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7523c00bc177d331ad312e09c9015c1c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffe00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ccac61e3183747b3f5836da21a1bc4f4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffff00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 707b075791878880b44189d3522b8c30
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffff80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7132d0c0e4a07593cf12ebb12be7688c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffc0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: effbac1644deb0c784275fe56e19ead3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffe0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a005063f30f4228b374e2459738f26bb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffff0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 29975b5f48bb68fcbbc7cea93b452ed7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffff8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cf3f2576e2afedc74bb1ca7eeec1c0e7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 07c403f5f966e0e3d9f296d6226dca28
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c8c20908249ab4a34d6dd0a31327ff1a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c0541329ecb6159ab23b7fc5e6a21bca
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7aa1acf1a2ed9ba72bc6deb31d88b863
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 808bd8eddabb6f3bf0d5a8a27be1fe8a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 273c7d7685e14ec66bbb96b8f05b6ddd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 32752eefc8c2a93f91b6e73eb07cca6e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d893e7d62f6ce502c64f75e281f9c000
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8dfd999be5d0cfa35732c0ddc88ff5a5
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 02647c76a300c3173b841487eb2bae9f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 172df8b02f04b53adab028b4e01acd87
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 054b3bf4998aeb05afd87ec536533a36
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3783f7bf44c97f065258a666cae03020
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: aad4c8a63f80954104de7b92cede1be1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cbfe61810fd5467ccdacb75800f3ac07
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 830d8a2590f7d8e1b55a737f4af45f34
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fffcd4683f858058e74314671d43fa2c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 523d0babbb82f46ebc9e70b1cd41ddd0
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 344aab37080d7486f7d542a309e53eed
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 56c5609d0906b23ab9caca816f5dbebd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7026026eedd91adc6d831cdf9894bdc6
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 88330baa4f2b618fc9d9b021bf503d5a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fc9e0ea22480b0bac935c8a8ebefcdcf
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 29ca779f398fb04f867da7e8a44756cb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 51f89c42985786bfc43c6df8ada36832
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6ac1de5fb8f21d874e91c53b560c50e3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 03aa9058490eda306001a8a9f48d0ca7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e34ec71d6128d4871865d617c30b37e3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 14be1c535b17cabd0c4d93529d69bf47
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c9ef67756507beec9dd3862883478044
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 40e231fa5a5948ce2134e92fc0664d4b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 03194b8e5dda5530d0c678c0b48f5d92
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 90bd086f237cc4fd99f4d76bde6b4826
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 19259761ca17130d6ed86d57cd7951ee
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d7cbb3f34b9b450f24b0e8518e54da6d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 725b9caebe9f7f417f4068d0d2ee20b3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9d924b934a90ce1fd39b8a9794f82672
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c50562bf094526a91c5bc63c0c224995
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2f11805046743bd74f57188d9188df7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8dd274bd0f1b58ae345d9e7233f9b8f3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9d6bdc8f4ce5feb0f3bed2e4b9a9bb0b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fd5548bcf3f42565f7efa94562528d46
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2ccaebd3a4c3e80b063748131ba4a71
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e03cb23d9e11c9d93f117e9c0a91b576
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 78f933a2081ac1db84f69d10f4523fe0
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4061f7412ed320de0edc8851c2e2436f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9064ba1cd04ce6bab98474330814b4d4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 48391bffb9cfff80ac238c886ef0a461
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b8d2a67df5a999fdbf93edd0343296c9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: aaca7367396b69a221bd632bea386eec
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a80fd5020dfe65f5f16293ec92c6fd89
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2162995b8217a67f1abc342e146406f8
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c6a6164b7a60bae4e986ffac28dfadd9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 64e0d7f900e3d9c83e4b8f96717b2146
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ad2561de8c1232f5d8dbab4739b6cbb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 279689e9a557f58b1c3bf40c97a90964
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c4637e4a5e6377f9cc5a8638045de029
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 492e607e5aea4688594b45f3aee3df90
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e8c4e4381feec74054954c05b777a00a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 91549514605f38246c9b724ad839f01d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 74b24e3b6fefe40a4f9ef7ac6e44d76a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2437a683dc5d4b52abb4a123a8df86c6
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bb2852c891c5947d2ed44032c421b85f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b9f5fbd5e8a4264c0a85b80409afa5e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 30dab809f85a917fe924733f424ac589
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eaef5c1f8d605192646695ceadc65f32
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b8aa90040b4c15a12316b78e0f9586fc
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 97fac8297ceaabc87d454350601e0673
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b47ef567ac28dfe488492f157e2b2e0
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b8426027ddb962b5c5ba7eb8bc9ab63
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e917fc77e71992a12dbe4c18068bec82
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dceebbc98840f8ae6daf76573b7e56f4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4e11a9f74205125b61e0aee047eca20d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f60467f55a1f17eab88e800120cbc284
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d436649f600b449ee276530f0cd83c11
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3bc0e3656a9e3ac7cd378a737f53b637
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6bacae63d33b928aa8380f8d54d88c17
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8935ffbc75ae6251bf8e859f085adcb9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93dc4970fe35f67747cb0562c06d875a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 14f9df858975851797ba604fb0d16cc7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 02ea0c98dca10b38c21b3b14e8d1b71f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8f091b1b5b0749b2adc803e63dda9b72
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 05b389e3322c6da08384345a4137fd08
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 381308c438f35b399f10ad71b05027d8
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 68c230fcfa9279c3409fc423e2acbe04
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c84a475acb011f3f59f4f46b76274c0
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 45119b68cb3f8399ee60066b5611a4d7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9423762f527a4060ffca312dcca22a16
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f361a2745a33f056a5ac6ace2f08e344
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5ef145766eca849f5d011536a6557fdb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c9af27b2c89c9b4cf4a0c4106ac80318
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fb9c4f16c621f4eab7e9ac1d7551dd57
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 138e06fba466fa70854d8c2e524cffb2
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fb4bc78b225070773f04c40466d4e90c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8b2cbff1ed0150feda8a4799be94551f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 08b30d7b3f27962709a36bcadfb974bd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fdf6d32e044d77adcf37fb97ac213326
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93cb284ecdcfd781a8afe32077949e88
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7b017bb02ec87b2b94c96e40a26fc71a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c5c038b6990664ab08a3aaa5df9f3266
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4b7020be37fab6259b2a27f4ec551576
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 60136703374f64e860b48ce31f930716
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8d63a269b14d506ccc401ab8a9f1b591
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d317f81dc6aa454aee4bd4a5a5cff4bd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dddececd5354f04d530d76ed884246eb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 41c5205cc8fd8eda9a3cffd2518f365a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cf42fb474293d96eca9db1b37b1ba676
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a231692607169b4ecdead5cd3b10db3e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ace4b91c9c669e77e7acacd19859ed49
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 75db7cfd4a7b2b62ab78a48f3ddaf4af
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c1faba2d46e259cf480d7c38e4572a58
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 241c45bc6ae16dee6eb7bea128701582
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8fd03057cf1364420c2b78069a3e2502
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ddb505e6cc1384cbaec1df90b80beb20
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5674a3bed27bf4bd3622f9f5fe208306
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b687f26a89cfbfbb8e5eeac54055315e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0547dd32d3b29ab6a4caeb606c5b6f78
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 186861f8bc5386d31fb77f720c3226e6
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eacf1e6c4224efb38900b185ab1dfd42
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d241aab05a42d319de81d874f5c7b90d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5eb9bc759e2ad8d2140a6c762ae9e1ab
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 018596e15e78e2c064159defce5f3085
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dd8a493514231cbf56eccee4c40889fb
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 800000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: de885dc87f5a92594082d02cc1e1b42c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: c00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 132b074e80f2a597bf5febd8ea5da55e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: e00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6eccedf8de592c22fb81347b79f2db1f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: f00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 180b09f267c45145db2f826c2582d35c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: f80000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: edd807ef7652d7eb0e13c8b5e15b3bc0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fc0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9978bcf8dd8fd72241223ad24b31b8a4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fe0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5310f654343e8f27e12c83a48d24ff81
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ff0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 833f71258d53036b02952c76c744f5a1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ff8000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eba83ff200cff9318a92f8691a06b09f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffc000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ff620ccbe9f3292abdf2176b09f04eba
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffe000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7ababc4b3f516c9aafb35f4140b548f9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fff000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: aa187824d9c4582b0916493ecbde8c57
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fff800000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c0ad553177fd5ea1092c9d626a29dc4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffc00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a5dc46c37261194124ecaebd680408ec
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffe00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e4f2f2ae23e9b10bacfa58601531ba54
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffff00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b7d67cf1a1e91e8ff3a57a172c7bf412
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffff80000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 26706be06967884e847d137128ce47b3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffc0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b2f8b409b0585909aad3a7b5a219072a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffe0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5e4b7bff0290c78344c54a23b722cd20
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffff0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 07093657552d4414227ce161e9ebf7dd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffff8000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e1af1e7d8bc225ed4dffb771ecbb9e67
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffc000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ef6555253635d8432156cfd9c11b145a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffe000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fb4035074a5d4260c90cbd6da6c3fceb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffff000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 446ee416f9ad1c103eb0cc96751c88e1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffff800000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 198ae2a4637ac0a7890a8fd1485445c9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffc00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 562012ec8faded0825fb2fa70ab30cbd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffe00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc8a64b46b5d88bf7f247d4dbaf38f05
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffff00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a168253762e2cc81b42d1e5001762699
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffff80000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b41f83b38ce5032c6cd7af98cf62061
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffc0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 61a89990cd1411750d5fb0dc988447d4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffe0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5accc8ed629edf8c68a539183b1ea82
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffff0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b16fa71f846b81a13f361c43a851f290
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffff8000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4fad6efdff5975aee7692234bcd54488
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffc000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ebfdb05a783d03082dfe5fdd80a00b17
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffe000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eb81b584766997af6ba5529d3bdd8609
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffff000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0cf4ff4f49c8a0ca060c443499e29313
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffff800000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc4ba8a8e029f8b26d8afff9df133bb6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffc00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fefebf64360f38e4e63558f0ffc550c3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffe00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 12ad98cbf725137d6a8108c2bed99322
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffff00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6afaa996226198b3e2610413ce1b3f78
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffff80000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2a8ce6747a7e39367828e290848502d9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffc0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 223736e8b8f89ca1e37b6deab40facf1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffe0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c0f797e50418b95fa6013333917a9480
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffff0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a758de37c2ece2a02c73c01fedc9a132
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffff8000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3a9b87ae77bae706803966c66c73adbd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffc000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d365ab8df8ffd782e358121a4a4fc541
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffe000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c8dcd9e6f75e6c36c8daee0466f0ed74
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffff000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c79a637beb1c0304f14014c037e736dd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffff800000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 105f0a25e84ac930d996281a5f954dd9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffc00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 42e4074b2927973e8d17ffa92f7fe615
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffe00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4fe2a9d2c1824449c69e3e0398f12963
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffff00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b7f29c1e1f62847a15253b28a1e9d712
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffff80000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 36ed5d29b903f31e8983ef8b0a2bf990
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffc0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 27b8070270810f9d023f9dd7ff3b4aa2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffe0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 94d46e155c1228f61d1a0db4815ecc4b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffff0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca6108d1d98071428eeceef1714b96dd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffff8000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dc5b25b71b6296cf73dd2cdcac2f70b1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffc000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 44aba95e8a06a2d9d3530d2677878c80
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffe000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a570d20e89b467e8f5176061b81dd396
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffff000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 758f4467a5d8f1e7307dc30b34e404f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffff800000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bcea28e9071b5a2302970ff352451bc5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffc00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7523c00bc177d331ad312e09c9015c1c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffe00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ccac61e3183747b3f5836da21a1bc4f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffff00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 707b075791878880b44189d3522b8c30
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffff80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7132d0c0e4a07593cf12ebb12be7688c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffc0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: effbac1644deb0c784275fe56e19ead3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffe0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a005063f30f4228b374e2459738f26bb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffff0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 29975b5f48bb68fcbbc7cea93b452ed7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffff8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cf3f2576e2afedc74bb1ca7eeec1c0e7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 07c403f5f966e0e3d9f296d6226dca28
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c8c20908249ab4a34d6dd0a31327ff1a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c0541329ecb6159ab23b7fc5e6a21bca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7aa1acf1a2ed9ba72bc6deb31d88b863
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 808bd8eddabb6f3bf0d5a8a27be1fe8a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 273c7d7685e14ec66bbb96b8f05b6ddd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 32752eefc8c2a93f91b6e73eb07cca6e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d893e7d62f6ce502c64f75e281f9c000
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8dfd999be5d0cfa35732c0ddc88ff5a5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 02647c76a300c3173b841487eb2bae9f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 172df8b02f04b53adab028b4e01acd87
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 054b3bf4998aeb05afd87ec536533a36
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3783f7bf44c97f065258a666cae03020
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: aad4c8a63f80954104de7b92cede1be1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cbfe61810fd5467ccdacb75800f3ac07
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 830d8a2590f7d8e1b55a737f4af45f34
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fffcd4683f858058e74314671d43fa2c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 523d0babbb82f46ebc9e70b1cd41ddd0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 344aab37080d7486f7d542a309e53eed
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 56c5609d0906b23ab9caca816f5dbebd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7026026eedd91adc6d831cdf9894bdc6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 88330baa4f2b618fc9d9b021bf503d5a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fc9e0ea22480b0bac935c8a8ebefcdcf
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 29ca779f398fb04f867da7e8a44756cb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 51f89c42985786bfc43c6df8ada36832
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6ac1de5fb8f21d874e91c53b560c50e3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 03aa9058490eda306001a8a9f48d0ca7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e34ec71d6128d4871865d617c30b37e3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 14be1c535b17cabd0c4d93529d69bf47
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c9ef67756507beec9dd3862883478044
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 40e231fa5a5948ce2134e92fc0664d4b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 03194b8e5dda5530d0c678c0b48f5d92
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 90bd086f237cc4fd99f4d76bde6b4826
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 19259761ca17130d6ed86d57cd7951ee
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d7cbb3f34b9b450f24b0e8518e54da6d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 725b9caebe9f7f417f4068d0d2ee20b3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9d924b934a90ce1fd39b8a9794f82672
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c50562bf094526a91c5bc63c0c224995
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d2f11805046743bd74f57188d9188df7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8dd274bd0f1b58ae345d9e7233f9b8f3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9d6bdc8f4ce5feb0f3bed2e4b9a9bb0b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fd5548bcf3f42565f7efa94562528d46
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d2ccaebd3a4c3e80b063748131ba4a71
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e03cb23d9e11c9d93f117e9c0a91b576
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 78f933a2081ac1db84f69d10f4523fe0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4061f7412ed320de0edc8851c2e2436f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9064ba1cd04ce6bab98474330814b4d4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 48391bffb9cfff80ac238c886ef0a461
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b8d2a67df5a999fdbf93edd0343296c9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: aaca7367396b69a221bd632bea386eec
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a80fd5020dfe65f5f16293ec92c6fd89
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2162995b8217a67f1abc342e146406f8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c6a6164b7a60bae4e986ffac28dfadd9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 64e0d7f900e3d9c83e4b8f96717b2146
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ad2561de8c1232f5d8dbab4739b6cbb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 279689e9a557f58b1c3bf40c97a90964
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c4637e4a5e6377f9cc5a8638045de029
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 492e607e5aea4688594b45f3aee3df90
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e8c4e4381feec74054954c05b777a00a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 91549514605f38246c9b724ad839f01d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 74b24e3b6fefe40a4f9ef7ac6e44d76a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2437a683dc5d4b52abb4a123a8df86c6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bb2852c891c5947d2ed44032c421b85f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b9f5fbd5e8a4264c0a85b80409afa5e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 30dab809f85a917fe924733f424ac589
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eaef5c1f8d605192646695ceadc65f32
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b8aa90040b4c15a12316b78e0f9586fc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 97fac8297ceaabc87d454350601e0673
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9b47ef567ac28dfe488492f157e2b2e0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1b8426027ddb962b5c5ba7eb8bc9ab63
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e917fc77e71992a12dbe4c18068bec82
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dceebbc98840f8ae6daf76573b7e56f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4e11a9f74205125b61e0aee047eca20d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f60467f55a1f17eab88e800120cbc284
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d436649f600b449ee276530f0cd83c11
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3bc0e3656a9e3ac7cd378a737f53b637
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6bacae63d33b928aa8380f8d54d88c17
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8935ffbc75ae6251bf8e859f085adcb9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 93dc4970fe35f67747cb0562c06d875a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 14f9df858975851797ba604fb0d16cc7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 02ea0c98dca10b38c21b3b14e8d1b71f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8f091b1b5b0749b2adc803e63dda9b72
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 05b389e3322c6da08384345a4137fd08
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 381308c438f35b399f10ad71b05027d8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 68c230fcfa9279c3409fc423e2acbe04
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c84a475acb011f3f59f4f46b76274c0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 45119b68cb3f8399ee60066b5611a4d7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9423762f527a4060ffca312dcca22a16
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Ciphertext: f361a2745a33f056a5ac6ace2f08e344
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5ef145766eca849f5d011536a6557fdb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Ciphertext: c9af27b2c89c9b4cf4a0c4106ac80318
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Ciphertext: fb9c4f16c621f4eab7e9ac1d7551dd57
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 138e06fba466fa70854d8c2e524cffb2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Ciphertext: fb4bc78b225070773f04c40466d4e90c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8b2cbff1ed0150feda8a4799be94551f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Ciphertext: 08b30d7b3f27962709a36bcadfb974bd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Ciphertext: fdf6d32e044d77adcf37fb97ac213326
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Ciphertext: 93cb284ecdcfd781a8afe32077949e88
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7b017bb02ec87b2b94c96e40a26fc71a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Ciphertext: c5c038b6990664ab08a3aaa5df9f3266
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Ciphertext: 4b7020be37fab6259b2a27f4ec551576
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Ciphertext: 60136703374f64e860b48ce31f930716
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Ciphertext: 8d63a269b14d506ccc401ab8a9f1b591
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Ciphertext: d317f81dc6aa454aee4bd4a5a5cff4bd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Ciphertext: dddececd5354f04d530d76ed884246eb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Ciphertext: 41c5205cc8fd8eda9a3cffd2518f365a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Ciphertext: cf42fb474293d96eca9db1b37b1ba676
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Ciphertext: a231692607169b4ecdead5cd3b10db3e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Ciphertext: ace4b91c9c669e77e7acacd19859ed49
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Ciphertext: 75db7cfd4a7b2b62ab78a48f3ddaf4af
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Ciphertext: c1faba2d46e259cf480d7c38e4572a58
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Ciphertext: 241c45bc6ae16dee6eb7bea128701582
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Ciphertext: 8fd03057cf1364420c2b78069a3e2502
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Ciphertext: ddb505e6cc1384cbaec1df90b80beb20
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Ciphertext: 5674a3bed27bf4bd3622f9f5fe208306
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Ciphertext: b687f26a89cfbfbb8e5eeac54055315e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Ciphertext: 0547dd32d3b29ab6a4caeb606c5b6f78
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Ciphertext: 186861f8bc5386d31fb77f720c3226e6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Ciphertext: eacf1e6c4224efb38900b185ab1dfd42
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Ciphertext: d241aab05a42d319de81d874f5c7b90d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Ciphertext: 5eb9bc759e2ad8d2140a6c762ae9e1ab
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Ciphertext: 018596e15e78e2c064159defce5f3085
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Ciphertext: dd8a493514231cbf56eccee4c40889fb
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_var_txt.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_var_txt.txt
new file mode 100644
index 0000000..e3934da
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_192_ctr_var_txt.txt
@@ -0,0 +1,1794 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarTxt192.rsp -extra-labels=Cipher=AES-192-CTR -swap-iv-plaintext"
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 80000000000000000000000000000000
+Ciphertext: 6cd02513e8d4dc986b4afe087a60bd0c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: c0000000000000000000000000000000
+Ciphertext: 2ce1f8b7e30627c1c4519eada44bc436
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: e0000000000000000000000000000000
+Ciphertext: 9946b5f87af446f5796c1fee63a2da24
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: f0000000000000000000000000000000
+Ciphertext: 2a560364ce529efc21788779568d5555
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: f8000000000000000000000000000000
+Ciphertext: 35c1471837af446153bce55d5ba72a0a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fc000000000000000000000000000000
+Ciphertext: ce60bc52386234f158f84341e534cd9e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fe000000000000000000000000000000
+Ciphertext: 8c7c27ff32bcf8dc2dc57c90c2903961
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ff000000000000000000000000000000
+Ciphertext: 32bb6a7ec84499e166f936003d55a5bb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ff800000000000000000000000000000
+Ciphertext: a5c772e5c62631ef660ee1d5877f6d1b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffc00000000000000000000000000000
+Ciphertext: 030d7e5b64f380a7e4ea5387b5cd7f49
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffe00000000000000000000000000000
+Ciphertext: 0dc9a2610037009b698f11bb7e86c83e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fff00000000000000000000000000000
+Ciphertext: 0046612c766d1840c226364f1fa7ed72
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fff80000000000000000000000000000
+Ciphertext: 4880c7e08f27befe78590743c05e698b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffc0000000000000000000000000000
+Ciphertext: 2520ce829a26577f0f4822c4ecc87401
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffe0000000000000000000000000000
+Ciphertext: 8765e8acc169758319cb46dc7bcf3dca
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffff0000000000000000000000000000
+Ciphertext: e98f4ba4f073df4baa116d011dc24a28
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffff8000000000000000000000000000
+Ciphertext: f378f68c5dbf59e211b3a659a7317d94
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffc000000000000000000000000000
+Ciphertext: 283d3b069d8eb9fb432d74b96ca762b4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffe000000000000000000000000000
+Ciphertext: a7e1842e8a87861c221a500883245c51
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffff000000000000000000000000000
+Ciphertext: 77aa270471881be070fb52c7067ce732
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffff800000000000000000000000000
+Ciphertext: 01b0f476d484f43f1aeb6efa9361a8ac
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffc00000000000000000000000000
+Ciphertext: 1c3a94f1c052c55c2d8359aff2163b4f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffe00000000000000000000000000
+Ciphertext: e8a067b604d5373d8b0f2e05a03b341b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffff00000000000000000000000000
+Ciphertext: a7876ec87f5a09bfea42c77da30fd50e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffff80000000000000000000000000
+Ciphertext: 0cf3e9d3a42be5b854ca65b13f35f48d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffc0000000000000000000000000
+Ciphertext: 6c62f6bbcab7c3e821c9290f08892dda
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffe0000000000000000000000000
+Ciphertext: 7f5e05bd2068738196fee79ace7e3aec
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffff0000000000000000000000000
+Ciphertext: 440e0d733255cda92fb46e842fe58054
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffff8000000000000000000000000
+Ciphertext: aa5d5b1c4ea1b7a22e5583ac2e9ed8a7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffc000000000000000000000000
+Ciphertext: 77e537e89e8491e8662aae3bc809421d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffe000000000000000000000000
+Ciphertext: 997dd3e9f1598bfa73f75973f7e93b76
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffff000000000000000000000000
+Ciphertext: 1b38d4f7452afefcb7fc721244e4b72e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffff800000000000000000000000
+Ciphertext: 0be2b18252e774dda30cdda02c6906e3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffc00000000000000000000000
+Ciphertext: d2695e59c20361d82652d7d58b6f11b2
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffe00000000000000000000000
+Ciphertext: 902d88d13eae52089abd6143cfe394e9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffff00000000000000000000000
+Ciphertext: d49bceb3b823fedd602c305345734bd2
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffff80000000000000000000000
+Ciphertext: 707b1dbb0ffa40ef7d95def421233fae
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffc0000000000000000000000
+Ciphertext: 7ca0c1d93356d9eb8aa952084d75f913
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffe0000000000000000000000
+Ciphertext: f2cbf9cb186e270dd7bdb0c28febc57d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffff0000000000000000000000
+Ciphertext: c94337c37c4e790ab45780bd9c3674a0
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffff8000000000000000000000
+Ciphertext: 8e3558c135252fb9c9f367ed609467a1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffc000000000000000000000
+Ciphertext: 1b72eeaee4899b443914e5b3a57fba92
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffe000000000000000000000
+Ciphertext: 011865f91bc56868d051e52c9efd59b7
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffff000000000000000000000
+Ciphertext: e4771318ad7a63dd680f6e583b7747ea
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffff800000000000000000000
+Ciphertext: 61e3d194088dc8d97e9e6db37457eac5
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffc00000000000000000000
+Ciphertext: 36ff1ec9ccfbc349e5d356d063693ad6
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffe00000000000000000000
+Ciphertext: 3cc9e9a9be8cc3f6fb2ea24088e9bb19
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffff00000000000000000000
+Ciphertext: 1ee5ab003dc8722e74905d9a8fe3d350
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffff80000000000000000000
+Ciphertext: 245339319584b0a412412869d6c2eada
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffc0000000000000000000
+Ciphertext: 7bd496918115d14ed5380852716c8814
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffe0000000000000000000
+Ciphertext: 273ab2f2b4a366a57d582a339313c8b1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffff0000000000000000000
+Ciphertext: 113365a9ffbe3b0ca61e98507554168b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffff8000000000000000000
+Ciphertext: afa99c997ac478a0dea4119c9e45f8b1
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffc000000000000000000
+Ciphertext: 9216309a7842430b83ffb98638011512
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffe000000000000000000
+Ciphertext: 62abc792288258492a7cb45145f4b759
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffff000000000000000000
+Ciphertext: 534923c169d504d7519c15d30e756c50
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffff800000000000000000
+Ciphertext: fa75e05bcdc7e00c273fa33f6ee441d2
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffc00000000000000000
+Ciphertext: 7d350fa6057080f1086a56b17ec240db
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffe00000000000000000
+Ciphertext: f34e4a6324ea4a5c39a661c8fe5ada8f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffff00000000000000000
+Ciphertext: 0882a16f44088d42447a29ac090ec17e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffff80000000000000000
+Ciphertext: 3a3c15bfc11a9537c130687004e136ee
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffc0000000000000000
+Ciphertext: 22c0a7678dc6d8cf5c8a6d5a9960767c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffe0000000000000000
+Ciphertext: b46b09809d68b9a456432a79bdc2e38c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffff0000000000000000
+Ciphertext: 93baaffb35fbe739c17c6ac22eecf18f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffff8000000000000000
+Ciphertext: c8aa80a7850675bc007c46df06b49868
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffc000000000000000
+Ciphertext: 12c6f3877af421a918a84b775858021d
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffe000000000000000
+Ciphertext: 33f123282c5d633924f7d5ba3f3cab11
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffff000000000000000
+Ciphertext: a8f161002733e93ca4527d22c1a0c5bb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffff800000000000000
+Ciphertext: b72f70ebf3e3fda23f508eec76b42c02
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffc00000000000000
+Ciphertext: 6a9d965e6274143f25afdcfc88ffd77c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffe00000000000000
+Ciphertext: a0c74fd0b9361764ce91c5200b095357
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffff00000000000000
+Ciphertext: 091d1fdc2bd2c346cd5046a8c6209146
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffff80000000000000
+Ciphertext: e2a37580116cfb71856254496ab0aca8
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffc0000000000000
+Ciphertext: e0b3a00785917c7efc9adba322813571
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffe0000000000000
+Ciphertext: 733d41f4727b5ef0df4af4cf3cffa0cb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffff0000000000000
+Ciphertext: a99ebb030260826f981ad3e64490aa4f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffff8000000000000
+Ciphertext: 73f34c7d3eae5e80082c1647524308ee
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffc000000000000
+Ciphertext: 40ebd5ad082345b7a2097ccd3464da02
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffe000000000000
+Ciphertext: 7cc4ae9a424b2cec90c97153c2457ec5
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffff000000000000
+Ciphertext: 54d632d03aba0bd0f91877ebdd4d09cb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffff800000000000
+Ciphertext: d3427be7e4d27cd54f5fe37b03cf0897
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffc00000000000
+Ciphertext: b2099795e88cc158fd75ea133d7e7fbe
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffe00000000000
+Ciphertext: a6cae46fb6fadfe7a2c302a34242817b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffff00000000000
+Ciphertext: 026a7024d6a902e0b3ffccbaa910cc3f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffff80000000000
+Ciphertext: 156f07767a85a4312321f63968338a01
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffc0000000000
+Ciphertext: 15eec9ebf42b9ca76897d2cd6c5a12e2
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffe0000000000
+Ciphertext: db0d3a6fdcc13f915e2b302ceeb70fd8
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffff0000000000
+Ciphertext: 71dbf37e87a2e34d15b20e8f10e48924
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffff8000000000
+Ciphertext: c745c451e96ff3c045e4367c833e3b54
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffc000000000
+Ciphertext: 340da09c2dd11c3b679d08ccd27dd595
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffe000000000
+Ciphertext: 8279f7c0c2a03ee660c6d392db025d18
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffff000000000
+Ciphertext: a4b2c7d8eba531ff47c5041a55fbd1ec
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffff800000000
+Ciphertext: 74569a2ca5a7bd5131ce8dc7cbfbf72f
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffc00000000
+Ciphertext: 3713da0c0219b63454035613b5a403dd
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffe00000000
+Ciphertext: 8827551ddcc9df23fa72a3de4e9f0b07
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffff00000000
+Ciphertext: 2e3febfd625bfcd0a2c06eb460da1732
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffff80000000
+Ciphertext: ee82e6ba488156f76496311da6941deb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffc0000000
+Ciphertext: 4770446f01d1f391256e85a1b30d89d3
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffe0000000
+Ciphertext: af04b68f104f21ef2afb4767cf74143c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffff0000000
+Ciphertext: cf3579a9ba38c8e43653173e14f3a4c6
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffff8000000
+Ciphertext: b3bba904f4953e09b54800af2f62e7d4
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffc000000
+Ciphertext: fc4249656e14b29eb9c44829b4c59a46
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffe000000
+Ciphertext: 9b31568febe81cfc2e65af1c86d1a308
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffff000000
+Ciphertext: 9ca09c25f273a766db98a480ce8dfedc
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffff800000
+Ciphertext: b909925786f34c3c92d971883c9fbedf
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffc00000
+Ciphertext: 82647f1332fe570a9d4d92b2ee771d3b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffe00000
+Ciphertext: 3604a7e80832b3a99954bca6f5b9f501
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffff00000
+Ciphertext: 884607b128c5de3ab39a529a1ef51bef
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffff80000
+Ciphertext: 670cfa093d1dbdb2317041404102435e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffc0000
+Ciphertext: 7a867195f3ce8769cbd336502fbb5130
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffe0000
+Ciphertext: 52efcf64c72b2f7ca5b3c836b1078c15
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffff0000
+Ciphertext: 4019250f6eefb2ac5ccbcae044e75c7e
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffff8000
+Ciphertext: 022c4f6f5a017d292785627667ddef24
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffc000
+Ciphertext: e9c21078a2eb7e03250f71000fa9e3ed
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffe000
+Ciphertext: a13eaeeb9cd391da4e2b09490b3e7fad
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffff000
+Ciphertext: c958a171dca1d4ed53e1af1d380803a9
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffff800
+Ciphertext: 21442e07a110667f2583eaeeee44dc8c
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffc00
+Ciphertext: 59bbb353cf1dd867a6e33737af655e99
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffe00
+Ciphertext: 43cd3b25375d0ce41087ff9fe2829639
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffff00
+Ciphertext: 6b98b17e80d1118e3516bd768b285a84
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffff80
+Ciphertext: ae47ed3676ca0c08deea02d95b81db58
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffc0
+Ciphertext: 34ec40dc20413795ed53628ea748720b
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffe0
+Ciphertext: 4dc68163f8e9835473253542c8a65d46
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffff0
+Ciphertext: 2aabb999f43693175af65c6c612c46fb
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffff8
+Ciphertext: e01f94499dac3547515c5b1d756f0f58
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffffc
+Ciphertext: 9d12435a46480ce00ea349f71799df9a
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffffe
+Ciphertext: cef41d16d266bdfe46938ad7884cc0cf
+
+Cipher: AES-192-CTR
+Operation: ENCRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffff
+Ciphertext: b13db4da1f718bc6904797c82bcf2d32
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6cd02513e8d4dc986b4afe087a60bd0c
+IV: 80000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2ce1f8b7e30627c1c4519eada44bc436
+IV: c0000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9946b5f87af446f5796c1fee63a2da24
+IV: e0000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2a560364ce529efc21788779568d5555
+IV: f0000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 35c1471837af446153bce55d5ba72a0a
+IV: f8000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ce60bc52386234f158f84341e534cd9e
+IV: fc000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8c7c27ff32bcf8dc2dc57c90c2903961
+IV: fe000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 32bb6a7ec84499e166f936003d55a5bb
+IV: ff000000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a5c772e5c62631ef660ee1d5877f6d1b
+IV: ff800000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 030d7e5b64f380a7e4ea5387b5cd7f49
+IV: ffc00000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0dc9a2610037009b698f11bb7e86c83e
+IV: ffe00000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0046612c766d1840c226364f1fa7ed72
+IV: fff00000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4880c7e08f27befe78590743c05e698b
+IV: fff80000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2520ce829a26577f0f4822c4ecc87401
+IV: fffc0000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8765e8acc169758319cb46dc7bcf3dca
+IV: fffe0000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e98f4ba4f073df4baa116d011dc24a28
+IV: ffff0000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f378f68c5dbf59e211b3a659a7317d94
+IV: ffff8000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 283d3b069d8eb9fb432d74b96ca762b4
+IV: ffffc000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a7e1842e8a87861c221a500883245c51
+IV: ffffe000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77aa270471881be070fb52c7067ce732
+IV: fffff000000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 01b0f476d484f43f1aeb6efa9361a8ac
+IV: fffff800000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c3a94f1c052c55c2d8359aff2163b4f
+IV: fffffc00000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e8a067b604d5373d8b0f2e05a03b341b
+IV: fffffe00000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a7876ec87f5a09bfea42c77da30fd50e
+IV: ffffff00000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0cf3e9d3a42be5b854ca65b13f35f48d
+IV: ffffff80000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c62f6bbcab7c3e821c9290f08892dda
+IV: ffffffc0000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7f5e05bd2068738196fee79ace7e3aec
+IV: ffffffe0000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 440e0d733255cda92fb46e842fe58054
+IV: fffffff0000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: aa5d5b1c4ea1b7a22e5583ac2e9ed8a7
+IV: fffffff8000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77e537e89e8491e8662aae3bc809421d
+IV: fffffffc000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 997dd3e9f1598bfa73f75973f7e93b76
+IV: fffffffe000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b38d4f7452afefcb7fc721244e4b72e
+IV: ffffffff000000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0be2b18252e774dda30cdda02c6906e3
+IV: ffffffff800000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2695e59c20361d82652d7d58b6f11b2
+IV: ffffffffc00000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 902d88d13eae52089abd6143cfe394e9
+IV: ffffffffe00000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d49bceb3b823fedd602c305345734bd2
+IV: fffffffff00000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 707b1dbb0ffa40ef7d95def421233fae
+IV: fffffffff80000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7ca0c1d93356d9eb8aa952084d75f913
+IV: fffffffffc0000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f2cbf9cb186e270dd7bdb0c28febc57d
+IV: fffffffffe0000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c94337c37c4e790ab45780bd9c3674a0
+IV: ffffffffff0000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8e3558c135252fb9c9f367ed609467a1
+IV: ffffffffff8000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1b72eeaee4899b443914e5b3a57fba92
+IV: ffffffffffc000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 011865f91bc56868d051e52c9efd59b7
+IV: ffffffffffe000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e4771318ad7a63dd680f6e583b7747ea
+IV: fffffffffff000000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 61e3d194088dc8d97e9e6db37457eac5
+IV: fffffffffff800000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36ff1ec9ccfbc349e5d356d063693ad6
+IV: fffffffffffc00000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3cc9e9a9be8cc3f6fb2ea24088e9bb19
+IV: fffffffffffe00000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ee5ab003dc8722e74905d9a8fe3d350
+IV: ffffffffffff00000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 245339319584b0a412412869d6c2eada
+IV: ffffffffffff80000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7bd496918115d14ed5380852716c8814
+IV: ffffffffffffc0000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 273ab2f2b4a366a57d582a339313c8b1
+IV: ffffffffffffe0000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 113365a9ffbe3b0ca61e98507554168b
+IV: fffffffffffff0000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: afa99c997ac478a0dea4119c9e45f8b1
+IV: fffffffffffff8000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9216309a7842430b83ffb98638011512
+IV: fffffffffffffc000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 62abc792288258492a7cb45145f4b759
+IV: fffffffffffffe000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 534923c169d504d7519c15d30e756c50
+IV: ffffffffffffff000000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fa75e05bcdc7e00c273fa33f6ee441d2
+IV: ffffffffffffff800000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7d350fa6057080f1086a56b17ec240db
+IV: ffffffffffffffc00000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f34e4a6324ea4a5c39a661c8fe5ada8f
+IV: ffffffffffffffe00000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0882a16f44088d42447a29ac090ec17e
+IV: fffffffffffffff00000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a3c15bfc11a9537c130687004e136ee
+IV: fffffffffffffff80000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 22c0a7678dc6d8cf5c8a6d5a9960767c
+IV: fffffffffffffffc0000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b46b09809d68b9a456432a79bdc2e38c
+IV: fffffffffffffffe0000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93baaffb35fbe739c17c6ac22eecf18f
+IV: ffffffffffffffff0000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c8aa80a7850675bc007c46df06b49868
+IV: ffffffffffffffff8000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 12c6f3877af421a918a84b775858021d
+IV: ffffffffffffffffc000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 33f123282c5d633924f7d5ba3f3cab11
+IV: ffffffffffffffffe000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a8f161002733e93ca4527d22c1a0c5bb
+IV: fffffffffffffffff000000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b72f70ebf3e3fda23f508eec76b42c02
+IV: fffffffffffffffff800000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6a9d965e6274143f25afdcfc88ffd77c
+IV: fffffffffffffffffc00000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a0c74fd0b9361764ce91c5200b095357
+IV: fffffffffffffffffe00000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 091d1fdc2bd2c346cd5046a8c6209146
+IV: ffffffffffffffffff00000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e2a37580116cfb71856254496ab0aca8
+IV: ffffffffffffffffff80000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e0b3a00785917c7efc9adba322813571
+IV: ffffffffffffffffffc0000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 733d41f4727b5ef0df4af4cf3cffa0cb
+IV: ffffffffffffffffffe0000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a99ebb030260826f981ad3e64490aa4f
+IV: fffffffffffffffffff0000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 73f34c7d3eae5e80082c1647524308ee
+IV: fffffffffffffffffff8000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 40ebd5ad082345b7a2097ccd3464da02
+IV: fffffffffffffffffffc000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7cc4ae9a424b2cec90c97153c2457ec5
+IV: fffffffffffffffffffe000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 54d632d03aba0bd0f91877ebdd4d09cb
+IV: ffffffffffffffffffff000000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d3427be7e4d27cd54f5fe37b03cf0897
+IV: ffffffffffffffffffff800000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b2099795e88cc158fd75ea133d7e7fbe
+IV: ffffffffffffffffffffc00000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a6cae46fb6fadfe7a2c302a34242817b
+IV: ffffffffffffffffffffe00000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 026a7024d6a902e0b3ffccbaa910cc3f
+IV: fffffffffffffffffffff00000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 156f07767a85a4312321f63968338a01
+IV: fffffffffffffffffffff80000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 15eec9ebf42b9ca76897d2cd6c5a12e2
+IV: fffffffffffffffffffffc0000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: db0d3a6fdcc13f915e2b302ceeb70fd8
+IV: fffffffffffffffffffffe0000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 71dbf37e87a2e34d15b20e8f10e48924
+IV: ffffffffffffffffffffff0000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c745c451e96ff3c045e4367c833e3b54
+IV: ffffffffffffffffffffff8000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 340da09c2dd11c3b679d08ccd27dd595
+IV: ffffffffffffffffffffffc000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8279f7c0c2a03ee660c6d392db025d18
+IV: ffffffffffffffffffffffe000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a4b2c7d8eba531ff47c5041a55fbd1ec
+IV: fffffffffffffffffffffff000000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 74569a2ca5a7bd5131ce8dc7cbfbf72f
+IV: fffffffffffffffffffffff800000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3713da0c0219b63454035613b5a403dd
+IV: fffffffffffffffffffffffc00000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8827551ddcc9df23fa72a3de4e9f0b07
+IV: fffffffffffffffffffffffe00000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e3febfd625bfcd0a2c06eb460da1732
+IV: ffffffffffffffffffffffff00000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ee82e6ba488156f76496311da6941deb
+IV: ffffffffffffffffffffffff80000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4770446f01d1f391256e85a1b30d89d3
+IV: ffffffffffffffffffffffffc0000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: af04b68f104f21ef2afb4767cf74143c
+IV: ffffffffffffffffffffffffe0000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cf3579a9ba38c8e43653173e14f3a4c6
+IV: fffffffffffffffffffffffff0000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b3bba904f4953e09b54800af2f62e7d4
+IV: fffffffffffffffffffffffff8000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fc4249656e14b29eb9c44829b4c59a46
+IV: fffffffffffffffffffffffffc000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b31568febe81cfc2e65af1c86d1a308
+IV: fffffffffffffffffffffffffe000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ca09c25f273a766db98a480ce8dfedc
+IV: ffffffffffffffffffffffffff000000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b909925786f34c3c92d971883c9fbedf
+IV: ffffffffffffffffffffffffff800000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 82647f1332fe570a9d4d92b2ee771d3b
+IV: ffffffffffffffffffffffffffc00000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3604a7e80832b3a99954bca6f5b9f501
+IV: ffffffffffffffffffffffffffe00000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 884607b128c5de3ab39a529a1ef51bef
+IV: fffffffffffffffffffffffffff00000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 670cfa093d1dbdb2317041404102435e
+IV: fffffffffffffffffffffffffff80000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7a867195f3ce8769cbd336502fbb5130
+IV: fffffffffffffffffffffffffffc0000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 52efcf64c72b2f7ca5b3c836b1078c15
+IV: fffffffffffffffffffffffffffe0000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4019250f6eefb2ac5ccbcae044e75c7e
+IV: ffffffffffffffffffffffffffff0000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 022c4f6f5a017d292785627667ddef24
+IV: ffffffffffffffffffffffffffff8000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e9c21078a2eb7e03250f71000fa9e3ed
+IV: ffffffffffffffffffffffffffffc000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a13eaeeb9cd391da4e2b09490b3e7fad
+IV: ffffffffffffffffffffffffffffe000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c958a171dca1d4ed53e1af1d380803a9
+IV: fffffffffffffffffffffffffffff000
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 21442e07a110667f2583eaeeee44dc8c
+IV: fffffffffffffffffffffffffffff800
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 59bbb353cf1dd867a6e33737af655e99
+IV: fffffffffffffffffffffffffffffc00
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 43cd3b25375d0ce41087ff9fe2829639
+IV: fffffffffffffffffffffffffffffe00
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6b98b17e80d1118e3516bd768b285a84
+IV: ffffffffffffffffffffffffffffff00
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ae47ed3676ca0c08deea02d95b81db58
+IV: ffffffffffffffffffffffffffffff80
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 34ec40dc20413795ed53628ea748720b
+IV: ffffffffffffffffffffffffffffffc0
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4dc68163f8e9835473253542c8a65d46
+IV: ffffffffffffffffffffffffffffffe0
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2aabb999f43693175af65c6c612c46fb
+IV: fffffffffffffffffffffffffffffff0
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e01f94499dac3547515c5b1d756f0f58
+IV: fffffffffffffffffffffffffffffff8
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9d12435a46480ce00ea349f71799df9a
+IV: fffffffffffffffffffffffffffffffc
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cef41d16d266bdfe46938ad7884cc0cf
+IV: fffffffffffffffffffffffffffffffe
+
+Cipher: AES-192-CTR
+Operation: DECRYPT
+Key: 000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b13db4da1f718bc6904797c82bcf2d32
+IV: ffffffffffffffffffffffffffffffff
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_gf_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_gf_sbox.txt
new file mode 100644
index 0000000..5ff60f5
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_gf_sbox.txt
@@ -0,0 +1,72 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCGFSbox256.rsp -extra-labels=Cipher=AES-256-CBC"
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 014730f80ac625fe84f026c60bfd547d
+Ciphertext: 5c9d844ed46f9885085e5d6a4f94c7d7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 0b24af36193ce4665f2825d7b4749c98
+Ciphertext: a9ff75bd7cf6613d3731c77c3b6d0c04
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 761c1fe41a18acf20d241650611d90f1
+Ciphertext: 623a52fcea5d443e48d9181ab32c7421
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 8a560769d605868ad80d819bdba03771
+Ciphertext: 38f2c7ae10612415d27ca190d27da8b4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 91fbef2d15a97816060bee1feaa49afe
+Ciphertext: 1bc704f1bce135ceb810341b216d7abe
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5c9d844ed46f9885085e5d6a4f94c7d7
+Plaintext: 014730f80ac625fe84f026c60bfd547d
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a9ff75bd7cf6613d3731c77c3b6d0c04
+Plaintext: 0b24af36193ce4665f2825d7b4749c98
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 623a52fcea5d443e48d9181ab32c7421
+Plaintext: 761c1fe41a18acf20d241650611d90f1
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 38f2c7ae10612415d27ca190d27da8b4
+Plaintext: 8a560769d605868ad80d819bdba03771
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1bc704f1bce135ceb810341b216d7abe
+Plaintext: 91fbef2d15a97816060bee1feaa49afe
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_key_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_key_sbox.txt
new file mode 100644
index 0000000..951472e
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_key_sbox.txt
@@ -0,0 +1,226 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCKeySbox256.rsp -extra-labels=Cipher=AES-256-CBC"
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 46f2fb342d6f0ab477476fc501242c5f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4bf3b0a69aeb6657794f2901b1440ad4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 352065272169abf9856843927d0674fd
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4307456a9e67813b452e15fa8fffe398
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4663446607354989477a5c6f0f007ef4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 1d85a181b54cde51f0e098095b2962fdc93b51fe9b88602b3f54130bf76a5bd9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 531c2c38344578b84d50b3c917bbb6e1
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: dc0eba1f2232a7879ded34ed8428eeb8769b056bbaf8ad77cb65c3541430b4cf
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fc6aec906323480005c58e7e1ab004ad
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a3944b95ca0b52043584ef02151926a8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a74289fe73a4c123ca189ea1e1b49ad5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b91d4ea4488644b56cf0812fa7fcf5fc
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ccd1bc3c659cd3c59bc437484e3c5c724441da8d6e90ce556cd57d0752663bbc
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 304f81ab61a80c2e743b94d5002a126b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 13428b5e4c005e0636dd338405d173ab135dec2a25c22c5df0722d69dcc43887
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 649a71545378c783e368c9ade7114f6c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 07eb03a08d291d1b07408bf3512ab40c91097ac77461aad4bb859647f74f00ee
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 47cb030da2ab051dfc6c4bf6910d12bb
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 90143ae20cd78c5d8ebdd6cb9dc1762427a96c78c639bccc41a61424564eafe1
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 798c7c005dee432b2c8ea5dfa381ecc3
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: b7a5794d52737475d53d5a377200849be0260a67a2b22ced8bbef12882270d07
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 637c31dc2591a07636f646b72daabbe7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fca02f3d5011cfc5c1e23165d413a049d4526a991827424d896fe3435e0bf68e
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 179a49c712154bbffbe6e7a84a18e220
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558
+IV: 00000000000000000000000000000000
+Ciphertext: 46f2fb342d6f0ab477476fc501242c5f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64
+IV: 00000000000000000000000000000000
+Ciphertext: 4bf3b0a69aeb6657794f2901b1440ad4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c
+IV: 00000000000000000000000000000000
+Ciphertext: 352065272169abf9856843927d0674fd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627
+IV: 00000000000000000000000000000000
+Ciphertext: 4307456a9e67813b452e15fa8fffe398
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f
+IV: 00000000000000000000000000000000
+Ciphertext: 4663446607354989477a5c6f0f007ef4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 1d85a181b54cde51f0e098095b2962fdc93b51fe9b88602b3f54130bf76a5bd9
+IV: 00000000000000000000000000000000
+Ciphertext: 531c2c38344578b84d50b3c917bbb6e1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: dc0eba1f2232a7879ded34ed8428eeb8769b056bbaf8ad77cb65c3541430b4cf
+IV: 00000000000000000000000000000000
+Ciphertext: fc6aec906323480005c58e7e1ab004ad
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9
+IV: 00000000000000000000000000000000
+Ciphertext: a3944b95ca0b52043584ef02151926a8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e
+IV: 00000000000000000000000000000000
+Ciphertext: a74289fe73a4c123ca189ea1e1b49ad5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707
+IV: 00000000000000000000000000000000
+Ciphertext: b91d4ea4488644b56cf0812fa7fcf5fc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ccd1bc3c659cd3c59bc437484e3c5c724441da8d6e90ce556cd57d0752663bbc
+IV: 00000000000000000000000000000000
+Ciphertext: 304f81ab61a80c2e743b94d5002a126b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 13428b5e4c005e0636dd338405d173ab135dec2a25c22c5df0722d69dcc43887
+IV: 00000000000000000000000000000000
+Ciphertext: 649a71545378c783e368c9ade7114f6c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 07eb03a08d291d1b07408bf3512ab40c91097ac77461aad4bb859647f74f00ee
+IV: 00000000000000000000000000000000
+Ciphertext: 47cb030da2ab051dfc6c4bf6910d12bb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 90143ae20cd78c5d8ebdd6cb9dc1762427a96c78c639bccc41a61424564eafe1
+IV: 00000000000000000000000000000000
+Ciphertext: 798c7c005dee432b2c8ea5dfa381ecc3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: b7a5794d52737475d53d5a377200849be0260a67a2b22ced8bbef12882270d07
+IV: 00000000000000000000000000000000
+Ciphertext: 637c31dc2591a07636f646b72daabbe7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fca02f3d5011cfc5c1e23165d413a049d4526a991827424d896fe3435e0bf68e
+IV: 00000000000000000000000000000000
+Ciphertext: 179a49c712154bbffbe6e7a84a18e220
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_var_key.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_var_key.txt
new file mode 100644
index 0000000..101780e
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_var_key.txt
@@ -0,0 +1,3586 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarKey256.rsp -extra-labels=Cipher=AES-256-CBC"
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 8000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e35a6dcb19b201a01ebcfa8aa22b5759
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: c000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b29169cdcf2d83e838125a12ee6aa400
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: e000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d8f3a72fc3cdf74dfaf6c3e6b97b2fa6
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: f000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c777679d50037c79491a94da76a9a35
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: f800000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9cf4893ecafa0a0247a898e040691559
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fc00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8fbb413703735326310a269bd3aa94b2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fe00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 60e32246bed2b0e859e55c1cc6b26502
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ff00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ec52a212f80a09df6317021bc2a9819e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ff80000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f23e5b600eb70dbccf6c0b1d9a68182c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffc0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a3f599d63a82a968c33fe26590745970
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffe0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d1ccb9b1337002cbac42c520b5d67722
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fff0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc111f6c37cf40a1159d00fb59fb0488
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fff8000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dc43b51ab609052372989a26e9cdd714
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffc000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4dcede8da9e2578f39703d4433dc6459
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffe000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1a4c1c263bbccfafc11782894685e3a8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffff000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 937ad84880db50613423d6d527a2823d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffff800000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 610b71dfc688e150d8152c5b35ebc14d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffc00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27ef2495dabf323885aab39c80f18d8b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffe00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 633cafea395bc03adae3a1e2068e4b4e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffff00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6e1b482b53761cf631819b749a6f3724
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffff80000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 976e6f851ab52c771998dbb2d71c75a9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffc0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 85f2ba84f8c307cf525e124c3e22e6cc
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffe0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6bcca98bf6a835fa64955f72de4115fe
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffff0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2c75e2d36eebd65411f14fd0eb1d2a06
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffff8000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bd49295006250ffca5100b6007a0eade
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffc000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a190527d0ef7c70f459cd3940df316ec
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffe000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bbd1097a62433f79449fa97d4ee80dbf
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffff000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 07058e408f5b99b0e0f061a1761b5b3b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffff800000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5fd1f13fa0f31e37fabde328f894eac2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffc00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fc4af7c948df26e2ef3e01c1ee5b8f6f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffe00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 829fd7208fb92d44a074a677ee9861ac
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffff00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ad9fc613a703251b54c64a0e76431711
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffff80000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 33ac9eccc4cc75e2711618f80b1548e8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffc0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2025c74b8ad8f4cda17ee2049c4c902d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffe0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f85ca05fe528f1ce9b790166e8d551e7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffff0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6f6238d8966048d4967154e0dad5a6c9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffff8000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f2b21b4e7640a9b3346de8b82fb41e49
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffc000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f836f251ad1d11d49dc344628b1884e1
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffe000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 077e9470ae7abea5a9769d49182628c3
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffff000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e0dcc2d27fc9865633f85223cf0d611f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffff800000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: be66cfea2fecd6bf0ec7b4352c99bcaa
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffc00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: df31144f87a2ef523facdcf21a427804
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffe00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5bb0f5629fb6aae5e1839a3c3625d63
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffff00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3c9db3335306fe1ec612bdbfae6b6028
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffff80000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3dd5c34634a79d3cfcc8339760e6f5f4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffc0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 82bda118a3ed7af314fa2ccc5c07b761
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffe0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2937a64f7d4f46fe6fea3b349ec78e38
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffff0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 225f068c28476605735ad671bb8f39f3
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffff8000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ae682c5ecd71898e08942ac9aa89875c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffc000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5e031cb9d676c3022d7f26227e85c38f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffe000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a78463fb064db5d52bb64bfef64f2dda
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffff000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8aa9b75e784593876c53a00eae5af52b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffff800000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3f84566df23da48af692722fe980573a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffc00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 31690b5ed41c7eb42a1e83270a7ff0e6
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffe00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77dd7702646d55f08365e477d3590eda
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffff00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4c022ac62b3cb78d739cc67b3e20bb7e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffff80000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 092fa137ce18b5dfe7906f550bb13370
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffc0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3e0cdadf2e68353c0027672c97144dd3
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffe0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d8c4b200b383fc1f2b2ea677618a1d27
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffff0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 11825f99b0e9bb3477c1c0713b015aac
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffff8000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f8b9fffb5c187f7ddc7ab10f4fb77576
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffc000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ffb4e87a32b37d6f2c8328d3b5377802
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffe000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d276c13a5d220f4da9224e74896391ce
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffff000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 94efe7a0e2e031e2536da01df799c927
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffff800000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8f8fd822680a85974e53a5a8eb9d38de
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffc00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e0f0a91b2e45f8cc37b7805a3042588d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffe00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 597a6252255e46d6364dbeeda31e279c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffff00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f51a0f694442b8f05571797fec7ee8bf
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffff80000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ff071b165b5198a93dddeebc54d09b5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffc0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c20a19fd5758b0c4bc1a5df89cf73877
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffe0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 97120166307119ca2280e9315668e96f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffff0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4b3b9f1e099c2a09dc091e90e4f18f0a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffff8000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eb040b891d4b37f6851f7ec219cd3f6d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffc000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9f0fdec08b7fd79aa39535bea42db92a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffe000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e70f168fc74bf911df240bcd2cef236
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffff000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 462ccd7f5fd1108dbc152f3cacad328b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffff800000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a4af534a7d0b643a01868785d86dfb95
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffc00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ab980296197e1a5022326c31da4bf6f3
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffe00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f97d57b3333b6281b07d486db2d4e20c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffff00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f33fa36720231afe4c759ade6bd62eb6
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffff80000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fdcfac0c02ca538343c68117e0a15938
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffc0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ad4916f5ee5772be764fc027b8a6e539
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffe0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e16873e1678610d7e14c02d002ea845
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffff0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4e6e627c1acc51340053a8236d579576
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffff8000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ab0c8410aeeead92feec1eb430d652cb
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffc000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e86f7e23e835e114977f60e1a592202e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffe000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e68ad5055a367041fade09d9a70a794b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0791823a3c666bb6162825e78606a7fe
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff800000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dcca366a9bf47b7b868b77e25c18a364
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffc00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 684c9efc237e4a442965f84bce20247a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffe00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a858411ffbe63fdb9c8aa1bfaed67b52
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 04bc3da2179c3015498b0e03910db5b8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff80000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 40071eeab3f935dbc25d00841460260f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffc0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0ebd7c30ed2016e08ba806ddb008bcc8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffe0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 15c6becf0f4cec7129cbd22d1a79b1b8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0aeede5b91f721700e9e62edbf60b781
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff8000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 266581af0dcfbed1585e0a242c64b8df
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffc000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6693dc911662ae473216ba22189a511a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffe000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7606fa36d86473e6fb3a1bb0e2c0adf5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 112078e9e11fbb78e26ffb8899e96b9a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff800000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 40b264e921e9e4a82694589ef3798262
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffc00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8d4595cb4fa7026715f55bd68e2882f9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffe00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b588a302bdbc09197df1edae68926ed9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 33f7502390b8a4a221cfecd0666624ba
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff80000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3d20253adbce3be2373767c4d822c566
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffc0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a42734a3929bf84cf0116c9856a3c18c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffe0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e3abc4939457422bb957da3c56938c6d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 972bdd2e7c525130fadc8f76fc6f4b3f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff8000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 84a83d7b94c699cbcb8a7d9b61f64093
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffc000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ce61d63514aded03d43e6ebfc3a9001f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffe000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c839dd58eeae6b8a36af48ed63d2dc9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cd5ece55b8da3bf622c4100df5de46f9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff800000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3b6f46f40e0ac5fc0a9c1105f800f48d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffc00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ba26d47da3aeb028de4fb5b3a854a24b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffe00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 87f53bf620d3677268445212904389d5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 10617d28b5e0f4605492b182a5d7f9f6
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff80000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9aaec4fabbf6fae2a71feff02e372b39
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffc0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a90c62d88b5c42809abf782488ed130
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffe0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f1f1c5a40899e15772857ccb65c7a09a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 190843d29b25a3897c692ce1dd81ee52
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff8000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a866bc65b6941d86e8420a7ffb0964db
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffc000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8193c6ff85225ced4255e92f6e078a14
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffe000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9661cb2424d7d4a380d547f9e7ec1cb9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 86f93d9ec08453a071e2e2877877a9c8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff800000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27eefa80ce6a4a9d598e3fec365434d2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffc00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d62068444578e3ab39ce7ec95dd045dc
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffe00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5f71d4dd9a71fe5d8bc8ba7e6ea3048
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6825a347ac479d4f9d95c5cb8d3fd7e9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e3714e94a5778955cc0346358e94783a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffc0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d836b44bb29e0c7d89fa4b2d4b677d2a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffe0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5d454b75021d76d4b84f873a8f877b92
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffff0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c3498f7eced2095314fc28115885b33f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffff8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6e668856539ad8e405bd123fe6c88530
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8680db7f3a87b8605543cfdbe6754076
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c5d03b13069c3658b3179be91b0800c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ef1b384ac4d93eda00c92add0995ea5f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bf8115805471741bd5ad20a03944790f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c64c24b6894b038b3c0d09b1df068b0b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3967a10cffe27d0178545fbf6a40544b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7c85e9c95de1a9ec5a5363a8a053472d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a9eec03c8abec7ba68315c2c8c2316e0
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cac8e414c2f388227ae14986fc983524
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5d942b7f4622ce056c3ce3ce5f1dd9d6
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d240d648ce21a3020282c3f1b528a0b6
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 45d089c36d5c5a4efc689e3b0de10dd5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b4da5df4becb5462e03a0ed00d295629
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dcf4e129136c1a4b7a0f38935cc34b2b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d9a4c7618b0ce48a3d5aee1a1c0114c4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca352df025c65c7b0bf306fbee0f36ba
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 238aca23fd3409f38af63378ed2f5473
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 59836a0e06a79691b36667d5380d8188
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 33905080f7acf1cdae0a91fc3e85aee4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 72c9e4646dbc3d6320fc6689d93e8833
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ba77413dea5925b7f5417ea47ff19f59
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6cae8129f843d86dc786a0fb1a184970
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fcfefb534100796eebbd990206754e19
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8c791d5fdddf470da04f3e6dc4a5b5b5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c93bbdc07a4611ae4bb266ea5034a387
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c102e38e489aa74762f3efc5bb23205a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93201481665cbafc1fcc220bc545fb3d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4960757ec6ce68cf195e454cfd0f32ca
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: feec7ce6a6cbd07c043416737f1bbb33
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 11c5413904487a805d70a8edd9c35527
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 347846b2b2e36f1f0324c86f7f1b98e2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 332eee1a0cbd19ca2d69b426894044f0
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 866b5b3977ba6efa5128efbda9ff03cd
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc1445ee94c0f08cdee5c344ecd1e233
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: be288319029363c2622feba4b05dfdfe
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cfd1875523f3cd21c395651e6ee15e56
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cb5a408657837c53bf16f9d8465dce19
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca0bf42cb107f55ccff2fc09ee08ca15
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fdd9bbb4a7dc2e4a23536a5880a2db67
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ede447b362c484993dec9442a3b46aef
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 10dffb05904bff7c4781df780ad26837
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c33bc13e8de88ac25232aa7496398783
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca359c70803a3b2a3d542e8781dea975
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bcc65b526f88d05b89ce8a52021fdb06
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: db91a38855c8c4643851fbfb358b0109
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca6e8893a114ae8e27d5ab03a5499610
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6629d2b8df97da728cdd8b1e7f945077
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4570a5a18cfc0dd582f1d88d5c9a1720
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 72bc65aa8e89562e3f274d45af1cd10b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 98551da1a6503276ae1c77625f9ea615
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0ddfe51ced7e3f4ae927daa3fe452cee
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: db826251e4ce384b80218b0e1da1dd4c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2cacf728b88abbad7011ed0e64a1680c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 330d8ee7c5677e099ac74c9994ee4cfb
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: edf61ae362e882ddc0167474a7a77f3a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6168b00ba7859e0970ecfd757efecf7c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d1415447866230d28bb1ea18a4cdfd02
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 516183392f7a8763afec68a060264141
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77565c8d73cfd4130b4aa14d8911710f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 37232a4ed21ccc27c19c9610078cabac
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 804f32ea71828c7d329077e712231666
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d64424f23cb97215e9c2c6f28d29eab7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 023e82b533f68c75c238cebdb2ee89a2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 193a3d24157a51f1ee0893f6777417e7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 84ecacfcd400084d078612b1945f2ef5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1dcd8bb173259eb33a5242b0de31a455
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 35e9eddbc375e792c19992c19165012b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8a772231c01dfdd7c98e4cfddcc0807a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6eda7ff6b8319180ff0d6e65629d01c3
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c267ef0e2d01a993944dd397101413cb
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e9f80e9d845bcc0f62926af72eabca39
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6702990727aa0878637b45dcd3a3b074
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e2e647d5360e09230a5d738ca33471e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1f56413c7add6f43d1d56e4f02190330
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 69cd0606e15af729d6bca143016d9842
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a085d7c1a500873a20099c4caa3c3f5b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4fc0d230f8891415b87b83f95f2e09d1
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4327d08c523d8eba697a4336507d1f42
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7a15aab82701efa5ae36ab1d6b76290f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5bf0051893a18bb30e139a58fed0fa54
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 97e8adf65638fd9cdf3bc22c17fe4dbd
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ee6ee326583a0586491c96418d1a35d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 26b549c2ec756f82ecc48008e529956b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 70377b6da669b072129e057cc28e9ca5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9c94b8b0cb8bcc919072262b3fa05ad9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2fbb83dfd0d7abcb05cd28cad2dfb523
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 96877803de77744bb970d0a91f4debae
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7379f3370cf6e5ce12ae5969c8eea312
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 02dc99fa3d4f98ce80985e7233889313
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1e38e759075ba5cab6457da51844295a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 70bed8dbf615868a1f9d9b05d3e7a267
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 234b148b8cb1d8c32b287e896903d150
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 294b033df4da853f4be3e243f7e513f4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3f58c950f0367160adec45f2441e7411
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 37f655536a704e5ace182d742a820cf4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ea7bd6bb63418731aeac790fe42d61e8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e74a4c999b4c064e48bb1e413f51e5ea
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ba9ebefdb4ccf30f296cecb3bc1943e8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3194367a4898c502c13bb7478640a72d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: da797713263d6f33a5478a65ef60d412
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d1ac39bb1ef86b9c1344f214679aa376
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2fdea9e650532be5bc0e7325337fd363
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d3a204dbd9c2af158b6ca67a5156ce4a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a0a0e75a8da36735aee6684d965a778
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 52fc3e620492ea99641ea168da5b6d52
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2e0c7f15b4772467d2cfc873000b2ca
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 563531135e0c4d70a38f8bdb190ba04e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a8a39a0f5663f4c0fe5f2d3cafff421a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d94b5e90db354c1e42f61fabe167b2c0
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 50e6d3c9b6698a7cd276f96b1473f35a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9338f08e0ebee96905d8f2e825208f43
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8b378c86672aa54a3a266ba19d2580ca
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cca7c3086f5f9511b31233da7cab9160
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5b40ff4ec9be536ba23035fa4f06064c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 60eb5af8416b257149372194e8b88749
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2f005a8aed8a361c92e440c15520cbd1
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7b03627611678a997717578807a800e2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cf78618f74f6f3696e0a4779b90b5a77
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 03720371a04962eaea0a852e69972858
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1f8a8133aa8ccf70e2bd3285831ca6b7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27936bd27fb1468fc8b48bc483321725
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b07d4f3e2cd2ef2eb545980754dfea0f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4bf85f1b5d54adbc307b0a048389adcb
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 8000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e35a6dcb19b201a01ebcfa8aa22b5759
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: c000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b29169cdcf2d83e838125a12ee6aa400
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: e000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d8f3a72fc3cdf74dfaf6c3e6b97b2fa6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: f000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c777679d50037c79491a94da76a9a35
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: f800000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9cf4893ecafa0a0247a898e040691559
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fc00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8fbb413703735326310a269bd3aa94b2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fe00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 60e32246bed2b0e859e55c1cc6b26502
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ff00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ec52a212f80a09df6317021bc2a9819e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ff80000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f23e5b600eb70dbccf6c0b1d9a68182c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffc0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a3f599d63a82a968c33fe26590745970
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffe0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d1ccb9b1337002cbac42c520b5d67722
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fff0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc111f6c37cf40a1159d00fb59fb0488
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fff8000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dc43b51ab609052372989a26e9cdd714
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffc000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4dcede8da9e2578f39703d4433dc6459
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffe000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1a4c1c263bbccfafc11782894685e3a8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffff000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 937ad84880db50613423d6d527a2823d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffff800000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 610b71dfc688e150d8152c5b35ebc14d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffc00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 27ef2495dabf323885aab39c80f18d8b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffe00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 633cafea395bc03adae3a1e2068e4b4e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffff00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6e1b482b53761cf631819b749a6f3724
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffff80000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 976e6f851ab52c771998dbb2d71c75a9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffc0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 85f2ba84f8c307cf525e124c3e22e6cc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffe0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6bcca98bf6a835fa64955f72de4115fe
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffff0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2c75e2d36eebd65411f14fd0eb1d2a06
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffff8000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bd49295006250ffca5100b6007a0eade
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffc000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a190527d0ef7c70f459cd3940df316ec
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffe000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bbd1097a62433f79449fa97d4ee80dbf
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffff000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 07058e408f5b99b0e0f061a1761b5b3b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffff800000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5fd1f13fa0f31e37fabde328f894eac2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffc00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fc4af7c948df26e2ef3e01c1ee5b8f6f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffe00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 829fd7208fb92d44a074a677ee9861ac
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffff00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ad9fc613a703251b54c64a0e76431711
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffff80000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 33ac9eccc4cc75e2711618f80b1548e8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffc0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2025c74b8ad8f4cda17ee2049c4c902d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffe0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f85ca05fe528f1ce9b790166e8d551e7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffff0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6f6238d8966048d4967154e0dad5a6c9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffff8000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f2b21b4e7640a9b3346de8b82fb41e49
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffc000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f836f251ad1d11d49dc344628b1884e1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffe000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 077e9470ae7abea5a9769d49182628c3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffff000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e0dcc2d27fc9865633f85223cf0d611f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffff800000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: be66cfea2fecd6bf0ec7b4352c99bcaa
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffc00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: df31144f87a2ef523facdcf21a427804
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffe00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5bb0f5629fb6aae5e1839a3c3625d63
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffff00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3c9db3335306fe1ec612bdbfae6b6028
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffff80000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3dd5c34634a79d3cfcc8339760e6f5f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffc0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 82bda118a3ed7af314fa2ccc5c07b761
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffe0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2937a64f7d4f46fe6fea3b349ec78e38
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffff0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 225f068c28476605735ad671bb8f39f3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffff8000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ae682c5ecd71898e08942ac9aa89875c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffc000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5e031cb9d676c3022d7f26227e85c38f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffe000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a78463fb064db5d52bb64bfef64f2dda
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffff000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8aa9b75e784593876c53a00eae5af52b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffff800000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3f84566df23da48af692722fe980573a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffc00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 31690b5ed41c7eb42a1e83270a7ff0e6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffe00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77dd7702646d55f08365e477d3590eda
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffff00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4c022ac62b3cb78d739cc67b3e20bb7e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffff80000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 092fa137ce18b5dfe7906f550bb13370
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffc0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3e0cdadf2e68353c0027672c97144dd3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffe0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d8c4b200b383fc1f2b2ea677618a1d27
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffff0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 11825f99b0e9bb3477c1c0713b015aac
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffff8000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f8b9fffb5c187f7ddc7ab10f4fb77576
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffc000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ffb4e87a32b37d6f2c8328d3b5377802
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffe000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d276c13a5d220f4da9224e74896391ce
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffff000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 94efe7a0e2e031e2536da01df799c927
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffff800000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8f8fd822680a85974e53a5a8eb9d38de
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffc00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e0f0a91b2e45f8cc37b7805a3042588d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffe00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 597a6252255e46d6364dbeeda31e279c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffff00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f51a0f694442b8f05571797fec7ee8bf
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffff80000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9ff071b165b5198a93dddeebc54d09b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffc0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c20a19fd5758b0c4bc1a5df89cf73877
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffe0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 97120166307119ca2280e9315668e96f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffff0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4b3b9f1e099c2a09dc091e90e4f18f0a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffff8000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eb040b891d4b37f6851f7ec219cd3f6d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffc000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9f0fdec08b7fd79aa39535bea42db92a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffe000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e70f168fc74bf911df240bcd2cef236
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffff000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 462ccd7f5fd1108dbc152f3cacad328b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffff800000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a4af534a7d0b643a01868785d86dfb95
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffc00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ab980296197e1a5022326c31da4bf6f3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffe00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f97d57b3333b6281b07d486db2d4e20c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffff00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f33fa36720231afe4c759ade6bd62eb6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffff80000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fdcfac0c02ca538343c68117e0a15938
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffc0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ad4916f5ee5772be764fc027b8a6e539
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffe0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e16873e1678610d7e14c02d002ea845
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffff0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4e6e627c1acc51340053a8236d579576
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffff8000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ab0c8410aeeead92feec1eb430d652cb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffc000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e86f7e23e835e114977f60e1a592202e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffe000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e68ad5055a367041fade09d9a70a794b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffff000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0791823a3c666bb6162825e78606a7fe
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffff800000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dcca366a9bf47b7b868b77e25c18a364
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffc00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 684c9efc237e4a442965f84bce20247a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffe00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a858411ffbe63fdb9c8aa1bfaed67b52
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffff00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 04bc3da2179c3015498b0e03910db5b8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffff80000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 40071eeab3f935dbc25d00841460260f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffc0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0ebd7c30ed2016e08ba806ddb008bcc8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffe0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 15c6becf0f4cec7129cbd22d1a79b1b8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0aeede5b91f721700e9e62edbf60b781
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff8000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 266581af0dcfbed1585e0a242c64b8df
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffc000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6693dc911662ae473216ba22189a511a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffe000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7606fa36d86473e6fb3a1bb0e2c0adf5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 112078e9e11fbb78e26ffb8899e96b9a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff800000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 40b264e921e9e4a82694589ef3798262
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffc00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8d4595cb4fa7026715f55bd68e2882f9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffe00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b588a302bdbc09197df1edae68926ed9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 33f7502390b8a4a221cfecd0666624ba
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff80000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3d20253adbce3be2373767c4d822c566
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffc0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a42734a3929bf84cf0116c9856a3c18c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffe0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e3abc4939457422bb957da3c56938c6d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 972bdd2e7c525130fadc8f76fc6f4b3f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff8000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 84a83d7b94c699cbcb8a7d9b61f64093
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffc000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ce61d63514aded03d43e6ebfc3a9001f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffe000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6c839dd58eeae6b8a36af48ed63d2dc9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cd5ece55b8da3bf622c4100df5de46f9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff800000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3b6f46f40e0ac5fc0a9c1105f800f48d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffc00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ba26d47da3aeb028de4fb5b3a854a24b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffe00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 87f53bf620d3677268445212904389d5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 10617d28b5e0f4605492b182a5d7f9f6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff80000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9aaec4fabbf6fae2a71feff02e372b39
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffc0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3a90c62d88b5c42809abf782488ed130
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffe0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f1f1c5a40899e15772857ccb65c7a09a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 190843d29b25a3897c692ce1dd81ee52
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff8000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a866bc65b6941d86e8420a7ffb0964db
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffc000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8193c6ff85225ced4255e92f6e078a14
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffe000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9661cb2424d7d4a380d547f9e7ec1cb9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 86f93d9ec08453a071e2e2877877a9c8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff800000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 27eefa80ce6a4a9d598e3fec365434d2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffc00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d62068444578e3ab39ce7ec95dd045dc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffe00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5f71d4dd9a71fe5d8bc8ba7e6ea3048
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6825a347ac479d4f9d95c5cb8d3fd7e9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e3714e94a5778955cc0346358e94783a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffc0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d836b44bb29e0c7d89fa4b2d4b677d2a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffe0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5d454b75021d76d4b84f873a8f877b92
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffff0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c3498f7eced2095314fc28115885b33f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffff8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6e668856539ad8e405bd123fe6c88530
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8680db7f3a87b8605543cfdbe6754076
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6c5d03b13069c3658b3179be91b0800c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ef1b384ac4d93eda00c92add0995ea5f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bf8115805471741bd5ad20a03944790f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c64c24b6894b038b3c0d09b1df068b0b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3967a10cffe27d0178545fbf6a40544b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7c85e9c95de1a9ec5a5363a8a053472d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a9eec03c8abec7ba68315c2c8c2316e0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cac8e414c2f388227ae14986fc983524
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5d942b7f4622ce056c3ce3ce5f1dd9d6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d240d648ce21a3020282c3f1b528a0b6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 45d089c36d5c5a4efc689e3b0de10dd5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b4da5df4becb5462e03a0ed00d295629
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dcf4e129136c1a4b7a0f38935cc34b2b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d9a4c7618b0ce48a3d5aee1a1c0114c4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca352df025c65c7b0bf306fbee0f36ba
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 238aca23fd3409f38af63378ed2f5473
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 59836a0e06a79691b36667d5380d8188
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 33905080f7acf1cdae0a91fc3e85aee4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 72c9e4646dbc3d6320fc6689d93e8833
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ba77413dea5925b7f5417ea47ff19f59
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6cae8129f843d86dc786a0fb1a184970
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fcfefb534100796eebbd990206754e19
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8c791d5fdddf470da04f3e6dc4a5b5b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c93bbdc07a4611ae4bb266ea5034a387
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c102e38e489aa74762f3efc5bb23205a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 93201481665cbafc1fcc220bc545fb3d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4960757ec6ce68cf195e454cfd0f32ca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: feec7ce6a6cbd07c043416737f1bbb33
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 11c5413904487a805d70a8edd9c35527
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 347846b2b2e36f1f0324c86f7f1b98e2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 332eee1a0cbd19ca2d69b426894044f0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 866b5b3977ba6efa5128efbda9ff03cd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc1445ee94c0f08cdee5c344ecd1e233
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: be288319029363c2622feba4b05dfdfe
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cfd1875523f3cd21c395651e6ee15e56
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cb5a408657837c53bf16f9d8465dce19
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca0bf42cb107f55ccff2fc09ee08ca15
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fdd9bbb4a7dc2e4a23536a5880a2db67
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ede447b362c484993dec9442a3b46aef
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 10dffb05904bff7c4781df780ad26837
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c33bc13e8de88ac25232aa7496398783
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca359c70803a3b2a3d542e8781dea975
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bcc65b526f88d05b89ce8a52021fdb06
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: db91a38855c8c4643851fbfb358b0109
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca6e8893a114ae8e27d5ab03a5499610
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6629d2b8df97da728cdd8b1e7f945077
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4570a5a18cfc0dd582f1d88d5c9a1720
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 72bc65aa8e89562e3f274d45af1cd10b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 98551da1a6503276ae1c77625f9ea615
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0ddfe51ced7e3f4ae927daa3fe452cee
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: db826251e4ce384b80218b0e1da1dd4c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2cacf728b88abbad7011ed0e64a1680c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 330d8ee7c5677e099ac74c9994ee4cfb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: edf61ae362e882ddc0167474a7a77f3a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6168b00ba7859e0970ecfd757efecf7c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d1415447866230d28bb1ea18a4cdfd02
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 516183392f7a8763afec68a060264141
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77565c8d73cfd4130b4aa14d8911710f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 37232a4ed21ccc27c19c9610078cabac
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 804f32ea71828c7d329077e712231666
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d64424f23cb97215e9c2c6f28d29eab7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 023e82b533f68c75c238cebdb2ee89a2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 193a3d24157a51f1ee0893f6777417e7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 84ecacfcd400084d078612b1945f2ef5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1dcd8bb173259eb33a5242b0de31a455
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 35e9eddbc375e792c19992c19165012b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8a772231c01dfdd7c98e4cfddcc0807a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6eda7ff6b8319180ff0d6e65629d01c3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c267ef0e2d01a993944dd397101413cb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e9f80e9d845bcc0f62926af72eabca39
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6702990727aa0878637b45dcd3a3b074
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e2e647d5360e09230a5d738ca33471e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1f56413c7add6f43d1d56e4f02190330
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 69cd0606e15af729d6bca143016d9842
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a085d7c1a500873a20099c4caa3c3f5b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4fc0d230f8891415b87b83f95f2e09d1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4327d08c523d8eba697a4336507d1f42
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7a15aab82701efa5ae36ab1d6b76290f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5bf0051893a18bb30e139a58fed0fa54
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 97e8adf65638fd9cdf3bc22c17fe4dbd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ee6ee326583a0586491c96418d1a35d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 26b549c2ec756f82ecc48008e529956b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 70377b6da669b072129e057cc28e9ca5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9c94b8b0cb8bcc919072262b3fa05ad9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2fbb83dfd0d7abcb05cd28cad2dfb523
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 96877803de77744bb970d0a91f4debae
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7379f3370cf6e5ce12ae5969c8eea312
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Ciphertext: 02dc99fa3d4f98ce80985e7233889313
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1e38e759075ba5cab6457da51844295a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Ciphertext: 70bed8dbf615868a1f9d9b05d3e7a267
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Ciphertext: 234b148b8cb1d8c32b287e896903d150
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 294b033df4da853f4be3e243f7e513f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3f58c950f0367160adec45f2441e7411
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 37f655536a704e5ace182d742a820cf4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Ciphertext: ea7bd6bb63418731aeac790fe42d61e8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Ciphertext: e74a4c999b4c064e48bb1e413f51e5ea
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Ciphertext: ba9ebefdb4ccf30f296cecb3bc1943e8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3194367a4898c502c13bb7478640a72d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Ciphertext: da797713263d6f33a5478a65ef60d412
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Ciphertext: d1ac39bb1ef86b9c1344f214679aa376
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Ciphertext: 2fdea9e650532be5bc0e7325337fd363
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Ciphertext: d3a204dbd9c2af158b6ca67a5156ce4a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Ciphertext: 3a0a0e75a8da36735aee6684d965a778
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Ciphertext: 52fc3e620492ea99641ea168da5b6d52
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Ciphertext: d2e0c7f15b4772467d2cfc873000b2ca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Ciphertext: 563531135e0c4d70a38f8bdb190ba04e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Ciphertext: a8a39a0f5663f4c0fe5f2d3cafff421a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Ciphertext: d94b5e90db354c1e42f61fabe167b2c0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Ciphertext: 50e6d3c9b6698a7cd276f96b1473f35a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Ciphertext: 9338f08e0ebee96905d8f2e825208f43
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Ciphertext: 8b378c86672aa54a3a266ba19d2580ca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Ciphertext: cca7c3086f5f9511b31233da7cab9160
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Ciphertext: 5b40ff4ec9be536ba23035fa4f06064c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Ciphertext: 60eb5af8416b257149372194e8b88749
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Ciphertext: 2f005a8aed8a361c92e440c15520cbd1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Ciphertext: 7b03627611678a997717578807a800e2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Ciphertext: cf78618f74f6f3696e0a4779b90b5a77
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Ciphertext: 03720371a04962eaea0a852e69972858
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Ciphertext: 1f8a8133aa8ccf70e2bd3285831ca6b7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Ciphertext: 27936bd27fb1468fc8b48bc483321725
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Ciphertext: b07d4f3e2cd2ef2eb545980754dfea0f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Ciphertext: 4bf85f1b5d54adbc307b0a048389adcb
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_var_txt.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_var_txt.txt
new file mode 100644
index 0000000..6a30add
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_cbc_var_txt.txt
@@ -0,0 +1,1794 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarTxt256.rsp -extra-labels=Cipher=AES-256-CBC"
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 80000000000000000000000000000000
+Ciphertext: ddc6bf790c15760d8d9aeb6f9a75fd4e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: c0000000000000000000000000000000
+Ciphertext: 0a6bdc6d4c1e6280301fd8e97ddbe601
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: e0000000000000000000000000000000
+Ciphertext: 9b80eefb7ebe2d2b16247aa0efc72f5d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: f0000000000000000000000000000000
+Ciphertext: 7f2c5ece07a98d8bee13c51177395ff7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: f8000000000000000000000000000000
+Ciphertext: 7818d800dcf6f4be1e0e94f403d1e4c2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fc000000000000000000000000000000
+Ciphertext: e74cd1c92f0919c35a0324123d6177d3
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fe000000000000000000000000000000
+Ciphertext: 8092a4dcf2da7e77e93bdd371dfed82e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ff000000000000000000000000000000
+Ciphertext: 49af6b372135acef10132e548f217b17
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ff800000000000000000000000000000
+Ciphertext: 8bcd40f94ebb63b9f7909676e667f1e7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffc00000000000000000000000000000
+Ciphertext: fe1cffb83f45dcfb38b29be438dbd3ab
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffe00000000000000000000000000000
+Ciphertext: 0dc58a8d886623705aec15cb1e70dc0e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fff00000000000000000000000000000
+Ciphertext: c218faa16056bd0774c3e8d79c35a5e4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fff80000000000000000000000000000
+Ciphertext: 047bba83f7aa841731504e012208fc9e
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffc0000000000000000000000000000
+Ciphertext: dc8f0e4915fd81ba70a331310882f6da
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffe0000000000000000000000000000
+Ciphertext: 1569859ea6b7206c30bf4fd0cbfac33c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffff0000000000000000000000000000
+Ciphertext: 300ade92f88f48fa2df730ec16ef44cd
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffff8000000000000000000000000000
+Ciphertext: 1fe6cc3c05965dc08eb0590c95ac71d0
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffc000000000000000000000000000
+Ciphertext: 59e858eaaa97fec38111275b6cf5abc0
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffe000000000000000000000000000
+Ciphertext: 2239455e7afe3b0616100288cc5a723b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffff000000000000000000000000000
+Ciphertext: 3ee500c5c8d63479717163e55c5c4522
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffff800000000000000000000000000
+Ciphertext: d5e38bf15f16d90e3e214041d774daa8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffc00000000000000000000000000
+Ciphertext: b1f4066e6f4f187dfe5f2ad1b17819d0
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffe00000000000000000000000000
+Ciphertext: 6ef4cc4de49b11065d7af2909854794a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffff00000000000000000000000000
+Ciphertext: ac86bc606b6640c309e782f232bf367f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffff80000000000000000000000000
+Ciphertext: 36aff0ef7bf3280772cf4cac80a0d2b2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffc0000000000000000000000000
+Ciphertext: 1f8eedea0f62a1406d58cfc3ecea72cf
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffe0000000000000000000000000
+Ciphertext: abf4154a3375a1d3e6b1d454438f95a6
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffff0000000000000000000000000
+Ciphertext: 96f96e9d607f6615fc192061ee648b07
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffff8000000000000000000000000
+Ciphertext: cf37cdaaa0d2d536c71857634c792064
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffc000000000000000000000000
+Ciphertext: fbd6640c80245c2b805373f130703127
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffe000000000000000000000000
+Ciphertext: 8d6a8afe55a6e481badae0d146f436db
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffff000000000000000000000000
+Ciphertext: 6a4981f2915e3e68af6c22385dd06756
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffff800000000000000000000000
+Ciphertext: 42a1136e5f8d8d21d3101998642d573b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffc00000000000000000000000
+Ciphertext: 9b471596dc69ae1586cee6158b0b0181
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffe00000000000000000000000
+Ciphertext: 753665c4af1eff33aa8b628bf8741cfd
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffff00000000000000000000000
+Ciphertext: 9a682acf40be01f5b2a4193c9a82404d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffff80000000000000000000000
+Ciphertext: 54fafe26e4287f17d1935f87eb9ade01
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffc0000000000000000000000
+Ciphertext: 49d541b2e74cfe73e6a8e8225f7bd449
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffe0000000000000000000000
+Ciphertext: 11a45530f624ff6f76a1b3826626ff7b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffff0000000000000000000000
+Ciphertext: f96b0c4a8bc6c86130289f60b43b8fba
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffff8000000000000000000000
+Ciphertext: 48c7d0e80834ebdc35b6735f76b46c8b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffc000000000000000000000
+Ciphertext: 2463531ab54d66955e73edc4cb8eaa45
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffe000000000000000000000
+Ciphertext: ac9bd8e2530469134b9d5b065d4f565b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffff000000000000000000000
+Ciphertext: 3f5f9106d0e52f973d4890e6f37e8a00
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffff800000000000000000000
+Ciphertext: 20ebc86f1304d272e2e207e59db639f0
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffc00000000000000000000
+Ciphertext: e67ae6426bf9526c972cff072b52252c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffe00000000000000000000
+Ciphertext: 1a518dddaf9efa0d002cc58d107edfc8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffff00000000000000000000
+Ciphertext: ead731af4d3a2fe3b34bed047942a49f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffff80000000000000000000
+Ciphertext: b1d4efe40242f83e93b6c8d7efb5eae9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffc0000000000000000000
+Ciphertext: cd2b1fec11fd906c5c7630099443610a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffe0000000000000000000
+Ciphertext: a1853fe47fe29289d153161d06387d21
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffff0000000000000000000
+Ciphertext: 4632154179a555c17ea604d0889fab14
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffff8000000000000000000
+Ciphertext: dd27cac6401a022e8f38f9f93e774417
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffc000000000000000000
+Ciphertext: c090313eb98674f35f3123385fb95d4d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffe000000000000000000
+Ciphertext: cc3526262b92f02edce548f716b9f45c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffff000000000000000000
+Ciphertext: c0838d1a2b16a7c7f0dfcc433c399c33
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffff800000000000000000
+Ciphertext: 0d9ac756eb297695eed4d382eb126d26
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffc00000000000000000
+Ciphertext: 56ede9dda3f6f141bff1757fa689c3e1
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffe00000000000000000
+Ciphertext: 768f520efe0f23e61d3ec8ad9ce91774
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffff00000000000000000
+Ciphertext: b1144ddfa75755213390e7c596660490
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffff80000000000000000
+Ciphertext: 1d7c0c4040b355b9d107a99325e3b050
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffc0000000000000000
+Ciphertext: d8e2bb1ae8ee3dcf5bf7d6c38da82a1a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffe0000000000000000
+Ciphertext: faf82d178af25a9886a47e7f789b98d7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffff0000000000000000
+Ciphertext: 9b58dbfd77fe5aca9cfc190cd1b82d19
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffff8000000000000000
+Ciphertext: 77f392089042e478ac16c0c86a0b5db5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffc000000000000000
+Ciphertext: 19f08e3420ee69b477ca1420281c4782
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffe000000000000000
+Ciphertext: a1b19beee4e117139f74b3c53fdcb875
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffff000000000000000
+Ciphertext: a37a5869b218a9f3a0868d19aea0ad6a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffff800000000000000
+Ciphertext: bc3594e865bcd0261b13202731f33580
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffc00000000000000
+Ciphertext: 811441ce1d309eee7185e8c752c07557
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffe00000000000000
+Ciphertext: 959971ce4134190563518e700b9874d1
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffff00000000000000
+Ciphertext: 76b5614a042707c98e2132e2e805fe63
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffff80000000000000
+Ciphertext: 7d9fa6a57530d0f036fec31c230b0cc6
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffc0000000000000
+Ciphertext: 964153a83bf6989a4ba80daa91c3e081
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffe0000000000000
+Ciphertext: a013014d4ce8054cf2591d06f6f2f176
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffff0000000000000
+Ciphertext: d1c5f6399bf382502e385eee1474a869
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffff8000000000000
+Ciphertext: 0007e20b8298ec354f0f5fe7470f36bd
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffc000000000000
+Ciphertext: b95ba05b332da61ef63a2b31fcad9879
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffe000000000000
+Ciphertext: 4620a49bd967491561669ab25dce45f4
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffff000000000000
+Ciphertext: 12e71214ae8e04f0bb63d7425c6f14d5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffff800000000000
+Ciphertext: 4cc42fc1407b008fe350907c092e80ac
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffc00000000000
+Ciphertext: 08b244ce7cbc8ee97fbba808cb146fda
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffe00000000000
+Ciphertext: 39b333e8694f21546ad1edd9d87ed95b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffff00000000000
+Ciphertext: 3b271f8ab2e6e4a20ba8090f43ba78f3
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffff80000000000
+Ciphertext: 9ad983f3bf651cd0393f0a73cccdea50
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffc0000000000
+Ciphertext: 8f476cbff75c1f725ce18e4bbcd19b32
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffe0000000000
+Ciphertext: 905b6267f1d6ab5320835a133f096f2a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffff0000000000
+Ciphertext: 145b60d6d0193c23f4221848a892d61a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffff8000000000
+Ciphertext: 55cfb3fb6d75cad0445bbc8dafa25b0f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffc000000000
+Ciphertext: 7b8e7098e357ef71237d46d8b075b0f5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffe000000000
+Ciphertext: 2bf27229901eb40f2df9d8398d1505ae
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffff000000000
+Ciphertext: 83a63402a77f9ad5c1e931a931ecd706
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffff800000000
+Ciphertext: 6f8ba6521152d31f2bada1843e26b973
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffc00000000
+Ciphertext: e5c3b8e30fd2d8e6239b17b44bd23bbd
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffe00000000
+Ciphertext: 1ac1f7102c59933e8b2ddc3f14e94baa
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffff00000000
+Ciphertext: 21d9ba49f276b45f11af8fc71a088e3d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffff80000000
+Ciphertext: 649f1cddc3792b4638635a392bc9bade
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffc0000000
+Ciphertext: e2775e4b59c1bc2e31a2078c11b5a08c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffe0000000
+Ciphertext: 2be1fae5048a25582a679ca10905eb80
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffff0000000
+Ciphertext: da86f292c6f41ea34fb2068df75ecc29
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffff8000000
+Ciphertext: 220df19f85d69b1b562fa69a3c5beca5
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffc000000
+Ciphertext: 1f11d5d0355e0b556ccdb6c7f5083b4d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffe000000
+Ciphertext: 62526b78be79cb384633c91f83b4151b
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffff000000
+Ciphertext: 90ddbcb950843592dd47bbef00fdc876
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffff800000
+Ciphertext: 2fd0e41c5b8402277354a7391d2618e2
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffc00000
+Ciphertext: 3cdf13e72dee4c581bafec70b85f9660
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffe00000
+Ciphertext: afa2ffc137577092e2b654fa199d2c43
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffff00000
+Ciphertext: 8d683ee63e60d208e343ce48dbc44cac
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffff80000
+Ciphertext: 705a4ef8ba2133729c20185c3d3a4763
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffc0000
+Ciphertext: 0861a861c3db4e94194211b77ed761b9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffe0000
+Ciphertext: 4b00c27e8b26da7eab9d3a88dec8b031
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffff0000
+Ciphertext: 5f397bf03084820cc8810d52e5b666e9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffff8000
+Ciphertext: 63fafabb72c07bfbd3ddc9b1203104b8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffc000
+Ciphertext: 683e2140585b18452dd4ffbb93c95df9
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffe000
+Ciphertext: 286894e48e537f8763b56707d7d155c8
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffff000
+Ciphertext: a423deabc173dcf7e2c4c53e77d37cd1
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffff800
+Ciphertext: eb8168313e1cfdfdb5e986d5429cf172
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffc00
+Ciphertext: 27127daafc9accd2fb334ec3eba52323
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffe00
+Ciphertext: ee0715b96f72e3f7a22a5064fc592f4c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffff00
+Ciphertext: 29ee526770f2a11dcfa989d1ce88830f
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffff80
+Ciphertext: 0493370e054b09871130fe49af730a5a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffc0
+Ciphertext: 9b7b940f6c509f9e44a4ee140448ee46
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffe0
+Ciphertext: 2915be4a1ecfdcbe3e023811a12bb6c7
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffff0
+Ciphertext: 7240e524bc51d8c4d440b1be55d1062c
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffff8
+Ciphertext: da63039d38cb4612b2dc36ba26684b93
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffffc
+Ciphertext: 0f59cb5a4b522e2ac56c1a64f558ad9a
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: fffffffffffffffffffffffffffffffe
+Ciphertext: 7bfe9d876c6d63c1d035da8fe21c409d
+
+Cipher: AES-256-CBC
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: ffffffffffffffffffffffffffffffff
+Ciphertext: acdace8078a32b1a182bfa4987ca1347
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ddc6bf790c15760d8d9aeb6f9a75fd4e
+Plaintext: 80000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0a6bdc6d4c1e6280301fd8e97ddbe601
+Plaintext: c0000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9b80eefb7ebe2d2b16247aa0efc72f5d
+Plaintext: e0000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7f2c5ece07a98d8bee13c51177395ff7
+Plaintext: f0000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7818d800dcf6f4be1e0e94f403d1e4c2
+Plaintext: f8000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e74cd1c92f0919c35a0324123d6177d3
+Plaintext: fc000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8092a4dcf2da7e77e93bdd371dfed82e
+Plaintext: fe000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 49af6b372135acef10132e548f217b17
+Plaintext: ff000000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8bcd40f94ebb63b9f7909676e667f1e7
+Plaintext: ff800000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fe1cffb83f45dcfb38b29be438dbd3ab
+Plaintext: ffc00000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0dc58a8d886623705aec15cb1e70dc0e
+Plaintext: ffe00000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c218faa16056bd0774c3e8d79c35a5e4
+Plaintext: fff00000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 047bba83f7aa841731504e012208fc9e
+Plaintext: fff80000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dc8f0e4915fd81ba70a331310882f6da
+Plaintext: fffc0000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1569859ea6b7206c30bf4fd0cbfac33c
+Plaintext: fffe0000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 300ade92f88f48fa2df730ec16ef44cd
+Plaintext: ffff0000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1fe6cc3c05965dc08eb0590c95ac71d0
+Plaintext: ffff8000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 59e858eaaa97fec38111275b6cf5abc0
+Plaintext: ffffc000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2239455e7afe3b0616100288cc5a723b
+Plaintext: ffffe000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3ee500c5c8d63479717163e55c5c4522
+Plaintext: fffff000000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d5e38bf15f16d90e3e214041d774daa8
+Plaintext: fffff800000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b1f4066e6f4f187dfe5f2ad1b17819d0
+Plaintext: fffffc00000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6ef4cc4de49b11065d7af2909854794a
+Plaintext: fffffe00000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ac86bc606b6640c309e782f232bf367f
+Plaintext: ffffff00000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 36aff0ef7bf3280772cf4cac80a0d2b2
+Plaintext: ffffff80000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1f8eedea0f62a1406d58cfc3ecea72cf
+Plaintext: ffffffc0000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: abf4154a3375a1d3e6b1d454438f95a6
+Plaintext: ffffffe0000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 96f96e9d607f6615fc192061ee648b07
+Plaintext: fffffff0000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cf37cdaaa0d2d536c71857634c792064
+Plaintext: fffffff8000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fbd6640c80245c2b805373f130703127
+Plaintext: fffffffc000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8d6a8afe55a6e481badae0d146f436db
+Plaintext: fffffffe000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6a4981f2915e3e68af6c22385dd06756
+Plaintext: ffffffff000000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 42a1136e5f8d8d21d3101998642d573b
+Plaintext: ffffffff800000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9b471596dc69ae1586cee6158b0b0181
+Plaintext: ffffffffc00000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 753665c4af1eff33aa8b628bf8741cfd
+Plaintext: ffffffffe00000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9a682acf40be01f5b2a4193c9a82404d
+Plaintext: fffffffff00000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 54fafe26e4287f17d1935f87eb9ade01
+Plaintext: fffffffff80000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 49d541b2e74cfe73e6a8e8225f7bd449
+Plaintext: fffffffffc0000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 11a45530f624ff6f76a1b3826626ff7b
+Plaintext: fffffffffe0000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f96b0c4a8bc6c86130289f60b43b8fba
+Plaintext: ffffffffff0000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 48c7d0e80834ebdc35b6735f76b46c8b
+Plaintext: ffffffffff8000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2463531ab54d66955e73edc4cb8eaa45
+Plaintext: ffffffffffc000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ac9bd8e2530469134b9d5b065d4f565b
+Plaintext: ffffffffffe000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3f5f9106d0e52f973d4890e6f37e8a00
+Plaintext: fffffffffff000000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 20ebc86f1304d272e2e207e59db639f0
+Plaintext: fffffffffff800000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e67ae6426bf9526c972cff072b52252c
+Plaintext: fffffffffffc00000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1a518dddaf9efa0d002cc58d107edfc8
+Plaintext: fffffffffffe00000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ead731af4d3a2fe3b34bed047942a49f
+Plaintext: ffffffffffff00000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b1d4efe40242f83e93b6c8d7efb5eae9
+Plaintext: ffffffffffff80000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cd2b1fec11fd906c5c7630099443610a
+Plaintext: ffffffffffffc0000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a1853fe47fe29289d153161d06387d21
+Plaintext: ffffffffffffe0000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4632154179a555c17ea604d0889fab14
+Plaintext: fffffffffffff0000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dd27cac6401a022e8f38f9f93e774417
+Plaintext: fffffffffffff8000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c090313eb98674f35f3123385fb95d4d
+Plaintext: fffffffffffffc000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc3526262b92f02edce548f716b9f45c
+Plaintext: fffffffffffffe000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c0838d1a2b16a7c7f0dfcc433c399c33
+Plaintext: ffffffffffffff000000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0d9ac756eb297695eed4d382eb126d26
+Plaintext: ffffffffffffff800000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 56ede9dda3f6f141bff1757fa689c3e1
+Plaintext: ffffffffffffffc00000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 768f520efe0f23e61d3ec8ad9ce91774
+Plaintext: ffffffffffffffe00000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b1144ddfa75755213390e7c596660490
+Plaintext: fffffffffffffff00000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1d7c0c4040b355b9d107a99325e3b050
+Plaintext: fffffffffffffff80000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d8e2bb1ae8ee3dcf5bf7d6c38da82a1a
+Plaintext: fffffffffffffffc0000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: faf82d178af25a9886a47e7f789b98d7
+Plaintext: fffffffffffffffe0000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9b58dbfd77fe5aca9cfc190cd1b82d19
+Plaintext: ffffffffffffffff0000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77f392089042e478ac16c0c86a0b5db5
+Plaintext: ffffffffffffffff8000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 19f08e3420ee69b477ca1420281c4782
+Plaintext: ffffffffffffffffc000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a1b19beee4e117139f74b3c53fdcb875
+Plaintext: ffffffffffffffffe000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a37a5869b218a9f3a0868d19aea0ad6a
+Plaintext: fffffffffffffffff000000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bc3594e865bcd0261b13202731f33580
+Plaintext: fffffffffffffffff800000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 811441ce1d309eee7185e8c752c07557
+Plaintext: fffffffffffffffffc00000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 959971ce4134190563518e700b9874d1
+Plaintext: fffffffffffffffffe00000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 76b5614a042707c98e2132e2e805fe63
+Plaintext: ffffffffffffffffff00000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7d9fa6a57530d0f036fec31c230b0cc6
+Plaintext: ffffffffffffffffff80000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 964153a83bf6989a4ba80daa91c3e081
+Plaintext: ffffffffffffffffffc0000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a013014d4ce8054cf2591d06f6f2f176
+Plaintext: ffffffffffffffffffe0000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d1c5f6399bf382502e385eee1474a869
+Plaintext: fffffffffffffffffff0000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0007e20b8298ec354f0f5fe7470f36bd
+Plaintext: fffffffffffffffffff8000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b95ba05b332da61ef63a2b31fcad9879
+Plaintext: fffffffffffffffffffc000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4620a49bd967491561669ab25dce45f4
+Plaintext: fffffffffffffffffffe000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 12e71214ae8e04f0bb63d7425c6f14d5
+Plaintext: ffffffffffffffffffff000000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4cc42fc1407b008fe350907c092e80ac
+Plaintext: ffffffffffffffffffff800000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 08b244ce7cbc8ee97fbba808cb146fda
+Plaintext: ffffffffffffffffffffc00000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 39b333e8694f21546ad1edd9d87ed95b
+Plaintext: ffffffffffffffffffffe00000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3b271f8ab2e6e4a20ba8090f43ba78f3
+Plaintext: fffffffffffffffffffff00000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9ad983f3bf651cd0393f0a73cccdea50
+Plaintext: fffffffffffffffffffff80000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8f476cbff75c1f725ce18e4bbcd19b32
+Plaintext: fffffffffffffffffffffc0000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 905b6267f1d6ab5320835a133f096f2a
+Plaintext: fffffffffffffffffffffe0000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 145b60d6d0193c23f4221848a892d61a
+Plaintext: ffffffffffffffffffffff0000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 55cfb3fb6d75cad0445bbc8dafa25b0f
+Plaintext: ffffffffffffffffffffff8000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7b8e7098e357ef71237d46d8b075b0f5
+Plaintext: ffffffffffffffffffffffc000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2bf27229901eb40f2df9d8398d1505ae
+Plaintext: ffffffffffffffffffffffe000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 83a63402a77f9ad5c1e931a931ecd706
+Plaintext: fffffffffffffffffffffff000000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6f8ba6521152d31f2bada1843e26b973
+Plaintext: fffffffffffffffffffffff800000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e5c3b8e30fd2d8e6239b17b44bd23bbd
+Plaintext: fffffffffffffffffffffffc00000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ac1f7102c59933e8b2ddc3f14e94baa
+Plaintext: fffffffffffffffffffffffe00000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 21d9ba49f276b45f11af8fc71a088e3d
+Plaintext: ffffffffffffffffffffffff00000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 649f1cddc3792b4638635a392bc9bade
+Plaintext: ffffffffffffffffffffffff80000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e2775e4b59c1bc2e31a2078c11b5a08c
+Plaintext: ffffffffffffffffffffffffc0000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2be1fae5048a25582a679ca10905eb80
+Plaintext: ffffffffffffffffffffffffe0000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: da86f292c6f41ea34fb2068df75ecc29
+Plaintext: fffffffffffffffffffffffff0000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 220df19f85d69b1b562fa69a3c5beca5
+Plaintext: fffffffffffffffffffffffff8000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1f11d5d0355e0b556ccdb6c7f5083b4d
+Plaintext: fffffffffffffffffffffffffc000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 62526b78be79cb384633c91f83b4151b
+Plaintext: fffffffffffffffffffffffffe000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 90ddbcb950843592dd47bbef00fdc876
+Plaintext: ffffffffffffffffffffffffff000000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2fd0e41c5b8402277354a7391d2618e2
+Plaintext: ffffffffffffffffffffffffff800000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3cdf13e72dee4c581bafec70b85f9660
+Plaintext: ffffffffffffffffffffffffffc00000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: afa2ffc137577092e2b654fa199d2c43
+Plaintext: ffffffffffffffffffffffffffe00000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8d683ee63e60d208e343ce48dbc44cac
+Plaintext: fffffffffffffffffffffffffff00000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 705a4ef8ba2133729c20185c3d3a4763
+Plaintext: fffffffffffffffffffffffffff80000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0861a861c3db4e94194211b77ed761b9
+Plaintext: fffffffffffffffffffffffffffc0000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4b00c27e8b26da7eab9d3a88dec8b031
+Plaintext: fffffffffffffffffffffffffffe0000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5f397bf03084820cc8810d52e5b666e9
+Plaintext: ffffffffffffffffffffffffffff0000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 63fafabb72c07bfbd3ddc9b1203104b8
+Plaintext: ffffffffffffffffffffffffffff8000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 683e2140585b18452dd4ffbb93c95df9
+Plaintext: ffffffffffffffffffffffffffffc000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 286894e48e537f8763b56707d7d155c8
+Plaintext: ffffffffffffffffffffffffffffe000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a423deabc173dcf7e2c4c53e77d37cd1
+Plaintext: fffffffffffffffffffffffffffff000
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eb8168313e1cfdfdb5e986d5429cf172
+Plaintext: fffffffffffffffffffffffffffff800
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 27127daafc9accd2fb334ec3eba52323
+Plaintext: fffffffffffffffffffffffffffffc00
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ee0715b96f72e3f7a22a5064fc592f4c
+Plaintext: fffffffffffffffffffffffffffffe00
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 29ee526770f2a11dcfa989d1ce88830f
+Plaintext: ffffffffffffffffffffffffffffff00
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0493370e054b09871130fe49af730a5a
+Plaintext: ffffffffffffffffffffffffffffff80
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9b7b940f6c509f9e44a4ee140448ee46
+Plaintext: ffffffffffffffffffffffffffffffc0
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2915be4a1ecfdcbe3e023811a12bb6c7
+Plaintext: ffffffffffffffffffffffffffffffe0
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7240e524bc51d8c4d440b1be55d1062c
+Plaintext: fffffffffffffffffffffffffffffff0
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: da63039d38cb4612b2dc36ba26684b93
+Plaintext: fffffffffffffffffffffffffffffff8
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0f59cb5a4b522e2ac56c1a64f558ad9a
+Plaintext: fffffffffffffffffffffffffffffffc
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7bfe9d876c6d63c1d035da8fe21c409d
+Plaintext: fffffffffffffffffffffffffffffffe
+
+Cipher: AES-256-CBC
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: acdace8078a32b1a182bfa4987ca1347
+Plaintext: ffffffffffffffffffffffffffffffff
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_gf_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_gf_sbox.txt
new file mode 100644
index 0000000..110eb9b
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_gf_sbox.txt
@@ -0,0 +1,72 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCGFSbox256.rsp -extra-labels=Cipher=AES-256-CTR -swap-iv-plaintext"
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 014730f80ac625fe84f026c60bfd547d
+Ciphertext: 5c9d844ed46f9885085e5d6a4f94c7d7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 0b24af36193ce4665f2825d7b4749c98
+Ciphertext: a9ff75bd7cf6613d3731c77c3b6d0c04
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 761c1fe41a18acf20d241650611d90f1
+Ciphertext: 623a52fcea5d443e48d9181ab32c7421
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 8a560769d605868ad80d819bdba03771
+Ciphertext: 38f2c7ae10612415d27ca190d27da8b4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 91fbef2d15a97816060bee1feaa49afe
+Ciphertext: 1bc704f1bce135ceb810341b216d7abe
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5c9d844ed46f9885085e5d6a4f94c7d7
+IV: 014730f80ac625fe84f026c60bfd547d
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a9ff75bd7cf6613d3731c77c3b6d0c04
+IV: 0b24af36193ce4665f2825d7b4749c98
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 623a52fcea5d443e48d9181ab32c7421
+IV: 761c1fe41a18acf20d241650611d90f1
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 38f2c7ae10612415d27ca190d27da8b4
+IV: 8a560769d605868ad80d819bdba03771
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1bc704f1bce135ceb810341b216d7abe
+IV: 91fbef2d15a97816060bee1feaa49afe
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_key_sbox.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_key_sbox.txt
new file mode 100644
index 0000000..32769e4
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_key_sbox.txt
@@ -0,0 +1,226 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCKeySbox256.rsp -extra-labels=Cipher=AES-256-CTR"
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 46f2fb342d6f0ab477476fc501242c5f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4bf3b0a69aeb6657794f2901b1440ad4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 352065272169abf9856843927d0674fd
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4307456a9e67813b452e15fa8fffe398
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4663446607354989477a5c6f0f007ef4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 1d85a181b54cde51f0e098095b2962fdc93b51fe9b88602b3f54130bf76a5bd9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 531c2c38344578b84d50b3c917bbb6e1
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: dc0eba1f2232a7879ded34ed8428eeb8769b056bbaf8ad77cb65c3541430b4cf
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fc6aec906323480005c58e7e1ab004ad
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a3944b95ca0b52043584ef02151926a8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a74289fe73a4c123ca189ea1e1b49ad5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b91d4ea4488644b56cf0812fa7fcf5fc
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ccd1bc3c659cd3c59bc437484e3c5c724441da8d6e90ce556cd57d0752663bbc
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 304f81ab61a80c2e743b94d5002a126b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 13428b5e4c005e0636dd338405d173ab135dec2a25c22c5df0722d69dcc43887
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 649a71545378c783e368c9ade7114f6c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 07eb03a08d291d1b07408bf3512ab40c91097ac77461aad4bb859647f74f00ee
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 47cb030da2ab051dfc6c4bf6910d12bb
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 90143ae20cd78c5d8ebdd6cb9dc1762427a96c78c639bccc41a61424564eafe1
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 798c7c005dee432b2c8ea5dfa381ecc3
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: b7a5794d52737475d53d5a377200849be0260a67a2b22ced8bbef12882270d07
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 637c31dc2591a07636f646b72daabbe7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fca02f3d5011cfc5c1e23165d413a049d4526a991827424d896fe3435e0bf68e
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 179a49c712154bbffbe6e7a84a18e220
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558
+IV: 00000000000000000000000000000000
+Ciphertext: 46f2fb342d6f0ab477476fc501242c5f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64
+IV: 00000000000000000000000000000000
+Ciphertext: 4bf3b0a69aeb6657794f2901b1440ad4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c
+IV: 00000000000000000000000000000000
+Ciphertext: 352065272169abf9856843927d0674fd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627
+IV: 00000000000000000000000000000000
+Ciphertext: 4307456a9e67813b452e15fa8fffe398
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f
+IV: 00000000000000000000000000000000
+Ciphertext: 4663446607354989477a5c6f0f007ef4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 1d85a181b54cde51f0e098095b2962fdc93b51fe9b88602b3f54130bf76a5bd9
+IV: 00000000000000000000000000000000
+Ciphertext: 531c2c38344578b84d50b3c917bbb6e1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: dc0eba1f2232a7879ded34ed8428eeb8769b056bbaf8ad77cb65c3541430b4cf
+IV: 00000000000000000000000000000000
+Ciphertext: fc6aec906323480005c58e7e1ab004ad
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9
+IV: 00000000000000000000000000000000
+Ciphertext: a3944b95ca0b52043584ef02151926a8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e
+IV: 00000000000000000000000000000000
+Ciphertext: a74289fe73a4c123ca189ea1e1b49ad5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707
+IV: 00000000000000000000000000000000
+Ciphertext: b91d4ea4488644b56cf0812fa7fcf5fc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ccd1bc3c659cd3c59bc437484e3c5c724441da8d6e90ce556cd57d0752663bbc
+IV: 00000000000000000000000000000000
+Ciphertext: 304f81ab61a80c2e743b94d5002a126b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 13428b5e4c005e0636dd338405d173ab135dec2a25c22c5df0722d69dcc43887
+IV: 00000000000000000000000000000000
+Ciphertext: 649a71545378c783e368c9ade7114f6c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 07eb03a08d291d1b07408bf3512ab40c91097ac77461aad4bb859647f74f00ee
+IV: 00000000000000000000000000000000
+Ciphertext: 47cb030da2ab051dfc6c4bf6910d12bb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 90143ae20cd78c5d8ebdd6cb9dc1762427a96c78c639bccc41a61424564eafe1
+IV: 00000000000000000000000000000000
+Ciphertext: 798c7c005dee432b2c8ea5dfa381ecc3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: b7a5794d52737475d53d5a377200849be0260a67a2b22ced8bbef12882270d07
+IV: 00000000000000000000000000000000
+Ciphertext: 637c31dc2591a07636f646b72daabbe7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fca02f3d5011cfc5c1e23165d413a049d4526a991827424d896fe3435e0bf68e
+IV: 00000000000000000000000000000000
+Ciphertext: 179a49c712154bbffbe6e7a84a18e220
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_var_key.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_var_key.txt
new file mode 100644
index 0000000..1a7e034
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_var_key.txt
@@ -0,0 +1,3586 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarKey256.rsp -extra-labels=Cipher=AES-256-CTR"
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 8000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e35a6dcb19b201a01ebcfa8aa22b5759
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: c000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b29169cdcf2d83e838125a12ee6aa400
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: e000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d8f3a72fc3cdf74dfaf6c3e6b97b2fa6
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: f000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1c777679d50037c79491a94da76a9a35
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: f800000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9cf4893ecafa0a0247a898e040691559
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fc00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8fbb413703735326310a269bd3aa94b2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fe00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 60e32246bed2b0e859e55c1cc6b26502
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ff00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ec52a212f80a09df6317021bc2a9819e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ff80000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f23e5b600eb70dbccf6c0b1d9a68182c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffc0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a3f599d63a82a968c33fe26590745970
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffe0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d1ccb9b1337002cbac42c520b5d67722
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fff0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc111f6c37cf40a1159d00fb59fb0488
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fff8000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dc43b51ab609052372989a26e9cdd714
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffc000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4dcede8da9e2578f39703d4433dc6459
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffe000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1a4c1c263bbccfafc11782894685e3a8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffff000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 937ad84880db50613423d6d527a2823d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffff800000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 610b71dfc688e150d8152c5b35ebc14d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffc00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27ef2495dabf323885aab39c80f18d8b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffe00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 633cafea395bc03adae3a1e2068e4b4e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffff00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6e1b482b53761cf631819b749a6f3724
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffff80000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 976e6f851ab52c771998dbb2d71c75a9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffc0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 85f2ba84f8c307cf525e124c3e22e6cc
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffe0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6bcca98bf6a835fa64955f72de4115fe
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffff0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2c75e2d36eebd65411f14fd0eb1d2a06
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffff8000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bd49295006250ffca5100b6007a0eade
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffc000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a190527d0ef7c70f459cd3940df316ec
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffe000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bbd1097a62433f79449fa97d4ee80dbf
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffff000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 07058e408f5b99b0e0f061a1761b5b3b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffff800000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5fd1f13fa0f31e37fabde328f894eac2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffc00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fc4af7c948df26e2ef3e01c1ee5b8f6f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffe00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 829fd7208fb92d44a074a677ee9861ac
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffff00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ad9fc613a703251b54c64a0e76431711
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffff80000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 33ac9eccc4cc75e2711618f80b1548e8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffc0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2025c74b8ad8f4cda17ee2049c4c902d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffe0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f85ca05fe528f1ce9b790166e8d551e7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffff0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6f6238d8966048d4967154e0dad5a6c9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffff8000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f2b21b4e7640a9b3346de8b82fb41e49
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffc000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f836f251ad1d11d49dc344628b1884e1
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffe000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 077e9470ae7abea5a9769d49182628c3
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffff000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e0dcc2d27fc9865633f85223cf0d611f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffff800000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: be66cfea2fecd6bf0ec7b4352c99bcaa
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffc00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: df31144f87a2ef523facdcf21a427804
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffe00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5bb0f5629fb6aae5e1839a3c3625d63
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffff00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3c9db3335306fe1ec612bdbfae6b6028
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffff80000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3dd5c34634a79d3cfcc8339760e6f5f4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffc0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 82bda118a3ed7af314fa2ccc5c07b761
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffe0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2937a64f7d4f46fe6fea3b349ec78e38
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffff0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 225f068c28476605735ad671bb8f39f3
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffff8000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ae682c5ecd71898e08942ac9aa89875c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffc000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5e031cb9d676c3022d7f26227e85c38f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffe000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a78463fb064db5d52bb64bfef64f2dda
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffff000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8aa9b75e784593876c53a00eae5af52b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffff800000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3f84566df23da48af692722fe980573a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffc00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 31690b5ed41c7eb42a1e83270a7ff0e6
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffe00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77dd7702646d55f08365e477d3590eda
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffff00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4c022ac62b3cb78d739cc67b3e20bb7e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffff80000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 092fa137ce18b5dfe7906f550bb13370
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffc0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3e0cdadf2e68353c0027672c97144dd3
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffe0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d8c4b200b383fc1f2b2ea677618a1d27
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffff0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 11825f99b0e9bb3477c1c0713b015aac
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffff8000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f8b9fffb5c187f7ddc7ab10f4fb77576
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffc000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ffb4e87a32b37d6f2c8328d3b5377802
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffe000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d276c13a5d220f4da9224e74896391ce
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffff000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 94efe7a0e2e031e2536da01df799c927
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffff800000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8f8fd822680a85974e53a5a8eb9d38de
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffc00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e0f0a91b2e45f8cc37b7805a3042588d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffe00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 597a6252255e46d6364dbeeda31e279c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffff00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f51a0f694442b8f05571797fec7ee8bf
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffff80000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ff071b165b5198a93dddeebc54d09b5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffc0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c20a19fd5758b0c4bc1a5df89cf73877
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffe0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 97120166307119ca2280e9315668e96f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffff0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4b3b9f1e099c2a09dc091e90e4f18f0a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffff8000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eb040b891d4b37f6851f7ec219cd3f6d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffc000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9f0fdec08b7fd79aa39535bea42db92a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffe000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e70f168fc74bf911df240bcd2cef236
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffff000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 462ccd7f5fd1108dbc152f3cacad328b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffff800000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a4af534a7d0b643a01868785d86dfb95
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffc00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ab980296197e1a5022326c31da4bf6f3
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffe00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f97d57b3333b6281b07d486db2d4e20c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffff00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f33fa36720231afe4c759ade6bd62eb6
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffff80000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fdcfac0c02ca538343c68117e0a15938
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffc0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ad4916f5ee5772be764fc027b8a6e539
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffe0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e16873e1678610d7e14c02d002ea845
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffff0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4e6e627c1acc51340053a8236d579576
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffff8000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ab0c8410aeeead92feec1eb430d652cb
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffc000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e86f7e23e835e114977f60e1a592202e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffe000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e68ad5055a367041fade09d9a70a794b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0791823a3c666bb6162825e78606a7fe
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffff800000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dcca366a9bf47b7b868b77e25c18a364
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffc00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 684c9efc237e4a442965f84bce20247a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffe00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a858411ffbe63fdb9c8aa1bfaed67b52
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 04bc3da2179c3015498b0e03910db5b8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffff80000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 40071eeab3f935dbc25d00841460260f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffc0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0ebd7c30ed2016e08ba806ddb008bcc8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffe0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 15c6becf0f4cec7129cbd22d1a79b1b8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0aeede5b91f721700e9e62edbf60b781
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffff8000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 266581af0dcfbed1585e0a242c64b8df
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffc000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6693dc911662ae473216ba22189a511a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffe000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7606fa36d86473e6fb3a1bb0e2c0adf5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 112078e9e11fbb78e26ffb8899e96b9a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffff800000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 40b264e921e9e4a82694589ef3798262
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffc00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8d4595cb4fa7026715f55bd68e2882f9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffe00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b588a302bdbc09197df1edae68926ed9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 33f7502390b8a4a221cfecd0666624ba
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffff80000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3d20253adbce3be2373767c4d822c566
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffc0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a42734a3929bf84cf0116c9856a3c18c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffe0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e3abc4939457422bb957da3c56938c6d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 972bdd2e7c525130fadc8f76fc6f4b3f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffff8000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 84a83d7b94c699cbcb8a7d9b61f64093
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffc000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ce61d63514aded03d43e6ebfc3a9001f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffe000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c839dd58eeae6b8a36af48ed63d2dc9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cd5ece55b8da3bf622c4100df5de46f9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffff800000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3b6f46f40e0ac5fc0a9c1105f800f48d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffc00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ba26d47da3aeb028de4fb5b3a854a24b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffe00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 87f53bf620d3677268445212904389d5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 10617d28b5e0f4605492b182a5d7f9f6
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffff80000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9aaec4fabbf6fae2a71feff02e372b39
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffc0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a90c62d88b5c42809abf782488ed130
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffe0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f1f1c5a40899e15772857ccb65c7a09a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 190843d29b25a3897c692ce1dd81ee52
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffff8000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a866bc65b6941d86e8420a7ffb0964db
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffc000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8193c6ff85225ced4255e92f6e078a14
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffe000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9661cb2424d7d4a380d547f9e7ec1cb9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 86f93d9ec08453a071e2e2877877a9c8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffff800000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27eefa80ce6a4a9d598e3fec365434d2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffc00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d62068444578e3ab39ce7ec95dd045dc
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffe00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b5f71d4dd9a71fe5d8bc8ba7e6ea3048
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6825a347ac479d4f9d95c5cb8d3fd7e9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffff80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e3714e94a5778955cc0346358e94783a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffc0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d836b44bb29e0c7d89fa4b2d4b677d2a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffe0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5d454b75021d76d4b84f873a8f877b92
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffff0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c3498f7eced2095314fc28115885b33f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffff8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6e668856539ad8e405bd123fe6c88530
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8680db7f3a87b8605543cfdbe6754076
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6c5d03b13069c3658b3179be91b0800c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ef1b384ac4d93eda00c92add0995ea5f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bf8115805471741bd5ad20a03944790f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c64c24b6894b038b3c0d09b1df068b0b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3967a10cffe27d0178545fbf6a40544b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7c85e9c95de1a9ec5a5363a8a053472d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a9eec03c8abec7ba68315c2c8c2316e0
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cac8e414c2f388227ae14986fc983524
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5d942b7f4622ce056c3ce3ce5f1dd9d6
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d240d648ce21a3020282c3f1b528a0b6
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 45d089c36d5c5a4efc689e3b0de10dd5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b4da5df4becb5462e03a0ed00d295629
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dcf4e129136c1a4b7a0f38935cc34b2b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d9a4c7618b0ce48a3d5aee1a1c0114c4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca352df025c65c7b0bf306fbee0f36ba
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 238aca23fd3409f38af63378ed2f5473
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 59836a0e06a79691b36667d5380d8188
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 33905080f7acf1cdae0a91fc3e85aee4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 72c9e4646dbc3d6320fc6689d93e8833
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ba77413dea5925b7f5417ea47ff19f59
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6cae8129f843d86dc786a0fb1a184970
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fcfefb534100796eebbd990206754e19
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8c791d5fdddf470da04f3e6dc4a5b5b5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c93bbdc07a4611ae4bb266ea5034a387
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c102e38e489aa74762f3efc5bb23205a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 93201481665cbafc1fcc220bc545fb3d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4960757ec6ce68cf195e454cfd0f32ca
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: feec7ce6a6cbd07c043416737f1bbb33
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 11c5413904487a805d70a8edd9c35527
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 347846b2b2e36f1f0324c86f7f1b98e2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 332eee1a0cbd19ca2d69b426894044f0
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 866b5b3977ba6efa5128efbda9ff03cd
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc1445ee94c0f08cdee5c344ecd1e233
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: be288319029363c2622feba4b05dfdfe
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cfd1875523f3cd21c395651e6ee15e56
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cb5a408657837c53bf16f9d8465dce19
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca0bf42cb107f55ccff2fc09ee08ca15
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fdd9bbb4a7dc2e4a23536a5880a2db67
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ede447b362c484993dec9442a3b46aef
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 10dffb05904bff7c4781df780ad26837
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c33bc13e8de88ac25232aa7496398783
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca359c70803a3b2a3d542e8781dea975
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bcc65b526f88d05b89ce8a52021fdb06
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: db91a38855c8c4643851fbfb358b0109
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ca6e8893a114ae8e27d5ab03a5499610
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6629d2b8df97da728cdd8b1e7f945077
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4570a5a18cfc0dd582f1d88d5c9a1720
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 72bc65aa8e89562e3f274d45af1cd10b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 98551da1a6503276ae1c77625f9ea615
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0ddfe51ced7e3f4ae927daa3fe452cee
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: db826251e4ce384b80218b0e1da1dd4c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2cacf728b88abbad7011ed0e64a1680c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 330d8ee7c5677e099ac74c9994ee4cfb
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: edf61ae362e882ddc0167474a7a77f3a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6168b00ba7859e0970ecfd757efecf7c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d1415447866230d28bb1ea18a4cdfd02
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 516183392f7a8763afec68a060264141
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77565c8d73cfd4130b4aa14d8911710f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 37232a4ed21ccc27c19c9610078cabac
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 804f32ea71828c7d329077e712231666
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d64424f23cb97215e9c2c6f28d29eab7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 023e82b533f68c75c238cebdb2ee89a2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 193a3d24157a51f1ee0893f6777417e7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 84ecacfcd400084d078612b1945f2ef5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1dcd8bb173259eb33a5242b0de31a455
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 35e9eddbc375e792c19992c19165012b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8a772231c01dfdd7c98e4cfddcc0807a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6eda7ff6b8319180ff0d6e65629d01c3
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c267ef0e2d01a993944dd397101413cb
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e9f80e9d845bcc0f62926af72eabca39
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6702990727aa0878637b45dcd3a3b074
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2e2e647d5360e09230a5d738ca33471e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1f56413c7add6f43d1d56e4f02190330
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 69cd0606e15af729d6bca143016d9842
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a085d7c1a500873a20099c4caa3c3f5b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4fc0d230f8891415b87b83f95f2e09d1
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4327d08c523d8eba697a4336507d1f42
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7a15aab82701efa5ae36ab1d6b76290f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5bf0051893a18bb30e139a58fed0fa54
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 97e8adf65638fd9cdf3bc22c17fe4dbd
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ee6ee326583a0586491c96418d1a35d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 26b549c2ec756f82ecc48008e529956b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 70377b6da669b072129e057cc28e9ca5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9c94b8b0cb8bcc919072262b3fa05ad9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2fbb83dfd0d7abcb05cd28cad2dfb523
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 96877803de77744bb970d0a91f4debae
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7379f3370cf6e5ce12ae5969c8eea312
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 02dc99fa3d4f98ce80985e7233889313
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1e38e759075ba5cab6457da51844295a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 70bed8dbf615868a1f9d9b05d3e7a267
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 234b148b8cb1d8c32b287e896903d150
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 294b033df4da853f4be3e243f7e513f4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3f58c950f0367160adec45f2441e7411
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 37f655536a704e5ace182d742a820cf4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ea7bd6bb63418731aeac790fe42d61e8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e74a4c999b4c064e48bb1e413f51e5ea
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ba9ebefdb4ccf30f296cecb3bc1943e8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3194367a4898c502c13bb7478640a72d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: da797713263d6f33a5478a65ef60d412
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d1ac39bb1ef86b9c1344f214679aa376
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2fdea9e650532be5bc0e7325337fd363
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d3a204dbd9c2af158b6ca67a5156ce4a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3a0a0e75a8da36735aee6684d965a778
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 52fc3e620492ea99641ea168da5b6d52
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d2e0c7f15b4772467d2cfc873000b2ca
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 563531135e0c4d70a38f8bdb190ba04e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a8a39a0f5663f4c0fe5f2d3cafff421a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d94b5e90db354c1e42f61fabe167b2c0
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 50e6d3c9b6698a7cd276f96b1473f35a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9338f08e0ebee96905d8f2e825208f43
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8b378c86672aa54a3a266ba19d2580ca
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cca7c3086f5f9511b31233da7cab9160
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5b40ff4ec9be536ba23035fa4f06064c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 60eb5af8416b257149372194e8b88749
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2f005a8aed8a361c92e440c15520cbd1
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7b03627611678a997717578807a800e2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cf78618f74f6f3696e0a4779b90b5a77
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 03720371a04962eaea0a852e69972858
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1f8a8133aa8ccf70e2bd3285831ca6b7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27936bd27fb1468fc8b48bc483321725
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b07d4f3e2cd2ef2eb545980754dfea0f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4bf85f1b5d54adbc307b0a048389adcb
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 8000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e35a6dcb19b201a01ebcfa8aa22b5759
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: c000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b29169cdcf2d83e838125a12ee6aa400
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: e000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d8f3a72fc3cdf74dfaf6c3e6b97b2fa6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: f000000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1c777679d50037c79491a94da76a9a35
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: f800000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9cf4893ecafa0a0247a898e040691559
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fc00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8fbb413703735326310a269bd3aa94b2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fe00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 60e32246bed2b0e859e55c1cc6b26502
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ff00000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ec52a212f80a09df6317021bc2a9819e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ff80000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f23e5b600eb70dbccf6c0b1d9a68182c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffc0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a3f599d63a82a968c33fe26590745970
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffe0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d1ccb9b1337002cbac42c520b5d67722
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fff0000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc111f6c37cf40a1159d00fb59fb0488
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fff8000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dc43b51ab609052372989a26e9cdd714
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffc000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4dcede8da9e2578f39703d4433dc6459
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffe000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1a4c1c263bbccfafc11782894685e3a8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffff000000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 937ad84880db50613423d6d527a2823d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffff800000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 610b71dfc688e150d8152c5b35ebc14d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffc00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 27ef2495dabf323885aab39c80f18d8b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffe00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 633cafea395bc03adae3a1e2068e4b4e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffff00000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6e1b482b53761cf631819b749a6f3724
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffff80000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 976e6f851ab52c771998dbb2d71c75a9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffc0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 85f2ba84f8c307cf525e124c3e22e6cc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffe0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6bcca98bf6a835fa64955f72de4115fe
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffff0000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2c75e2d36eebd65411f14fd0eb1d2a06
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffff8000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bd49295006250ffca5100b6007a0eade
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffc000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a190527d0ef7c70f459cd3940df316ec
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffe000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bbd1097a62433f79449fa97d4ee80dbf
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffff000000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 07058e408f5b99b0e0f061a1761b5b3b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffff800000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5fd1f13fa0f31e37fabde328f894eac2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffc00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fc4af7c948df26e2ef3e01c1ee5b8f6f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffe00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 829fd7208fb92d44a074a677ee9861ac
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffff00000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ad9fc613a703251b54c64a0e76431711
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffff80000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 33ac9eccc4cc75e2711618f80b1548e8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffc0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2025c74b8ad8f4cda17ee2049c4c902d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffe0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f85ca05fe528f1ce9b790166e8d551e7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffff0000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6f6238d8966048d4967154e0dad5a6c9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffff8000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f2b21b4e7640a9b3346de8b82fb41e49
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffc000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f836f251ad1d11d49dc344628b1884e1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffe000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 077e9470ae7abea5a9769d49182628c3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffff000000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e0dcc2d27fc9865633f85223cf0d611f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffff800000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: be66cfea2fecd6bf0ec7b4352c99bcaa
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffc00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: df31144f87a2ef523facdcf21a427804
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffe00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5bb0f5629fb6aae5e1839a3c3625d63
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffff00000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3c9db3335306fe1ec612bdbfae6b6028
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffff80000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3dd5c34634a79d3cfcc8339760e6f5f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffc0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 82bda118a3ed7af314fa2ccc5c07b761
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffe0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2937a64f7d4f46fe6fea3b349ec78e38
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffff0000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 225f068c28476605735ad671bb8f39f3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffff8000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ae682c5ecd71898e08942ac9aa89875c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffc000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5e031cb9d676c3022d7f26227e85c38f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffe000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a78463fb064db5d52bb64bfef64f2dda
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffff000000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8aa9b75e784593876c53a00eae5af52b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffff800000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3f84566df23da48af692722fe980573a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffc00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 31690b5ed41c7eb42a1e83270a7ff0e6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffe00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77dd7702646d55f08365e477d3590eda
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffff00000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4c022ac62b3cb78d739cc67b3e20bb7e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffff80000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 092fa137ce18b5dfe7906f550bb13370
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffc0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3e0cdadf2e68353c0027672c97144dd3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffe0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d8c4b200b383fc1f2b2ea677618a1d27
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffff0000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 11825f99b0e9bb3477c1c0713b015aac
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffff8000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f8b9fffb5c187f7ddc7ab10f4fb77576
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffc000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ffb4e87a32b37d6f2c8328d3b5377802
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffe000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d276c13a5d220f4da9224e74896391ce
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffff000000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 94efe7a0e2e031e2536da01df799c927
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffff800000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8f8fd822680a85974e53a5a8eb9d38de
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffc00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e0f0a91b2e45f8cc37b7805a3042588d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffe00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 597a6252255e46d6364dbeeda31e279c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffff00000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f51a0f694442b8f05571797fec7ee8bf
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffff80000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9ff071b165b5198a93dddeebc54d09b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffc0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c20a19fd5758b0c4bc1a5df89cf73877
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffe0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 97120166307119ca2280e9315668e96f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffff0000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4b3b9f1e099c2a09dc091e90e4f18f0a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffff8000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: eb040b891d4b37f6851f7ec219cd3f6d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffc000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9f0fdec08b7fd79aa39535bea42db92a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffe000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e70f168fc74bf911df240bcd2cef236
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffff000000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 462ccd7f5fd1108dbc152f3cacad328b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffff800000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a4af534a7d0b643a01868785d86dfb95
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffc00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ab980296197e1a5022326c31da4bf6f3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffe00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f97d57b3333b6281b07d486db2d4e20c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffff00000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f33fa36720231afe4c759ade6bd62eb6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffff80000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fdcfac0c02ca538343c68117e0a15938
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffc0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ad4916f5ee5772be764fc027b8a6e539
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffe0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e16873e1678610d7e14c02d002ea845
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffff0000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4e6e627c1acc51340053a8236d579576
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffff8000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ab0c8410aeeead92feec1eb430d652cb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffc000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e86f7e23e835e114977f60e1a592202e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffe000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e68ad5055a367041fade09d9a70a794b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffff000000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0791823a3c666bb6162825e78606a7fe
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffff800000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dcca366a9bf47b7b868b77e25c18a364
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffc00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 684c9efc237e4a442965f84bce20247a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffe00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a858411ffbe63fdb9c8aa1bfaed67b52
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffff00000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 04bc3da2179c3015498b0e03910db5b8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffff80000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 40071eeab3f935dbc25d00841460260f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffc0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0ebd7c30ed2016e08ba806ddb008bcc8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffe0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 15c6becf0f4cec7129cbd22d1a79b1b8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff0000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0aeede5b91f721700e9e62edbf60b781
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffff8000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 266581af0dcfbed1585e0a242c64b8df
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffc000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6693dc911662ae473216ba22189a511a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffe000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7606fa36d86473e6fb3a1bb0e2c0adf5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff000000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 112078e9e11fbb78e26ffb8899e96b9a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffff800000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 40b264e921e9e4a82694589ef3798262
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffc00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8d4595cb4fa7026715f55bd68e2882f9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffe00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b588a302bdbc09197df1edae68926ed9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff00000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 33f7502390b8a4a221cfecd0666624ba
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffff80000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3d20253adbce3be2373767c4d822c566
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffc0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a42734a3929bf84cf0116c9856a3c18c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffe0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e3abc4939457422bb957da3c56938c6d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff0000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 972bdd2e7c525130fadc8f76fc6f4b3f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffff8000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 84a83d7b94c699cbcb8a7d9b61f64093
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffc000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ce61d63514aded03d43e6ebfc3a9001f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffe000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6c839dd58eeae6b8a36af48ed63d2dc9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff000000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cd5ece55b8da3bf622c4100df5de46f9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffff800000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3b6f46f40e0ac5fc0a9c1105f800f48d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffc00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ba26d47da3aeb028de4fb5b3a854a24b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffe00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 87f53bf620d3677268445212904389d5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff00000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 10617d28b5e0f4605492b182a5d7f9f6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffff80000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9aaec4fabbf6fae2a71feff02e372b39
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffc0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3a90c62d88b5c42809abf782488ed130
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffe0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: f1f1c5a40899e15772857ccb65c7a09a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff0000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 190843d29b25a3897c692ce1dd81ee52
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffff8000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a866bc65b6941d86e8420a7ffb0964db
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffc000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8193c6ff85225ced4255e92f6e078a14
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffe000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9661cb2424d7d4a380d547f9e7ec1cb9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff000000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 86f93d9ec08453a071e2e2877877a9c8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffff800000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 27eefa80ce6a4a9d598e3fec365434d2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffc00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d62068444578e3ab39ce7ec95dd045dc
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffe00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b5f71d4dd9a71fe5d8bc8ba7e6ea3048
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff00000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6825a347ac479d4f9d95c5cb8d3fd7e9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffff80000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e3714e94a5778955cc0346358e94783a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffc0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d836b44bb29e0c7d89fa4b2d4b677d2a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffe0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5d454b75021d76d4b84f873a8f877b92
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffff0000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c3498f7eced2095314fc28115885b33f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffff8000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6e668856539ad8e405bd123fe6c88530
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffc000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8680db7f3a87b8605543cfdbe6754076
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffe000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6c5d03b13069c3658b3179be91b0800c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffff000000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ef1b384ac4d93eda00c92add0995ea5f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffff800000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bf8115805471741bd5ad20a03944790f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffc00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c64c24b6894b038b3c0d09b1df068b0b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffe00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3967a10cffe27d0178545fbf6a40544b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffff00000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7c85e9c95de1a9ec5a5363a8a053472d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffff80000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a9eec03c8abec7ba68315c2c8c2316e0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffc0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cac8e414c2f388227ae14986fc983524
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffe0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5d942b7f4622ce056c3ce3ce5f1dd9d6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffff0000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d240d648ce21a3020282c3f1b528a0b6
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffff8000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 45d089c36d5c5a4efc689e3b0de10dd5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffc000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: b4da5df4becb5462e03a0ed00d295629
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffe000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: dcf4e129136c1a4b7a0f38935cc34b2b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffff000000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d9a4c7618b0ce48a3d5aee1a1c0114c4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffff800000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca352df025c65c7b0bf306fbee0f36ba
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffc00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 238aca23fd3409f38af63378ed2f5473
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffe00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 59836a0e06a79691b36667d5380d8188
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffff00000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 33905080f7acf1cdae0a91fc3e85aee4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffff80000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 72c9e4646dbc3d6320fc6689d93e8833
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ba77413dea5925b7f5417ea47ff19f59
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6cae8129f843d86dc786a0fb1a184970
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffff0000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fcfefb534100796eebbd990206754e19
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffff8000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8c791d5fdddf470da04f3e6dc4a5b5b5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffc000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c93bbdc07a4611ae4bb266ea5034a387
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffe000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c102e38e489aa74762f3efc5bb23205a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff000000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 93201481665cbafc1fcc220bc545fb3d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffff800000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4960757ec6ce68cf195e454cfd0f32ca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: feec7ce6a6cbd07c043416737f1bbb33
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 11c5413904487a805d70a8edd9c35527
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff00000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 347846b2b2e36f1f0324c86f7f1b98e2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffff80000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 332eee1a0cbd19ca2d69b426894044f0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 866b5b3977ba6efa5128efbda9ff03cd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cc1445ee94c0f08cdee5c344ecd1e233
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: be288319029363c2622feba4b05dfdfe
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cfd1875523f3cd21c395651e6ee15e56
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: cb5a408657837c53bf16f9d8465dce19
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca0bf42cb107f55ccff2fc09ee08ca15
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff000000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: fdd9bbb4a7dc2e4a23536a5880a2db67
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffff800000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ede447b362c484993dec9442a3b46aef
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 10dffb05904bff7c4781df780ad26837
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c33bc13e8de88ac25232aa7496398783
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca359c70803a3b2a3d542e8781dea975
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: bcc65b526f88d05b89ce8a52021fdb06
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: db91a38855c8c4643851fbfb358b0109
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: ca6e8893a114ae8e27d5ab03a5499610
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6629d2b8df97da728cdd8b1e7f945077
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4570a5a18cfc0dd582f1d88d5c9a1720
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 72bc65aa8e89562e3f274d45af1cd10b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 98551da1a6503276ae1c77625f9ea615
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 0ddfe51ced7e3f4ae927daa3fe452cee
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: db826251e4ce384b80218b0e1da1dd4c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2cacf728b88abbad7011ed0e64a1680c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 330d8ee7c5677e099ac74c9994ee4cfb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: edf61ae362e882ddc0167474a7a77f3a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6168b00ba7859e0970ecfd757efecf7c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d1415447866230d28bb1ea18a4cdfd02
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 516183392f7a8763afec68a060264141
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 77565c8d73cfd4130b4aa14d8911710f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 37232a4ed21ccc27c19c9610078cabac
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 804f32ea71828c7d329077e712231666
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: d64424f23cb97215e9c2c6f28d29eab7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 023e82b533f68c75c238cebdb2ee89a2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 193a3d24157a51f1ee0893f6777417e7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 84ecacfcd400084d078612b1945f2ef5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1dcd8bb173259eb33a5242b0de31a455
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 35e9eddbc375e792c19992c19165012b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 8a772231c01dfdd7c98e4cfddcc0807a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6eda7ff6b8319180ff0d6e65629d01c3
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: c267ef0e2d01a993944dd397101413cb
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: e9f80e9d845bcc0f62926af72eabca39
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 6702990727aa0878637b45dcd3a3b074
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2e2e647d5360e09230a5d738ca33471e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1f56413c7add6f43d1d56e4f02190330
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 69cd0606e15af729d6bca143016d9842
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000
+IV: 00000000000000000000000000000000
+Ciphertext: a085d7c1a500873a20099c4caa3c3f5b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4fc0d230f8891415b87b83f95f2e09d1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 4327d08c523d8eba697a4336507d1f42
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7a15aab82701efa5ae36ab1d6b76290f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 5bf0051893a18bb30e139a58fed0fa54
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 97e8adf65638fd9cdf3bc22c17fe4dbd
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1ee6ee326583a0586491c96418d1a35d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 26b549c2ec756f82ecc48008e529956b
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 70377b6da669b072129e057cc28e9ca5
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 9c94b8b0cb8bcc919072262b3fa05ad9
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 2fbb83dfd0d7abcb05cd28cad2dfb523
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000
+IV: 00000000000000000000000000000000
+Ciphertext: 96877803de77744bb970d0a91f4debae
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000
+IV: 00000000000000000000000000000000
+Ciphertext: 7379f3370cf6e5ce12ae5969c8eea312
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000
+IV: 00000000000000000000000000000000
+Ciphertext: 02dc99fa3d4f98ce80985e7233889313
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000
+IV: 00000000000000000000000000000000
+Ciphertext: 1e38e759075ba5cab6457da51844295a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
+IV: 00000000000000000000000000000000
+Ciphertext: 70bed8dbf615868a1f9d9b05d3e7a267
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000
+IV: 00000000000000000000000000000000
+Ciphertext: 234b148b8cb1d8c32b287e896903d150
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 294b033df4da853f4be3e243f7e513f4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3f58c950f0367160adec45f2441e7411
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000
+IV: 00000000000000000000000000000000
+Ciphertext: 37f655536a704e5ace182d742a820cf4
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000
+IV: 00000000000000000000000000000000
+Ciphertext: ea7bd6bb63418731aeac790fe42d61e8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000
+IV: 00000000000000000000000000000000
+Ciphertext: e74a4c999b4c064e48bb1e413f51e5ea
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000
+IV: 00000000000000000000000000000000
+Ciphertext: ba9ebefdb4ccf30f296cecb3bc1943e8
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+IV: 00000000000000000000000000000000
+Ciphertext: 3194367a4898c502c13bb7478640a72d
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000
+IV: 00000000000000000000000000000000
+Ciphertext: da797713263d6f33a5478a65ef60d412
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
+IV: 00000000000000000000000000000000
+Ciphertext: d1ac39bb1ef86b9c1344f214679aa376
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000
+IV: 00000000000000000000000000000000
+Ciphertext: 2fdea9e650532be5bc0e7325337fd363
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000
+IV: 00000000000000000000000000000000
+Ciphertext: d3a204dbd9c2af158b6ca67a5156ce4a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000
+IV: 00000000000000000000000000000000
+Ciphertext: 3a0a0e75a8da36735aee6684d965a778
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000
+IV: 00000000000000000000000000000000
+Ciphertext: 52fc3e620492ea99641ea168da5b6d52
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000
+IV: 00000000000000000000000000000000
+Ciphertext: d2e0c7f15b4772467d2cfc873000b2ca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000
+IV: 00000000000000000000000000000000
+Ciphertext: 563531135e0c4d70a38f8bdb190ba04e
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+IV: 00000000000000000000000000000000
+Ciphertext: a8a39a0f5663f4c0fe5f2d3cafff421a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000
+IV: 00000000000000000000000000000000
+Ciphertext: d94b5e90db354c1e42f61fabe167b2c0
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000
+IV: 00000000000000000000000000000000
+Ciphertext: 50e6d3c9b6698a7cd276f96b1473f35a
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000
+IV: 00000000000000000000000000000000
+Ciphertext: 9338f08e0ebee96905d8f2e825208f43
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800
+IV: 00000000000000000000000000000000
+Ciphertext: 8b378c86672aa54a3a266ba19d2580ca
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00
+IV: 00000000000000000000000000000000
+Ciphertext: cca7c3086f5f9511b31233da7cab9160
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00
+IV: 00000000000000000000000000000000
+Ciphertext: 5b40ff4ec9be536ba23035fa4f06064c
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+IV: 00000000000000000000000000000000
+Ciphertext: 60eb5af8416b257149372194e8b88749
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+IV: 00000000000000000000000000000000
+Ciphertext: 2f005a8aed8a361c92e440c15520cbd1
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
+IV: 00000000000000000000000000000000
+Ciphertext: 7b03627611678a997717578807a800e2
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
+IV: 00000000000000000000000000000000
+Ciphertext: cf78618f74f6f3696e0a4779b90b5a77
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+IV: 00000000000000000000000000000000
+Ciphertext: 03720371a04962eaea0a852e69972858
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
+IV: 00000000000000000000000000000000
+Ciphertext: 1f8a8133aa8ccf70e2bd3285831ca6b7
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
+IV: 00000000000000000000000000000000
+Ciphertext: 27936bd27fb1468fc8b48bc483321725
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+IV: 00000000000000000000000000000000
+Ciphertext: b07d4f3e2cd2ef2eb545980754dfea0f
+Plaintext: 00000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+IV: 00000000000000000000000000000000
+Ciphertext: 4bf85f1b5d54adbc307b0a048389adcb
+Plaintext: 00000000000000000000000000000000
+
diff --git a/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_var_txt.txt b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_var_txt.txt
new file mode 100644
index 0000000..3a1c919
--- /dev/null
+++ b/src/crypto/cipher/test/nist_cavp/aesvs/aes_256_ctr_var_txt.txt
@@ -0,0 +1,1794 @@
+# Generated by "make_nist_aesvs_kat_tests -in kat_aes/CBCVarTxt256.rsp -extra-labels=Cipher=AES-256-CTR -swap-iv-plaintext"
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: 80000000000000000000000000000000
+Ciphertext: ddc6bf790c15760d8d9aeb6f9a75fd4e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: c0000000000000000000000000000000
+Ciphertext: 0a6bdc6d4c1e6280301fd8e97ddbe601
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: e0000000000000000000000000000000
+Ciphertext: 9b80eefb7ebe2d2b16247aa0efc72f5d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: f0000000000000000000000000000000
+Ciphertext: 7f2c5ece07a98d8bee13c51177395ff7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: f8000000000000000000000000000000
+Ciphertext: 7818d800dcf6f4be1e0e94f403d1e4c2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fc000000000000000000000000000000
+Ciphertext: e74cd1c92f0919c35a0324123d6177d3
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fe000000000000000000000000000000
+Ciphertext: 8092a4dcf2da7e77e93bdd371dfed82e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ff000000000000000000000000000000
+Ciphertext: 49af6b372135acef10132e548f217b17
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ff800000000000000000000000000000
+Ciphertext: 8bcd40f94ebb63b9f7909676e667f1e7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffc00000000000000000000000000000
+Ciphertext: fe1cffb83f45dcfb38b29be438dbd3ab
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffe00000000000000000000000000000
+Ciphertext: 0dc58a8d886623705aec15cb1e70dc0e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fff00000000000000000000000000000
+Ciphertext: c218faa16056bd0774c3e8d79c35a5e4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fff80000000000000000000000000000
+Ciphertext: 047bba83f7aa841731504e012208fc9e
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffc0000000000000000000000000000
+Ciphertext: dc8f0e4915fd81ba70a331310882f6da
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffe0000000000000000000000000000
+Ciphertext: 1569859ea6b7206c30bf4fd0cbfac33c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffff0000000000000000000000000000
+Ciphertext: 300ade92f88f48fa2df730ec16ef44cd
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffff8000000000000000000000000000
+Ciphertext: 1fe6cc3c05965dc08eb0590c95ac71d0
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffc000000000000000000000000000
+Ciphertext: 59e858eaaa97fec38111275b6cf5abc0
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffe000000000000000000000000000
+Ciphertext: 2239455e7afe3b0616100288cc5a723b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffff000000000000000000000000000
+Ciphertext: 3ee500c5c8d63479717163e55c5c4522
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffff800000000000000000000000000
+Ciphertext: d5e38bf15f16d90e3e214041d774daa8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffc00000000000000000000000000
+Ciphertext: b1f4066e6f4f187dfe5f2ad1b17819d0
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffe00000000000000000000000000
+Ciphertext: 6ef4cc4de49b11065d7af2909854794a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffff00000000000000000000000000
+Ciphertext: ac86bc606b6640c309e782f232bf367f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffff80000000000000000000000000
+Ciphertext: 36aff0ef7bf3280772cf4cac80a0d2b2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffc0000000000000000000000000
+Ciphertext: 1f8eedea0f62a1406d58cfc3ecea72cf
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffe0000000000000000000000000
+Ciphertext: abf4154a3375a1d3e6b1d454438f95a6
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffff0000000000000000000000000
+Ciphertext: 96f96e9d607f6615fc192061ee648b07
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffff8000000000000000000000000
+Ciphertext: cf37cdaaa0d2d536c71857634c792064
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffc000000000000000000000000
+Ciphertext: fbd6640c80245c2b805373f130703127
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffe000000000000000000000000
+Ciphertext: 8d6a8afe55a6e481badae0d146f436db
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffff000000000000000000000000
+Ciphertext: 6a4981f2915e3e68af6c22385dd06756
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffff800000000000000000000000
+Ciphertext: 42a1136e5f8d8d21d3101998642d573b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffc00000000000000000000000
+Ciphertext: 9b471596dc69ae1586cee6158b0b0181
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffe00000000000000000000000
+Ciphertext: 753665c4af1eff33aa8b628bf8741cfd
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffff00000000000000000000000
+Ciphertext: 9a682acf40be01f5b2a4193c9a82404d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffff80000000000000000000000
+Ciphertext: 54fafe26e4287f17d1935f87eb9ade01
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffc0000000000000000000000
+Ciphertext: 49d541b2e74cfe73e6a8e8225f7bd449
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffe0000000000000000000000
+Ciphertext: 11a45530f624ff6f76a1b3826626ff7b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffff0000000000000000000000
+Ciphertext: f96b0c4a8bc6c86130289f60b43b8fba
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffff8000000000000000000000
+Ciphertext: 48c7d0e80834ebdc35b6735f76b46c8b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffc000000000000000000000
+Ciphertext: 2463531ab54d66955e73edc4cb8eaa45
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffe000000000000000000000
+Ciphertext: ac9bd8e2530469134b9d5b065d4f565b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffff000000000000000000000
+Ciphertext: 3f5f9106d0e52f973d4890e6f37e8a00
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffff800000000000000000000
+Ciphertext: 20ebc86f1304d272e2e207e59db639f0
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffc00000000000000000000
+Ciphertext: e67ae6426bf9526c972cff072b52252c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffe00000000000000000000
+Ciphertext: 1a518dddaf9efa0d002cc58d107edfc8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffff00000000000000000000
+Ciphertext: ead731af4d3a2fe3b34bed047942a49f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffff80000000000000000000
+Ciphertext: b1d4efe40242f83e93b6c8d7efb5eae9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffc0000000000000000000
+Ciphertext: cd2b1fec11fd906c5c7630099443610a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffe0000000000000000000
+Ciphertext: a1853fe47fe29289d153161d06387d21
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffff0000000000000000000
+Ciphertext: 4632154179a555c17ea604d0889fab14
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffff8000000000000000000
+Ciphertext: dd27cac6401a022e8f38f9f93e774417
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffc000000000000000000
+Ciphertext: c090313eb98674f35f3123385fb95d4d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffe000000000000000000
+Ciphertext: cc3526262b92f02edce548f716b9f45c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffff000000000000000000
+Ciphertext: c0838d1a2b16a7c7f0dfcc433c399c33
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffff800000000000000000
+Ciphertext: 0d9ac756eb297695eed4d382eb126d26
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffc00000000000000000
+Ciphertext: 56ede9dda3f6f141bff1757fa689c3e1
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffe00000000000000000
+Ciphertext: 768f520efe0f23e61d3ec8ad9ce91774
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffff00000000000000000
+Ciphertext: b1144ddfa75755213390e7c596660490
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffff80000000000000000
+Ciphertext: 1d7c0c4040b355b9d107a99325e3b050
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffc0000000000000000
+Ciphertext: d8e2bb1ae8ee3dcf5bf7d6c38da82a1a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffe0000000000000000
+Ciphertext: faf82d178af25a9886a47e7f789b98d7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffff0000000000000000
+Ciphertext: 9b58dbfd77fe5aca9cfc190cd1b82d19
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffff8000000000000000
+Ciphertext: 77f392089042e478ac16c0c86a0b5db5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffc000000000000000
+Ciphertext: 19f08e3420ee69b477ca1420281c4782
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffe000000000000000
+Ciphertext: a1b19beee4e117139f74b3c53fdcb875
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffff000000000000000
+Ciphertext: a37a5869b218a9f3a0868d19aea0ad6a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffff800000000000000
+Ciphertext: bc3594e865bcd0261b13202731f33580
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffc00000000000000
+Ciphertext: 811441ce1d309eee7185e8c752c07557
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffe00000000000000
+Ciphertext: 959971ce4134190563518e700b9874d1
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffff00000000000000
+Ciphertext: 76b5614a042707c98e2132e2e805fe63
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffff80000000000000
+Ciphertext: 7d9fa6a57530d0f036fec31c230b0cc6
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffc0000000000000
+Ciphertext: 964153a83bf6989a4ba80daa91c3e081
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffe0000000000000
+Ciphertext: a013014d4ce8054cf2591d06f6f2f176
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffff0000000000000
+Ciphertext: d1c5f6399bf382502e385eee1474a869
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffff8000000000000
+Ciphertext: 0007e20b8298ec354f0f5fe7470f36bd
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffc000000000000
+Ciphertext: b95ba05b332da61ef63a2b31fcad9879
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffe000000000000
+Ciphertext: 4620a49bd967491561669ab25dce45f4
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffff000000000000
+Ciphertext: 12e71214ae8e04f0bb63d7425c6f14d5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffff800000000000
+Ciphertext: 4cc42fc1407b008fe350907c092e80ac
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffc00000000000
+Ciphertext: 08b244ce7cbc8ee97fbba808cb146fda
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffe00000000000
+Ciphertext: 39b333e8694f21546ad1edd9d87ed95b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffff00000000000
+Ciphertext: 3b271f8ab2e6e4a20ba8090f43ba78f3
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffff80000000000
+Ciphertext: 9ad983f3bf651cd0393f0a73cccdea50
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffc0000000000
+Ciphertext: 8f476cbff75c1f725ce18e4bbcd19b32
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffe0000000000
+Ciphertext: 905b6267f1d6ab5320835a133f096f2a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffff0000000000
+Ciphertext: 145b60d6d0193c23f4221848a892d61a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffff8000000000
+Ciphertext: 55cfb3fb6d75cad0445bbc8dafa25b0f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffc000000000
+Ciphertext: 7b8e7098e357ef71237d46d8b075b0f5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffe000000000
+Ciphertext: 2bf27229901eb40f2df9d8398d1505ae
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffff000000000
+Ciphertext: 83a63402a77f9ad5c1e931a931ecd706
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffff800000000
+Ciphertext: 6f8ba6521152d31f2bada1843e26b973
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffc00000000
+Ciphertext: e5c3b8e30fd2d8e6239b17b44bd23bbd
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffe00000000
+Ciphertext: 1ac1f7102c59933e8b2ddc3f14e94baa
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffff00000000
+Ciphertext: 21d9ba49f276b45f11af8fc71a088e3d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffff80000000
+Ciphertext: 649f1cddc3792b4638635a392bc9bade
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffc0000000
+Ciphertext: e2775e4b59c1bc2e31a2078c11b5a08c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffe0000000
+Ciphertext: 2be1fae5048a25582a679ca10905eb80
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffff0000000
+Ciphertext: da86f292c6f41ea34fb2068df75ecc29
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffff8000000
+Ciphertext: 220df19f85d69b1b562fa69a3c5beca5
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffc000000
+Ciphertext: 1f11d5d0355e0b556ccdb6c7f5083b4d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffe000000
+Ciphertext: 62526b78be79cb384633c91f83b4151b
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffff000000
+Ciphertext: 90ddbcb950843592dd47bbef00fdc876
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffff800000
+Ciphertext: 2fd0e41c5b8402277354a7391d2618e2
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffc00000
+Ciphertext: 3cdf13e72dee4c581bafec70b85f9660
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffe00000
+Ciphertext: afa2ffc137577092e2b654fa199d2c43
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffff00000
+Ciphertext: 8d683ee63e60d208e343ce48dbc44cac
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffff80000
+Ciphertext: 705a4ef8ba2133729c20185c3d3a4763
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffc0000
+Ciphertext: 0861a861c3db4e94194211b77ed761b9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffe0000
+Ciphertext: 4b00c27e8b26da7eab9d3a88dec8b031
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffff0000
+Ciphertext: 5f397bf03084820cc8810d52e5b666e9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffff8000
+Ciphertext: 63fafabb72c07bfbd3ddc9b1203104b8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffc000
+Ciphertext: 683e2140585b18452dd4ffbb93c95df9
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffe000
+Ciphertext: 286894e48e537f8763b56707d7d155c8
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffff000
+Ciphertext: a423deabc173dcf7e2c4c53e77d37cd1
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffff800
+Ciphertext: eb8168313e1cfdfdb5e986d5429cf172
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffc00
+Ciphertext: 27127daafc9accd2fb334ec3eba52323
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffe00
+Ciphertext: ee0715b96f72e3f7a22a5064fc592f4c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffff00
+Ciphertext: 29ee526770f2a11dcfa989d1ce88830f
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffff80
+Ciphertext: 0493370e054b09871130fe49af730a5a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffc0
+Ciphertext: 9b7b940f6c509f9e44a4ee140448ee46
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffe0
+Ciphertext: 2915be4a1ecfdcbe3e023811a12bb6c7
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffff0
+Ciphertext: 7240e524bc51d8c4d440b1be55d1062c
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffff8
+Ciphertext: da63039d38cb4612b2dc36ba26684b93
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffffc
+Ciphertext: 0f59cb5a4b522e2ac56c1a64f558ad9a
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: fffffffffffffffffffffffffffffffe
+Ciphertext: 7bfe9d876c6d63c1d035da8fe21c409d
+
+Cipher: AES-256-CTR
+Operation: ENCRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+IV: ffffffffffffffffffffffffffffffff
+Ciphertext: acdace8078a32b1a182bfa4987ca1347
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ddc6bf790c15760d8d9aeb6f9a75fd4e
+IV: 80000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0a6bdc6d4c1e6280301fd8e97ddbe601
+IV: c0000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b80eefb7ebe2d2b16247aa0efc72f5d
+IV: e0000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7f2c5ece07a98d8bee13c51177395ff7
+IV: f0000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7818d800dcf6f4be1e0e94f403d1e4c2
+IV: f8000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e74cd1c92f0919c35a0324123d6177d3
+IV: fc000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8092a4dcf2da7e77e93bdd371dfed82e
+IV: fe000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 49af6b372135acef10132e548f217b17
+IV: ff000000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8bcd40f94ebb63b9f7909676e667f1e7
+IV: ff800000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fe1cffb83f45dcfb38b29be438dbd3ab
+IV: ffc00000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0dc58a8d886623705aec15cb1e70dc0e
+IV: ffe00000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c218faa16056bd0774c3e8d79c35a5e4
+IV: fff00000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 047bba83f7aa841731504e012208fc9e
+IV: fff80000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dc8f0e4915fd81ba70a331310882f6da
+IV: fffc0000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1569859ea6b7206c30bf4fd0cbfac33c
+IV: fffe0000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 300ade92f88f48fa2df730ec16ef44cd
+IV: ffff0000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1fe6cc3c05965dc08eb0590c95ac71d0
+IV: ffff8000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 59e858eaaa97fec38111275b6cf5abc0
+IV: ffffc000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2239455e7afe3b0616100288cc5a723b
+IV: ffffe000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3ee500c5c8d63479717163e55c5c4522
+IV: fffff000000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d5e38bf15f16d90e3e214041d774daa8
+IV: fffff800000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b1f4066e6f4f187dfe5f2ad1b17819d0
+IV: fffffc00000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6ef4cc4de49b11065d7af2909854794a
+IV: fffffe00000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ac86bc606b6640c309e782f232bf367f
+IV: ffffff00000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 36aff0ef7bf3280772cf4cac80a0d2b2
+IV: ffffff80000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1f8eedea0f62a1406d58cfc3ecea72cf
+IV: ffffffc0000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: abf4154a3375a1d3e6b1d454438f95a6
+IV: ffffffe0000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 96f96e9d607f6615fc192061ee648b07
+IV: fffffff0000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cf37cdaaa0d2d536c71857634c792064
+IV: fffffff8000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: fbd6640c80245c2b805373f130703127
+IV: fffffffc000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8d6a8afe55a6e481badae0d146f436db
+IV: fffffffe000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6a4981f2915e3e68af6c22385dd06756
+IV: ffffffff000000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 42a1136e5f8d8d21d3101998642d573b
+IV: ffffffff800000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b471596dc69ae1586cee6158b0b0181
+IV: ffffffffc00000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 753665c4af1eff33aa8b628bf8741cfd
+IV: ffffffffe00000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9a682acf40be01f5b2a4193c9a82404d
+IV: fffffffff00000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 54fafe26e4287f17d1935f87eb9ade01
+IV: fffffffff80000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 49d541b2e74cfe73e6a8e8225f7bd449
+IV: fffffffffc0000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 11a45530f624ff6f76a1b3826626ff7b
+IV: fffffffffe0000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: f96b0c4a8bc6c86130289f60b43b8fba
+IV: ffffffffff0000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 48c7d0e80834ebdc35b6735f76b46c8b
+IV: ffffffffff8000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2463531ab54d66955e73edc4cb8eaa45
+IV: ffffffffffc000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ac9bd8e2530469134b9d5b065d4f565b
+IV: ffffffffffe000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3f5f9106d0e52f973d4890e6f37e8a00
+IV: fffffffffff000000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 20ebc86f1304d272e2e207e59db639f0
+IV: fffffffffff800000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e67ae6426bf9526c972cff072b52252c
+IV: fffffffffffc00000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1a518dddaf9efa0d002cc58d107edfc8
+IV: fffffffffffe00000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ead731af4d3a2fe3b34bed047942a49f
+IV: ffffffffffff00000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b1d4efe40242f83e93b6c8d7efb5eae9
+IV: ffffffffffff80000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cd2b1fec11fd906c5c7630099443610a
+IV: ffffffffffffc0000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a1853fe47fe29289d153161d06387d21
+IV: ffffffffffffe0000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4632154179a555c17ea604d0889fab14
+IV: fffffffffffff0000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: dd27cac6401a022e8f38f9f93e774417
+IV: fffffffffffff8000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c090313eb98674f35f3123385fb95d4d
+IV: fffffffffffffc000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: cc3526262b92f02edce548f716b9f45c
+IV: fffffffffffffe000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: c0838d1a2b16a7c7f0dfcc433c399c33
+IV: ffffffffffffff000000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0d9ac756eb297695eed4d382eb126d26
+IV: ffffffffffffff800000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 56ede9dda3f6f141bff1757fa689c3e1
+IV: ffffffffffffffc00000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 768f520efe0f23e61d3ec8ad9ce91774
+IV: ffffffffffffffe00000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b1144ddfa75755213390e7c596660490
+IV: fffffffffffffff00000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1d7c0c4040b355b9d107a99325e3b050
+IV: fffffffffffffff80000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d8e2bb1ae8ee3dcf5bf7d6c38da82a1a
+IV: fffffffffffffffc0000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: faf82d178af25a9886a47e7f789b98d7
+IV: fffffffffffffffe0000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b58dbfd77fe5aca9cfc190cd1b82d19
+IV: ffffffffffffffff0000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 77f392089042e478ac16c0c86a0b5db5
+IV: ffffffffffffffff8000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 19f08e3420ee69b477ca1420281c4782
+IV: ffffffffffffffffc000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a1b19beee4e117139f74b3c53fdcb875
+IV: ffffffffffffffffe000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a37a5869b218a9f3a0868d19aea0ad6a
+IV: fffffffffffffffff000000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: bc3594e865bcd0261b13202731f33580
+IV: fffffffffffffffff800000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 811441ce1d309eee7185e8c752c07557
+IV: fffffffffffffffffc00000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 959971ce4134190563518e700b9874d1
+IV: fffffffffffffffffe00000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 76b5614a042707c98e2132e2e805fe63
+IV: ffffffffffffffffff00000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7d9fa6a57530d0f036fec31c230b0cc6
+IV: ffffffffffffffffff80000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 964153a83bf6989a4ba80daa91c3e081
+IV: ffffffffffffffffffc0000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a013014d4ce8054cf2591d06f6f2f176
+IV: ffffffffffffffffffe0000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: d1c5f6399bf382502e385eee1474a869
+IV: fffffffffffffffffff0000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0007e20b8298ec354f0f5fe7470f36bd
+IV: fffffffffffffffffff8000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: b95ba05b332da61ef63a2b31fcad9879
+IV: fffffffffffffffffffc000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4620a49bd967491561669ab25dce45f4
+IV: fffffffffffffffffffe000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 12e71214ae8e04f0bb63d7425c6f14d5
+IV: ffffffffffffffffffff000000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4cc42fc1407b008fe350907c092e80ac
+IV: ffffffffffffffffffff800000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 08b244ce7cbc8ee97fbba808cb146fda
+IV: ffffffffffffffffffffc00000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 39b333e8694f21546ad1edd9d87ed95b
+IV: ffffffffffffffffffffe00000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3b271f8ab2e6e4a20ba8090f43ba78f3
+IV: fffffffffffffffffffff00000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9ad983f3bf651cd0393f0a73cccdea50
+IV: fffffffffffffffffffff80000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8f476cbff75c1f725ce18e4bbcd19b32
+IV: fffffffffffffffffffffc0000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 905b6267f1d6ab5320835a133f096f2a
+IV: fffffffffffffffffffffe0000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 145b60d6d0193c23f4221848a892d61a
+IV: ffffffffffffffffffffff0000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 55cfb3fb6d75cad0445bbc8dafa25b0f
+IV: ffffffffffffffffffffff8000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7b8e7098e357ef71237d46d8b075b0f5
+IV: ffffffffffffffffffffffc000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2bf27229901eb40f2df9d8398d1505ae
+IV: ffffffffffffffffffffffe000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 83a63402a77f9ad5c1e931a931ecd706
+IV: fffffffffffffffffffffff000000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 6f8ba6521152d31f2bada1843e26b973
+IV: fffffffffffffffffffffff800000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e5c3b8e30fd2d8e6239b17b44bd23bbd
+IV: fffffffffffffffffffffffc00000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1ac1f7102c59933e8b2ddc3f14e94baa
+IV: fffffffffffffffffffffffe00000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 21d9ba49f276b45f11af8fc71a088e3d
+IV: ffffffffffffffffffffffff00000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 649f1cddc3792b4638635a392bc9bade
+IV: ffffffffffffffffffffffff80000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: e2775e4b59c1bc2e31a2078c11b5a08c
+IV: ffffffffffffffffffffffffc0000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2be1fae5048a25582a679ca10905eb80
+IV: ffffffffffffffffffffffffe0000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: da86f292c6f41ea34fb2068df75ecc29
+IV: fffffffffffffffffffffffff0000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 220df19f85d69b1b562fa69a3c5beca5
+IV: fffffffffffffffffffffffff8000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 1f11d5d0355e0b556ccdb6c7f5083b4d
+IV: fffffffffffffffffffffffffc000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 62526b78be79cb384633c91f83b4151b
+IV: fffffffffffffffffffffffffe000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 90ddbcb950843592dd47bbef00fdc876
+IV: ffffffffffffffffffffffffff000000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2fd0e41c5b8402277354a7391d2618e2
+IV: ffffffffffffffffffffffffff800000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 3cdf13e72dee4c581bafec70b85f9660
+IV: ffffffffffffffffffffffffffc00000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: afa2ffc137577092e2b654fa199d2c43
+IV: ffffffffffffffffffffffffffe00000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 8d683ee63e60d208e343ce48dbc44cac
+IV: fffffffffffffffffffffffffff00000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 705a4ef8ba2133729c20185c3d3a4763
+IV: fffffffffffffffffffffffffff80000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0861a861c3db4e94194211b77ed761b9
+IV: fffffffffffffffffffffffffffc0000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 4b00c27e8b26da7eab9d3a88dec8b031
+IV: fffffffffffffffffffffffffffe0000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 5f397bf03084820cc8810d52e5b666e9
+IV: ffffffffffffffffffffffffffff0000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 63fafabb72c07bfbd3ddc9b1203104b8
+IV: ffffffffffffffffffffffffffff8000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 683e2140585b18452dd4ffbb93c95df9
+IV: ffffffffffffffffffffffffffffc000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 286894e48e537f8763b56707d7d155c8
+IV: ffffffffffffffffffffffffffffe000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: a423deabc173dcf7e2c4c53e77d37cd1
+IV: fffffffffffffffffffffffffffff000
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: eb8168313e1cfdfdb5e986d5429cf172
+IV: fffffffffffffffffffffffffffff800
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 27127daafc9accd2fb334ec3eba52323
+IV: fffffffffffffffffffffffffffffc00
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: ee0715b96f72e3f7a22a5064fc592f4c
+IV: fffffffffffffffffffffffffffffe00
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 29ee526770f2a11dcfa989d1ce88830f
+IV: ffffffffffffffffffffffffffffff00
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0493370e054b09871130fe49af730a5a
+IV: ffffffffffffffffffffffffffffff80
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 9b7b940f6c509f9e44a4ee140448ee46
+IV: ffffffffffffffffffffffffffffffc0
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 2915be4a1ecfdcbe3e023811a12bb6c7
+IV: ffffffffffffffffffffffffffffffe0
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7240e524bc51d8c4d440b1be55d1062c
+IV: fffffffffffffffffffffffffffffff0
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: da63039d38cb4612b2dc36ba26684b93
+IV: fffffffffffffffffffffffffffffff8
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 0f59cb5a4b522e2ac56c1a64f558ad9a
+IV: fffffffffffffffffffffffffffffffc
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: 7bfe9d876c6d63c1d035da8fe21c409d
+IV: fffffffffffffffffffffffffffffffe
+
+Cipher: AES-256-CTR
+Operation: DECRYPT
+Key: 0000000000000000000000000000000000000000000000000000000000000000
+Plaintext: 00000000000000000000000000000000
+Ciphertext: acdace8078a32b1a182bfa4987ca1347
+IV: ffffffffffffffffffffffffffffffff
+
diff --git a/src/crypto/cpu-ppc64le.c b/src/crypto/cpu-ppc64le.c
index c431c81..54571bd 100644
--- a/src/crypto/cpu-ppc64le.c
+++ b/src/crypto/cpu-ppc64le.c
@@ -27,14 +27,12 @@
 #define PPC_FEATURE2_HAS_VCRYPTO 0x02000000
 #endif
 
-static unsigned long g_ppc64le_hwcap2 = 0;
-
 void OPENSSL_cpuid_setup(void) {
-  g_ppc64le_hwcap2 = getauxval(AT_HWCAP2);
+  OPENSSL_ppc64le_hwcap2 = getauxval(AT_HWCAP2);
 }
 
 int CRYPTO_is_PPC64LE_vcrypto_capable(void) {
-  return (g_ppc64le_hwcap2 & PPC_FEATURE2_HAS_VCRYPTO) != 0;
+  return (OPENSSL_ppc64le_hwcap2 & PPC_FEATURE2_HAS_VCRYPTO) != 0;
 }
 
 #endif  /* OPENSSL_PPC64LE */
diff --git a/src/crypto/crypto.c b/src/crypto/crypto.c
index c32f514..5d35289 100644
--- a/src/crypto/crypto.c
+++ b/src/crypto/crypto.c
@@ -49,6 +49,7 @@
  * far, the init constructor function only sets the capability variables. */
 
 #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
+
 /* This value must be explicitly initialised to zero in order to work around a
  * bug in libtool or the linker on OS X.
  *
@@ -57,6 +58,14 @@
  * initialising it to zero, it becomes a "data symbol", which isn't so
  * affected. */
 uint32_t OPENSSL_ia32cap_P[4] = {0};
+#if !defined(BORINGSSL_FIPS)
+uint32_t *OPENSSL_ia32cap_addr = OPENSSL_ia32cap_P;
+#endif
+
+#elif defined(OPENSSL_PPC64LE)
+
+unsigned long OPENSSL_ppc64le_hwcap2 = 0;
+
 #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
 
 #include <openssl/arm_arch.h>
@@ -87,6 +96,11 @@
 
 #endif
 
+#if defined(BORINGSSL_FIPS)
+/* In FIPS mode, the power-on self-test function calls |CRYPTO_library_init|
+ * because we have to ensure that CPUID detection occurs first. */
+#define BORINGSSL_NO_STATIC_INITIALIZER
+#endif
 
 #if defined(OPENSSL_WINDOWS) && !defined(BORINGSSL_NO_STATIC_INITIALIZER)
 #define OPENSSL_CDECL __cdecl
@@ -160,5 +174,3 @@
 }
 
 void OPENSSL_load_builtin_modules(void) {}
-
-int FIPS_mode(void) { return 0; }
diff --git a/src/crypto/curve25519/asm/x25519-asm-arm.S b/src/crypto/curve25519/asm/x25519-asm-arm.S
index 3af1dba..38ec03b 100644
--- a/src/crypto/curve25519/asm/x25519-asm-arm.S
+++ b/src/crypto/curve25519/asm/x25519-asm-arm.S
@@ -17,8 +17,7 @@
  * domain licensed but the standard ISC license is included above to keep
  * licensing simple. */
 
-#if !defined(OPENSSL_NO_ASM)
-#if defined(__arm__)
+#if !defined(OPENSSL_NO_ASM) && defined(__arm__) && !defined(__APPLE__)
 
 .fpu neon
 .text
@@ -2120,5 +2119,4 @@
 vpop {q4,q5,q6,q7}
 bx lr
 
-#endif  /* __arm__ */
-#endif  /* !OPENSSL_NO_ASM */
+#endif  /* !OPENSSL_NO_ASM && __arm__ && !__APPLE__ */
diff --git a/src/crypto/curve25519/internal.h b/src/crypto/curve25519/internal.h
index ea206a3..ee865bd 100644
--- a/src/crypto/curve25519/internal.h
+++ b/src/crypto/curve25519/internal.h
@@ -29,7 +29,7 @@
 #endif
 
 
-#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM)
+#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_APPLE)
 #define BORINGSSL_X25519_NEON
 
 /* x25519_NEON is defined in asm/x25519-arm.S. */
diff --git a/src/crypto/digest/CMakeLists.txt b/src/crypto/digest_extra/CMakeLists.txt
similarity index 87%
rename from src/crypto/digest/CMakeLists.txt
rename to src/crypto/digest_extra/CMakeLists.txt
index 7a68f6f..f083a16 100644
--- a/src/crypto/digest/CMakeLists.txt
+++ b/src/crypto/digest_extra/CMakeLists.txt
@@ -1,12 +1,11 @@
 include_directories(../../include)
 
 add_library(
-  digest
+  digest_extra
 
   OBJECT
 
-  digest.c
-  digests.c
+  digest_extra.c
 )
 
 add_executable(
diff --git a/src/crypto/digest/digests.c b/src/crypto/digest_extra/digest_extra.c
similarity index 61%
rename from src/crypto/digest/digests.c
rename to src/crypto/digest_extra/digest_extra.c
index 9ad2d49..b18759a 100644
--- a/src/crypto/digest/digests.c
+++ b/src/crypto/digest_extra/digest_extra.c
@@ -56,206 +56,15 @@
 
 #include <openssl/digest.h>
 
-#include <assert.h>
 #include <string.h>
 
 #include <openssl/asn1.h>
 #include <openssl/bytestring.h>
-#include <openssl/md4.h>
-#include <openssl/md5.h>
 #include <openssl/nid.h>
-#include <openssl/sha.h>
 
 #include "internal.h"
 #include "../internal.h"
 
-#if defined(NDEBUG)
-#define CHECK(x) (void) (x)
-#else
-#define CHECK(x) assert(x)
-#endif
-
-
-static void md4_init(EVP_MD_CTX *ctx) {
-  CHECK(MD4_Init(ctx->md_data));
-}
-
-static void md4_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
-  CHECK(MD4_Update(ctx->md_data, data, count));
-}
-
-static void md4_final(EVP_MD_CTX *ctx, uint8_t *out) {
-  CHECK(MD4_Final(out, ctx->md_data));
-}
-
-static const EVP_MD md4_md = {
-    NID_md4,    MD4_DIGEST_LENGTH, 0 /* flags */,       md4_init,
-    md4_update, md4_final,         64 /* block size */, sizeof(MD4_CTX),
-};
-
-const EVP_MD *EVP_md4(void) { return &md4_md; }
-
-
-static void md5_init(EVP_MD_CTX *ctx) {
-  CHECK(MD5_Init(ctx->md_data));
-}
-
-static void md5_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
-  CHECK(MD5_Update(ctx->md_data, data, count));
-}
-
-static void md5_final(EVP_MD_CTX *ctx, uint8_t *out) {
-  CHECK(MD5_Final(out, ctx->md_data));
-}
-
-static const EVP_MD md5_md = {
-    NID_md5,    MD5_DIGEST_LENGTH, 0 /* flags */,       md5_init,
-    md5_update, md5_final,         64 /* block size */, sizeof(MD5_CTX),
-};
-
-const EVP_MD *EVP_md5(void) { return &md5_md; }
-
-
-static void sha1_init(EVP_MD_CTX *ctx) {
-  CHECK(SHA1_Init(ctx->md_data));
-}
-
-static void sha1_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
-  CHECK(SHA1_Update(ctx->md_data, data, count));
-}
-
-static void sha1_final(EVP_MD_CTX *ctx, uint8_t *md) {
-  CHECK(SHA1_Final(md, ctx->md_data));
-}
-
-static const EVP_MD sha1_md = {
-    NID_sha1,    SHA_DIGEST_LENGTH, 0 /* flags */,       sha1_init,
-    sha1_update, sha1_final,        64 /* block size */, sizeof(SHA_CTX),
-};
-
-const EVP_MD *EVP_sha1(void) { return &sha1_md; }
-
-
-static void sha224_init(EVP_MD_CTX *ctx) {
-  CHECK(SHA224_Init(ctx->md_data));
-}
-
-static void sha224_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
-  CHECK(SHA224_Update(ctx->md_data, data, count));
-}
-
-static void sha224_final(EVP_MD_CTX *ctx, uint8_t *md) {
-  CHECK(SHA224_Final(md, ctx->md_data));
-}
-
-static const EVP_MD sha224_md = {
-    NID_sha224,          SHA224_DIGEST_LENGTH, 0 /* flags */,
-    sha224_init,         sha224_update,        sha224_final,
-    64 /* block size */, sizeof(SHA256_CTX),
-};
-
-const EVP_MD *EVP_sha224(void) { return &sha224_md; }
-
-
-static void sha256_init(EVP_MD_CTX *ctx) {
-  CHECK(SHA256_Init(ctx->md_data));
-}
-
-static void sha256_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
-  CHECK(SHA256_Update(ctx->md_data, data, count));
-}
-
-static void sha256_final(EVP_MD_CTX *ctx, uint8_t *md) {
-  CHECK(SHA256_Final(md, ctx->md_data));
-}
-
-static const EVP_MD sha256_md = {
-    NID_sha256,          SHA256_DIGEST_LENGTH, 0 /* flags */,
-    sha256_init,         sha256_update,        sha256_final,
-    64 /* block size */, sizeof(SHA256_CTX),
-};
-
-const EVP_MD *EVP_sha256(void) { return &sha256_md; }
-
-
-static void sha384_init(EVP_MD_CTX *ctx) {
-  CHECK(SHA384_Init(ctx->md_data));
-}
-
-static void sha384_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
-  CHECK(SHA384_Update(ctx->md_data, data, count));
-}
-
-static void sha384_final(EVP_MD_CTX *ctx, uint8_t *md) {
-  CHECK(SHA384_Final(md, ctx->md_data));
-}
-
-static const EVP_MD sha384_md = {
-    NID_sha384,           SHA384_DIGEST_LENGTH, 0 /* flags */,
-    sha384_init,          sha384_update,        sha384_final,
-    128 /* block size */, sizeof(SHA512_CTX),
-};
-
-const EVP_MD *EVP_sha384(void) { return &sha384_md; }
-
-
-static void sha512_init(EVP_MD_CTX *ctx) {
-  CHECK(SHA512_Init(ctx->md_data));
-}
-
-static void sha512_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
-  CHECK(SHA512_Update(ctx->md_data, data, count));
-}
-
-static void sha512_final(EVP_MD_CTX *ctx, uint8_t *md) {
-  CHECK(SHA512_Final(md, ctx->md_data));
-}
-
-static const EVP_MD sha512_md = {
-    NID_sha512,           SHA512_DIGEST_LENGTH, 0 /* flags */,
-    sha512_init,          sha512_update,        sha512_final,
-    128 /* block size */, sizeof(SHA512_CTX),
-};
-
-const EVP_MD *EVP_sha512(void) { return &sha512_md; }
-
-
-typedef struct {
-  MD5_CTX md5;
-  SHA_CTX sha1;
-} MD5_SHA1_CTX;
-
-static void md5_sha1_init(EVP_MD_CTX *md_ctx) {
-  MD5_SHA1_CTX *ctx = md_ctx->md_data;
-  CHECK(MD5_Init(&ctx->md5) && SHA1_Init(&ctx->sha1));
-}
-
-static void md5_sha1_update(EVP_MD_CTX *md_ctx, const void *data,
-                            size_t count) {
-  MD5_SHA1_CTX *ctx = md_ctx->md_data;
-  CHECK(MD5_Update(&ctx->md5, data, count) &&
-        SHA1_Update(&ctx->sha1, data, count));
-}
-
-static void md5_sha1_final(EVP_MD_CTX *md_ctx, uint8_t *out) {
-  MD5_SHA1_CTX *ctx = md_ctx->md_data;
-  CHECK(MD5_Final(out, &ctx->md5) &&
-        SHA1_Final(out + MD5_DIGEST_LENGTH, &ctx->sha1));
-}
-
-static const EVP_MD md5_sha1_md = {
-    NID_md5_sha1,
-    MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH,
-    0 /* flags */,
-    md5_sha1_init,
-    md5_sha1_update,
-    md5_sha1_final,
-    64 /* block size */,
-    sizeof(MD5_SHA1_CTX),
-};
-
-const EVP_MD *EVP_md5_sha1(void) { return &md5_sha1_md; }
-
 
 struct nid_to_digest {
   int nid;
diff --git a/src/crypto/digest/digest_test.cc b/src/crypto/digest_extra/digest_test.cc
similarity index 100%
rename from src/crypto/digest/digest_test.cc
rename to src/crypto/digest_extra/digest_test.cc
diff --git a/src/crypto/digest_extra/internal.h b/src/crypto/digest_extra/internal.h
new file mode 100644
index 0000000..264405f
--- /dev/null
+++ b/src/crypto/digest_extra/internal.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#ifndef OPENSSL_HEADER_DIGEST_EXTRA_INTERNAL_H
+#define OPENSSL_HEADER_DIGEST_EXTRA_INTERNAL_H
+
+#include <openssl/base.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+
+const EVP_MD *EVP_parse_digest_algorithm(CBS *cbs);
+
+
+#if defined(__cplusplus)
+}  /* extern C */
+#endif
+
+#endif  /* OPENSSL_HEADER_DIGEST_EXTRA_INTERNAL */
diff --git a/src/crypto/ec/ec_key.c b/src/crypto/ec/ec_key.c
index 1a93346..1be4d25 100644
--- a/src/crypto/ec/ec_key.c
+++ b/src/crypto/ec/ec_key.c
@@ -70,6 +70,7 @@
 #include <string.h>
 
 #include <openssl/ec.h>
+#include <openssl/ecdsa.h>
 #include <openssl/engine.h>
 #include <openssl/err.h>
 #include <openssl/ex_data.h>
@@ -345,6 +346,40 @@
   return ok;
 }
 
+int EC_KEY_check_fips(const EC_KEY *key) {
+  if (EC_KEY_is_opaque(key)) {
+    /* Opaque keys can't be checked. */
+    OPENSSL_PUT_ERROR(EC, EC_R_PUBLIC_KEY_VALIDATION_FAILED);
+    return 0;
+  }
+
+  if (!EC_KEY_check_key(key)) {
+    return 0;
+  }
+
+  if (!key->priv_key) {
+    return 1;
+  }
+
+  uint8_t data[16] = {0};
+  unsigned sig_len = ECDSA_size(key);
+  uint8_t *sig = OPENSSL_malloc(sig_len);
+  if (sig == NULL) {
+    OPENSSL_PUT_ERROR(EC, ERR_R_MALLOC_FAILURE);
+    return 0;
+  }
+
+  int ret = 1;
+  if (!ECDSA_sign(0, data, sizeof(data), sig, &sig_len, key) ||
+      !ECDSA_verify(0, data, sizeof(data), sig, sig_len, key)) {
+    OPENSSL_PUT_ERROR(EC, EC_R_PUBLIC_KEY_VALIDATION_FAILED);
+    ret = 0;
+  }
+
+  OPENSSL_free(sig);
+  return ret;
+}
+
 int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x,
                                              BIGNUM *y) {
   BN_CTX *ctx = NULL;
@@ -425,6 +460,15 @@
   }
 
   const BIGNUM *order = EC_GROUP_get0_order(eckey->group);
+
+  /* Check that the size of the group order is FIPS compliant (FIPS 186-4
+   * B.4.2). */
+  if (BN_num_bits(order) < 160) {
+    OPENSSL_PUT_ERROR(EC, EC_R_INVALID_GROUP_ORDER);
+    goto err;
+  }
+
+  /* Generate the private key by testing candidates (FIPS 186-4 B.4.2). */
   if (!BN_rand_range_ex(priv_key, 1, order)) {
     goto err;
   }
diff --git a/src/crypto/ec/ec_test.cc b/src/crypto/ec/ec_test.cc
index 02b9ef2..2bc87aa 100644
--- a/src/crypto/ec/ec_test.cc
+++ b/src/crypto/ec/ec_test.cc
@@ -314,6 +314,15 @@
                                                    x.get(), y.get(), nullptr));
 }
 
+TEST_P(ECCurveTest, CheckFIPS) {
+  // Generate an EC_KEY.
+  bssl::UniquePtr<EC_KEY> key(EC_KEY_new_by_curve_name(GetParam().nid));
+  ASSERT_TRUE(key);
+  ASSERT_TRUE(EC_KEY_generate_key(key.get()));
+
+  EXPECT_TRUE(EC_KEY_check_fips(key.get()));
+}
+
 TEST_P(ECCurveTest, AddingEqualPoints) {
   bssl::UniquePtr<EC_KEY> key(EC_KEY_new_by_curve_name(GetParam().nid));
   ASSERT_TRUE(key);
diff --git a/src/crypto/ecdsa/ecdsa.c b/src/crypto/ecdsa/ecdsa.c
index e1a0525..5df494e 100644
--- a/src/crypto/ecdsa/ecdsa.c
+++ b/src/crypto/ecdsa/ecdsa.c
@@ -229,7 +229,7 @@
                             BIGNUM **rp, const uint8_t *digest,
                             size_t digest_len) {
   BN_CTX *ctx = NULL;
-  BIGNUM *k = NULL, *r = NULL, *tmp = NULL;
+  BIGNUM *k = NULL, *kinv = NULL, *r = NULL, *tmp = NULL;
   EC_POINT *tmp_point = NULL;
   const EC_GROUP *group;
   int ret = 0;
@@ -248,10 +248,11 @@
     ctx = ctx_in;
   }
 
-  k = BN_new(); /* this value is later returned in *kinvp */
+  k = BN_new();
+  kinv = BN_new(); /* this value is later returned in *kinvp */
   r = BN_new(); /* this value is later returned in *rp    */
   tmp = BN_new();
-  if (k == NULL || r == NULL || tmp == NULL) {
+  if (k == NULL || kinv == NULL || r == NULL || tmp == NULL) {
     OPENSSL_PUT_ERROR(ECDSA, ERR_R_MALLOC_FAILURE);
     goto err;
   }
@@ -263,6 +264,13 @@
 
   const BIGNUM *order = EC_GROUP_get0_order(group);
 
+  /* Check that the size of the group order is FIPS compliant (FIPS 186-4
+   * B.5.2). */
+  if (BN_num_bits(order) < 160) {
+    OPENSSL_PUT_ERROR(ECDSA, EC_R_INVALID_GROUP_ORDER);
+    goto err;
+  }
+
   do {
     /* If possible, we'll include the private key and message digest in the k
      * generation. The |digest| argument is only empty if |ECDSA_sign_setup| is
@@ -280,6 +288,15 @@
       goto err;
     }
 
+    /* Compute the inverse of k. The order is a prime, so use Fermat's Little
+     * Theorem. Note |ec_group_get_mont_data| may return NULL but
+     * |bn_mod_inverse_prime| allows this. */
+    if (!bn_mod_inverse_prime(kinv, k, order, ctx,
+                              ec_group_get_mont_data(group))) {
+      OPENSSL_PUT_ERROR(ECDSA, ERR_R_BN_LIB);
+      goto err;
+    }
+
     /* We do not want timing information to leak the length of k,
      * so we compute G*k using an equivalent scalar of fixed
      * bit-length. */
@@ -310,25 +327,19 @@
     }
   } while (BN_is_zero(r));
 
-  /* Compute the inverse of k. The order is a prime, so use Fermat's Little
-   * Theorem. Note |ec_group_get_mont_data| may return NULL but
-   * |bn_mod_inverse_prime| allows this. */
-  if (!bn_mod_inverse_prime(k, k, order, ctx, ec_group_get_mont_data(group))) {
-    OPENSSL_PUT_ERROR(ECDSA, ERR_R_BN_LIB);
-    goto err;
-  }
   /* clear old values if necessary */
   BN_clear_free(*rp);
   BN_clear_free(*kinvp);
 
   /* save the pre-computed values  */
   *rp = r;
-  *kinvp = k;
+  *kinvp = kinv;
   ret = 1;
 
 err:
+  BN_clear_free(k);
   if (!ret) {
-    BN_clear_free(k);
+    BN_clear_free(kinv);
     BN_clear_free(r);
   }
   if (ctx_in == NULL) {
diff --git a/src/crypto/err/ec.errordata b/src/crypto/err/ec.errordata
index aada76e..fae9480 100644
--- a/src/crypto/err/ec.errordata
+++ b/src/crypto/err/ec.errordata
@@ -24,6 +24,7 @@
 EC,118,PKPARAMETERS2GROUP_FAILURE
 EC,119,POINT_AT_INFINITY
 EC,120,POINT_IS_NOT_ON_CURVE
+EC,132,PUBLIC_KEY_VALIDATION_FAILED
 EC,121,SLOT_FULL
 EC,122,UNDEFINED_GENERATOR
 EC,123,UNKNOWN_GROUP
diff --git a/src/crypto/err/evp.errordata b/src/crypto/err/evp.errordata
index a482f76..7cad638 100644
--- a/src/crypto/err/evp.errordata
+++ b/src/crypto/err/evp.errordata
@@ -15,8 +15,10 @@
 EVP,114,INVALID_OPERATION
 EVP,115,INVALID_PADDING_MODE
 EVP,116,INVALID_PSS_SALTLEN
+EVP,131,INVALID_SIGNATURE
 EVP,117,KEYS_NOT_SET
 EVP,118,MISSING_PARAMETERS
+EVP,130,NOT_A_PRIVATE_KEY
 EVP,119,NO_DEFAULT_DIGEST
 EVP,120,NO_KEY_SET
 EVP,121,NO_MDC2_SUPPORT
diff --git a/src/crypto/err/rsa.errordata b/src/crypto/err/rsa.errordata
index 62d286c..9d18e04 100644
--- a/src/crypto/err/rsa.errordata
+++ b/src/crypto/err/rsa.errordata
@@ -36,6 +36,7 @@
 RSA,135,OUTPUT_BUFFER_TOO_SMALL
 RSA,136,PADDING_CHECK_FAILED
 RSA,137,PKCS_DECODING_ERROR
+RSA,146,PUBLIC_KEY_VALIDATION_FAILED
 RSA,138,SLEN_CHECK_FAILED
 RSA,139,SLEN_RECOVERY_FAILED
 RSA,140,TOO_LONG
diff --git a/src/crypto/err/ssl.errordata b/src/crypto/err/ssl.errordata
index 5e38b30..9ac015c 100644
--- a/src/crypto/err/ssl.errordata
+++ b/src/crypto/err/ssl.errordata
@@ -101,6 +101,7 @@
 SSL,183,NO_REQUIRED_DIGEST
 SSL,184,NO_SHARED_CIPHER
 SSL,266,NO_SHARED_GROUP
+SSL,280,NO_SUPPORTED_VERSIONS_ENABLED
 SSL,185,NULL_SSL_CTX
 SSL,186,NULL_SSL_METHOD_PASSED
 SSL,187,OLD_SESSION_CIPHER_NOT_RETURNED
diff --git a/src/crypto/err/x509.errordata b/src/crypto/err/x509.errordata
index 5687c30..1a8c4f1 100644
--- a/src/crypto/err/x509.errordata
+++ b/src/crypto/err/x509.errordata
@@ -10,6 +10,7 @@
 X509,109,INVALID_BIT_STRING_BITS_LEFT
 X509,110,INVALID_DIRECTORY
 X509,111,INVALID_FIELD_NAME
+X509,136,INVALID_PARAMETER
 X509,112,INVALID_PSS_PARAMETERS
 X509,113,INVALID_TRUST
 X509,114,ISSUER_MISMATCH
diff --git a/src/crypto/evp/CMakeLists.txt b/src/crypto/evp/CMakeLists.txt
index 188c580..6e69a82 100644
--- a/src/crypto/evp/CMakeLists.txt
+++ b/src/crypto/evp/CMakeLists.txt
@@ -12,6 +12,8 @@
   p_dsa_asn1.c
   p_ec.c
   p_ec_asn1.c
+  p_ed25519.c
+  p_ed25519_asn1.c
   p_rsa.c
   p_rsa_asn1.c
   pbkdf.c
diff --git a/src/crypto/evp/digestsign.c b/src/crypto/evp/digestsign.c
index 69c483a..299ca5e 100644
--- a/src/crypto/evp/digestsign.c
+++ b/src/crypto/evp/digestsign.c
@@ -58,7 +58,7 @@
 #include <openssl/err.h>
 
 #include "internal.h"
-#include "../digest/internal.h"
+#include "../fipsmodule/digest/internal.h"
 
 
 static const struct evp_md_pctx_ops md_pctx_ops = {
diff --git a/src/crypto/evp/evp.c b/src/crypto/evp/evp.c
index f8fe6ce..117e774 100644
--- a/src/crypto/evp/evp.c
+++ b/src/crypto/evp/evp.c
@@ -198,6 +198,8 @@
       return &ec_asn1_meth;
     case EVP_PKEY_DSA:
       return &dsa_asn1_meth;
+    case EVP_PKEY_ED25519:
+      return &ed25519_asn1_meth;
     default:
       return NULL;
   }
diff --git a/src/crypto/evp/evp_asn1.c b/src/crypto/evp/evp_asn1.c
index 6c90571..1f8d3eb 100644
--- a/src/crypto/evp/evp_asn1.c
+++ b/src/crypto/evp/evp_asn1.c
@@ -72,6 +72,7 @@
     &rsa_asn1_meth,
     &ec_asn1_meth,
     &dsa_asn1_meth,
+    &ed25519_asn1_meth,
 };
 
 static int parse_key_type(CBS *cbs, int *out_type) {
@@ -80,8 +81,7 @@
     return 0;
   }
 
-  unsigned i;
-  for (i = 0; i < OPENSSL_ARRAY_SIZE(kASN1Methods); i++) {
+  for (unsigned i = 0; i < OPENSSL_ARRAY_SIZE(kASN1Methods); i++) {
     const EVP_PKEY_ASN1_METHOD *method = kASN1Methods[i];
     if (CBS_len(&oid) == method->oid_len &&
         OPENSSL_memcmp(CBS_data(&oid), method->oid, method->oid_len) == 0) {
diff --git a/src/crypto/evp/evp_ctx.c b/src/crypto/evp/evp_ctx.c
index a17a8cc..3108cfb 100644
--- a/src/crypto/evp/evp_ctx.c
+++ b/src/crypto/evp/evp_ctx.c
@@ -58,6 +58,7 @@
 
 #include <string.h>
 
+#include <openssl/digest.h>
 #include <openssl/err.h>
 #include <openssl/mem.h>
 
@@ -68,6 +69,7 @@
 static const EVP_PKEY_METHOD *const evp_methods[] = {
   &rsa_pkey_meth,
   &ec_pkey_meth,
+  &ed25519_pkey_meth,
 };
 
 static const EVP_PKEY_METHOD *evp_pkey_meth_find(int type) {
@@ -211,7 +213,8 @@
 }
 
 int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx) {
-  if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) {
+  if (ctx == NULL || ctx->pmeth == NULL ||
+      (ctx->pmeth->sign == NULL && ctx->pmeth->sign_message == NULL)) {
     OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
     return 0;
   }
@@ -221,7 +224,7 @@
 }
 
 int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, uint8_t *sig, size_t *sig_len,
-                  const uint8_t *data, size_t data_len) {
+                  const uint8_t *digest, size_t digest_len) {
   if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) {
     OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
     return 0;
@@ -230,11 +233,56 @@
     OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATON_NOT_INITIALIZED);
     return 0;
   }
-  return ctx->pmeth->sign(ctx, sig, sig_len, data, data_len);
+  return ctx->pmeth->sign(ctx, sig, sig_len, digest, digest_len);
+}
+
+static const EVP_MD *get_signature_md(EVP_PKEY_CTX *ctx) {
+  const EVP_MD *md;
+  if (!EVP_PKEY_CTX_get_signature_md(ctx, &md)) {
+    return NULL;
+  }
+
+  if (md == NULL) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_NO_DEFAULT_DIGEST);
+    return NULL;
+  }
+
+  return md;
+}
+
+int EVP_PKEY_sign_message(EVP_PKEY_CTX *ctx, uint8_t *sig, size_t *sig_len,
+                          const uint8_t *data, size_t data_len) {
+  if (ctx == NULL || ctx->pmeth == NULL ||
+      (ctx->pmeth->sign == NULL && ctx->pmeth->sign_message == NULL)) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
+    return 0;
+  }
+  if (ctx->operation != EVP_PKEY_OP_SIGN) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATON_NOT_INITIALIZED);
+    return 0;
+  }
+
+  if (ctx->pmeth->sign_message != NULL) {
+    return ctx->pmeth->sign_message(ctx, sig, sig_len, data, data_len);
+  }
+
+  /* Don't bother digesting if we are only sampling the length. */
+  if (sig == NULL) {
+    *sig_len = EVP_PKEY_size(EVP_PKEY_CTX_get0_pkey(ctx));
+    return 1;
+  }
+
+  uint8_t digest[EVP_MAX_MD_SIZE];
+  unsigned digest_len;
+  const EVP_MD *md = get_signature_md(ctx);
+  return md != NULL &&
+         EVP_Digest(data, data_len, digest, &digest_len, md, NULL) &&
+         EVP_PKEY_sign(ctx, sig, sig_len, digest, digest_len);
 }
 
 int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx) {
-  if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) {
+  if (ctx == NULL || ctx->pmeth == NULL ||
+      (ctx->pmeth->verify == NULL && ctx->pmeth->verify_message == NULL)) {
     OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
     return 0;
   }
@@ -243,7 +291,7 @@
 }
 
 int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, const uint8_t *sig, size_t sig_len,
-                    const uint8_t *data, size_t data_len) {
+                    const uint8_t *digest, size_t digest_len) {
   if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) {
     OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
     return 0;
@@ -252,7 +300,32 @@
     OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATON_NOT_INITIALIZED);
     return 0;
   }
-  return ctx->pmeth->verify(ctx, sig, sig_len, data, data_len);
+  return ctx->pmeth->verify(ctx, sig, sig_len, digest, digest_len);
+}
+
+int EVP_PKEY_verify_message(EVP_PKEY_CTX *ctx, const uint8_t *sig,
+                            size_t sig_len, const uint8_t *data,
+                            size_t data_len) {
+  if (ctx == NULL || ctx->pmeth == NULL ||
+      (ctx->pmeth->verify == NULL && ctx->pmeth->verify_message == NULL)) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
+    return 0;
+  }
+  if (ctx->operation != EVP_PKEY_OP_VERIFY) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_OPERATON_NOT_INITIALIZED);
+    return 0;
+  }
+
+  if (ctx->pmeth->verify_message != NULL) {
+    return ctx->pmeth->verify_message(ctx, sig, sig_len, data, data_len);
+  }
+
+  uint8_t digest[EVP_MAX_MD_SIZE];
+  unsigned digest_len;
+  const EVP_MD *md = get_signature_md(ctx);
+  return md != NULL &&
+         EVP_Digest(data, data_len, digest, &digest_len, md, NULL) &&
+         EVP_PKEY_verify(ctx, sig, sig_len, digest, digest_len);
 }
 
 int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx) {
diff --git a/src/crypto/evp/evp_extra_test.cc b/src/crypto/evp/evp_extra_test.cc
index 0f8bb3b..73a5c89 100644
--- a/src/crypto/evp/evp_extra_test.cc
+++ b/src/crypto/evp/evp_extra_test.cc
@@ -540,3 +540,85 @@
                                sizeof(kExampleRSAKeyPKCS8)));
   ERR_clear_error();
 }
+
+TEST(EVPExtraTest, Ed25519) {
+  static const uint8_t kPublicKey[32] = {
+      0xd7, 0x5a, 0x98, 0x01, 0x82, 0xb1, 0x0a, 0xb7, 0xd5, 0x4b, 0xfe,
+      0xd3, 0xc9, 0x64, 0x07, 0x3a, 0x0e, 0xe1, 0x72, 0xf3, 0xda, 0xa6,
+      0x23, 0x25, 0xaf, 0x02, 0x1a, 0x68, 0xf7, 0x07, 0x51, 0x1a,
+  };
+
+  static const uint8_t kPublicKeySPKI[] = {
+      0x30, 0x2a, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x03, 0x21,
+      0x00, 0xd7, 0x5a, 0x98, 0x01, 0x82, 0xb1, 0x0a, 0xb7, 0xd5, 0x4b,
+      0xfe, 0xd3, 0xc9, 0x64, 0x07, 0x3a, 0x0e, 0xe1, 0x72, 0xf3, 0xda,
+      0xa6, 0x23, 0x25, 0xaf, 0x02, 0x1a, 0x68, 0xf7, 0x07, 0x51, 0x1a,
+  };
+
+  static const uint8_t kPrivateKey[64] = {
+      0x9d, 0x61, 0xb1, 0x9d, 0xef, 0xfd, 0x5a, 0x60, 0xba, 0x84, 0x4a,
+      0xf4, 0x92, 0xec, 0x2c, 0xc4, 0x44, 0x49, 0xc5, 0x69, 0x7b, 0x32,
+      0x69, 0x19, 0x70, 0x3b, 0xac, 0x03, 0x1c, 0xae, 0x7f, 0x60, 0xd7,
+      0x5a, 0x98, 0x01, 0x82, 0xb1, 0x0a, 0xb7, 0xd5, 0x4b, 0xfe, 0xd3,
+      0xc9, 0x64, 0x07, 0x3a, 0x0e, 0xe1, 0x72, 0xf3, 0xda, 0xa6, 0x23,
+      0x25, 0xaf, 0x02, 0x1a, 0x68, 0xf7, 0x07, 0x51, 0x1a,
+  };
+
+  static const uint8_t kPrivateKeyPKCS8[] = {
+      0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70,
+      0x04, 0x22, 0x04, 0x20, 0x9d, 0x61, 0xb1, 0x9d, 0xef, 0xfd, 0x5a, 0x60,
+      0xba, 0x84, 0x4a, 0xf4, 0x92, 0xec, 0x2c, 0xc4, 0x44, 0x49, 0xc5, 0x69,
+      0x7b, 0x32, 0x69, 0x19, 0x70, 0x3b, 0xac, 0x03, 0x1c, 0xae, 0x7f, 0x60,
+  };
+
+  // Create a public key.
+  bssl::UniquePtr<EVP_PKEY> pubkey(EVP_PKEY_new_ed25519_public(kPublicKey));
+  ASSERT_TRUE(pubkey);
+  EXPECT_EQ(EVP_PKEY_ED25519, EVP_PKEY_id(pubkey.get()));
+
+  // The public key must encode properly.
+  bssl::ScopedCBB cbb;
+  uint8_t *der;
+  size_t der_len;
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(EVP_marshal_public_key(cbb.get(), pubkey.get()));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &der, &der_len));
+  bssl::UniquePtr<uint8_t> free_der(der);
+  EXPECT_EQ(Bytes(kPublicKeySPKI), Bytes(der, der_len));
+
+  // The public key must gracefully fail to encode as a private key.
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  EXPECT_FALSE(EVP_marshal_private_key(cbb.get(), pubkey.get()));
+  uint32_t err = ERR_get_error();
+  EXPECT_EQ(ERR_LIB_EVP, ERR_GET_LIB(err));
+  EXPECT_EQ(EVP_R_NOT_A_PRIVATE_KEY, ERR_GET_REASON(err));
+  cbb.Reset();
+
+  // Create a private key.
+  bssl::UniquePtr<EVP_PKEY> privkey(EVP_PKEY_new_ed25519_private(kPrivateKey));
+  ASSERT_TRUE(privkey);
+  EXPECT_EQ(EVP_PKEY_ED25519, EVP_PKEY_id(privkey.get()));
+
+  // The public key must encode from the private key.
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(EVP_marshal_public_key(cbb.get(), privkey.get()));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &der, &der_len));
+  free_der.reset(der);
+  EXPECT_EQ(Bytes(kPublicKeySPKI), Bytes(der, der_len));
+
+  // The private key must encode properly.
+  ASSERT_TRUE(CBB_init(cbb.get(), 0));
+  ASSERT_TRUE(EVP_marshal_private_key(cbb.get(), privkey.get()));
+  ASSERT_TRUE(CBB_finish(cbb.get(), &der, &der_len));
+  free_der.reset(der);
+  EXPECT_EQ(Bytes(kPrivateKeyPKCS8), Bytes(der, der_len));
+
+  // Test EVP_PKEY_cmp.
+  EXPECT_TRUE(EVP_PKEY_cmp(pubkey.get(), privkey.get()));
+
+  static const uint8_t kZeros[32] = {0};
+  bssl::UniquePtr<EVP_PKEY> pubkey2(EVP_PKEY_new_ed25519_public(kZeros));
+  ASSERT_TRUE(pubkey2);
+  EXPECT_FALSE(EVP_PKEY_cmp(pubkey.get(), pubkey2.get()));
+  EXPECT_FALSE(EVP_PKEY_cmp(privkey.get(), pubkey2.get()));
+}
diff --git a/src/crypto/evp/evp_test.cc b/src/crypto/evp/evp_test.cc
index 6ca250e..baf41fe 100644
--- a/src/crypto/evp/evp_test.cc
+++ b/src/crypto/evp/evp_test.cc
@@ -110,6 +110,9 @@
   if (name == "DSA") {
     return EVP_PKEY_DSA;
   }
+  if (name == "Ed25519") {
+    return EVP_PKEY_ED25519;
+  }
   t->PrintLine("Unknown key type: '%s'", name.c_str());
   return EVP_PKEY_NONE;
 }
@@ -201,16 +204,24 @@
 
   int (*key_op_init)(EVP_PKEY_CTX *ctx);
   int (*key_op)(EVP_PKEY_CTX *ctx, uint8_t *out, size_t *out_len,
-                const uint8_t *in, size_t in_len);
+                const uint8_t *in, size_t in_len) = nullptr;
+  int (*verify_op)(EVP_PKEY_CTX * ctx, const uint8_t *sig, size_t sig_len,
+                   const uint8_t *in, size_t in_len) = nullptr;
   if (t->GetType() == "Decrypt") {
     key_op_init = EVP_PKEY_decrypt_init;
     key_op = EVP_PKEY_decrypt;
   } else if (t->GetType() == "Sign") {
     key_op_init = EVP_PKEY_sign_init;
     key_op = EVP_PKEY_sign;
+  } else if (t->GetType() == "SignMessage") {
+    key_op_init = EVP_PKEY_sign_init;
+    key_op = EVP_PKEY_sign_message;
   } else if (t->GetType() == "Verify") {
     key_op_init = EVP_PKEY_verify_init;
-    key_op = nullptr;  // EVP_PKEY_verify is handled differently.
+    verify_op = EVP_PKEY_verify;
+  } else if (t->GetType() == "VerifyMessage") {
+    key_op_init = EVP_PKEY_verify_init;
+    verify_op = EVP_PKEY_verify_message;
   } else {
     t->PrintLine("Unknown test '%s'", t->GetType().c_str());
     return false;
@@ -261,11 +272,11 @@
     }
   }
 
-  if (t->GetType() == "Verify") {
+  if (verify_op != nullptr) {
     std::vector<uint8_t> output;
     if (!t->GetBytes(&output, "Output") ||
-        !EVP_PKEY_verify(ctx.get(), output.data(), output.size(), input.data(),
-                         input.size())) {
+        !verify_op(ctx.get(), output.data(), output.size(), input.data(),
+                   input.size())) {
       // ECDSA sometimes doesn't push an error code. Push one on the error queue
       // so it's distinguishable from other errors.
       OPENSSL_PUT_ERROR(USER, ERR_R_EVP_LIB);
diff --git a/src/crypto/evp/evp_tests.txt b/src/crypto/evp/evp_tests.txt
index e70ebbc..9f69664 100644
--- a/src/crypto/evp/evp_tests.txt
+++ b/src/crypto/evp/evp_tests.txt
@@ -84,6 +84,36 @@
 Type = DSA
 Input = 308192300906072a8648ce38040103818400028180258c30ebbb7f34fdc873ce679f6cea373c7886d75d4421b90920db034daedd292c64d8edd8cdbdd7f3ad23d74cfa2135247d0cef6ecf2e14f99e19d22a8c1266bd8fb8719c0e5667c716c45c7adbdabe548085bdad2dfee636f8d52fd6adb2193df6c4f0520fbd171b91882e0e4f321f8250ffecf4dbea00e114427d3ef96c1a
 
+# An Ed25519 private key.
+PrivateKey = Ed25519
+Type = Ed25519
+Input = 302e020100300506032b6570042204209d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60
+
+# The same as the above, but with an invalid NULL parameter.
+PrivateKey = Ed25519-NULL
+Input = 3030020100300706032b65700500042204209d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60
+Error = DECODE_ERROR
+
+# The above key as an SPKI.
+PublicKey = Ed25519-SPKI
+Type = Ed25519
+Input = 302a300506032b6570032100d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a
+
+# The same as the above, but with an invalid NULL parameter.
+PublicKey = Ed25519-SPKI-NULL
+Input = 302c300706032b65700500032100d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a
+Error = DECODE_ERROR
+
+# Sample public key from draft-ietf-curdle-pkix-04.
+PublicKey = Ed25519-SPKI-Spec
+Type = Ed25519
+Input = 302a300506032b657003210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
+
+# Sample private key from draft-ietf-curdle-pkix-04.
+PrivateKey = Ed25519-Spec
+Type = Ed25519
+Input = 302e020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842
+
 
 # RSA tests
 
@@ -114,6 +144,12 @@
 Input = "0123456789ABCDEF12345"
 Error = INVALID_DIGEST_LENGTH
 
+# Digest too large for key.
+Sign = RSA-512
+Digest = SHA512
+Input = "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+Error = DIGEST_TOO_BIG_FOR_RSA_KEY
+
 # Mismatched digest
 Verify = RSA-2048
 Digest = SHA1
@@ -1272,3 +1308,80 @@
 MGF1Digest = SHA1
 Input = 2d207a73432a8fb4c03051b3f73b28a61764098dfa34c47a20995f8115aa6816679b557e82dbee584908c6e69782d7deb34dbd65af063d57fca76a5fd069492fd6068d9984d209350565a62e5c77f23038c12cb10c6634709b547c46f6b4a709bd85ca122d74465ef97762c29763e06dbc7a9e738c78bfca0102dc5e79d65b973f28240caab2e161a78b57d262457ed8195d53e3c7ae9da021883c6db7c24afdd2322eac972ad3c354c5fcef1e146c3a0290fb67adf007066e00428d2cec18ce58f9328698defef4b2eb5ec76918fde1c198cbb38b7afc67626a9aefec4322bfd90d2563481c9a221f78c8272c82d1b62ab914e1c69f6af6ef30ca5260db4a46
 Output = eaf1a73a1b0c4609537de69cd9228bbcfb9a8ca8c6c3efaf056fe4a7f4634ed00b7c39ec6922d7b8ea2c04ebac
+
+
+# Single-shot signing tests.
+
+SignMessage = RSA-2048
+Digest = SHA256
+Input = "Hello world"
+Output = 301894798b49d6ec55d32dcc74314f04230591a515781f3eb4492f5324b56046836c4bc3e25942af341e88558cb4c3814a849207575d343189147989b16e296b5138dbbc717116dc416f201dfa35943d15060493953cda1f04a13ff89845cf7fd69e1a78d5d38522a77bb234e5d0ba2ae17ada6e22fdae27a4052fdb8ac267507dfe06ed7a865e61a52b530bbbf65c7caa89739613df10ae3b0e62ff6831ee0770086aad39c329462aede9f1b29a501bc3d09e0fe4034aa5d6831d44491d508111d88a1d7ba50cee5ef7e701b3a589adc09a752a974a6805956f4a1a0582f66309a1e02e9fb6b10d2c820fe98bb2eb04f435bc8a649cc9ab6c5a4c03e83800d1
+
+VerifyMessage = RSA-2048
+Digest = SHA256
+Input = "Hello world"
+Output = 301894798b49d6ec55d32dcc74314f04230591a515781f3eb4492f5324b56046836c4bc3e25942af341e88558cb4c3814a849207575d343189147989b16e296b5138dbbc717116dc416f201dfa35943d15060493953cda1f04a13ff89845cf7fd69e1a78d5d38522a77bb234e5d0ba2ae17ada6e22fdae27a4052fdb8ac267507dfe06ed7a865e61a52b530bbbf65c7caa89739613df10ae3b0e62ff6831ee0770086aad39c329462aede9f1b29a501bc3d09e0fe4034aa5d6831d44491d508111d88a1d7ba50cee5ef7e701b3a589adc09a752a974a6805956f4a1a0582f66309a1e02e9fb6b10d2c820fe98bb2eb04f435bc8a649cc9ab6c5a4c03e83800d1
+
+VerifyMessage = RSA-2048-SPKI
+Digest = SHA256
+Input = "Hello world"
+Output = 301894798b49d6ec55d32dcc74314f04230591a515781f3eb4492f5324b56046836c4bc3e25942af341e88558cb4c3814a849207575d343189147989b16e296b5138dbbc717116dc416f201dfa35943d15060493953cda1f04a13ff89845cf7fd69e1a78d5d38522a77bb234e5d0ba2ae17ada6e22fdae27a4052fdb8ac267507dfe06ed7a865e61a52b530bbbf65c7caa89739613df10ae3b0e62ff6831ee0770086aad39c329462aede9f1b29a501bc3d09e0fe4034aa5d6831d44491d508111d88a1d7ba50cee5ef7e701b3a589adc09a752a974a6805956f4a1a0582f66309a1e02e9fb6b10d2c820fe98bb2eb04f435bc8a649cc9ab6c5a4c03e83800d1
+
+VerifyMessage = P-256
+Digest = SHA256
+Input = "Hello world"
+Output = 304502204c66004635c267394bd6857c1e0b53b22a2bab1ca7dff9d5c1b42143858b3ea7022100ae81228510e03cd49a8863d2ebd1c05fe0c87eacd1150433132b909994cd0dbd
+
+# Digest can't be omitted in many algorithms.
+SignMessage = RSA-2048
+Input = "Hello world"
+Error = NO_DEFAULT_DIGEST
+
+VerifyMessage = RSA-2048
+Input = "Hello world"
+Output = 301894798b49d6ec55d32dcc74314f04230591a515781f3eb4492f5324b56046836c4bc3e25942af341e88558cb4c3814a849207575d343189147989b16e296b5138dbbc717116dc416f201dfa35943d15060493953cda1f04a13ff89845cf7fd69e1a78d5d38522a77bb234e5d0ba2ae17ada6e22fdae27a4052fdb8ac267507dfe06ed7a865e61a52b530bbbf65c7caa89739613df10ae3b0e62ff6831ee0770086aad39c329462aede9f1b29a501bc3d09e0fe4034aa5d6831d44491d508111d88a1d7ba50cee5ef7e701b3a589adc09a752a974a6805956f4a1a0582f66309a1e02e9fb6b10d2c820fe98bb2eb04f435bc8a649cc9ab6c5a4c03e83800d1
+Error = NO_DEFAULT_DIGEST
+
+SignMessage = Ed25519
+Input = ""
+Output = e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b
+
+SignMessage = Ed25519-SPKI
+Input = ""
+Error = NOT_A_PRIVATE_KEY
+
+VerifyMessage = Ed25519
+Input = ""
+Output = e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b
+
+VerifyMessage = Ed25519-SPKI
+Input = ""
+Output = e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b
+
+# Length is wrong.
+VerifyMessage = Ed25519-SPKI
+Input = ""
+Output = e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a10
+Error = INVALID_SIGNATURE
+
+# Message is wrong.
+VerifyMessage = Ed25519-SPKI
+Input = "Hello world"
+Output = e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b
+Error = INVALID_SIGNATURE
+
+# Ed25519 does not support configuring a digest.
+SignMessage = Ed25519
+Input = ""
+Digest = SHA256
+Error = COMMAND_NOT_SUPPORTED
+
+# Ed25519 does not support signing a pre-hashed value.
+Sign = Ed25519
+Input = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
+Error = OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
+
+Verify = Ed25519
+Input = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
+Output = e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b
+Error = OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
diff --git a/src/crypto/evp/internal.h b/src/crypto/evp/internal.h
index cdbd56a..5e9aab0 100644
--- a/src/crypto/evp/internal.h
+++ b/src/crypto/evp/internal.h
@@ -164,7 +164,7 @@
 #define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 3)
 #define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 4)
 #define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 5)
-#define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP	(EVP_PKEY_ALG_CTRL + 6)
+#define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 6)
 #define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 7)
 #define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 8)
 #define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 9)
@@ -199,9 +199,15 @@
   int (*sign)(EVP_PKEY_CTX *ctx, uint8_t *sig, size_t *siglen,
               const uint8_t *tbs, size_t tbslen);
 
+  int (*sign_message)(EVP_PKEY_CTX *ctx, uint8_t *sig, size_t *siglen,
+                      const uint8_t *tbs, size_t tbslen);
+
   int (*verify)(EVP_PKEY_CTX *ctx, const uint8_t *sig, size_t siglen,
                 const uint8_t *tbs, size_t tbslen);
 
+  int (*verify_message)(EVP_PKEY_CTX *ctx, const uint8_t *sig, size_t siglen,
+                        const uint8_t *tbs, size_t tbslen);
+
   int (*verify_recover)(EVP_PKEY_CTX *ctx, uint8_t *out, size_t *out_len,
                         const uint8_t *sig, size_t sig_len);
 
@@ -216,12 +222,27 @@
   int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2);
 } /* EVP_PKEY_METHOD */;
 
+typedef struct {
+  union {
+    uint8_t priv[64];
+    struct {
+      /* Shift the location of the public key to align with where it is in the
+       * private key representation. */
+      uint8_t pad[32];
+      uint8_t value[32];
+    } pub;
+  } key;
+  char has_private;
+} ED25519_KEY;
+
 extern const EVP_PKEY_ASN1_METHOD dsa_asn1_meth;
 extern const EVP_PKEY_ASN1_METHOD ec_asn1_meth;
 extern const EVP_PKEY_ASN1_METHOD rsa_asn1_meth;
+extern const EVP_PKEY_ASN1_METHOD ed25519_asn1_meth;
 
 extern const EVP_PKEY_METHOD rsa_pkey_meth;
 extern const EVP_PKEY_METHOD ec_pkey_meth;
+extern const EVP_PKEY_METHOD ed25519_pkey_meth;
 
 
 #if defined(__cplusplus)
diff --git a/src/crypto/evp/p_ec.c b/src/crypto/evp/p_ec.c
index dc1ea6f..c5692e5 100644
--- a/src/crypto/evp/p_ec.c
+++ b/src/crypto/evp/p_ec.c
@@ -228,10 +228,12 @@
     pkey_ec_cleanup,
     pkey_ec_keygen,
     pkey_ec_sign,
+    NULL /* sign_message */,
     pkey_ec_verify,
-    0 /* verify_recover */,
-    0 /* encrypt */,
-    0 /* decrypt */,
+    NULL /* verify_message */,
+    NULL /* verify_recover */,
+    NULL /* encrypt */,
+    NULL /* decrypt */,
     pkey_ec_derive,
     pkey_ec_ctrl,
 };
diff --git a/src/crypto/evp/p_ed25519.c b/src/crypto/evp/p_ed25519.c
new file mode 100644
index 0000000..0722624
--- /dev/null
+++ b/src/crypto/evp/p_ed25519.c
@@ -0,0 +1,71 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/evp.h>
+
+#include <openssl/curve25519.h>
+#include <openssl/err.h>
+
+#include "internal.h"
+
+
+/* Ed25519 has no parameters to copy. */
+static int pkey_ed25519_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) { return 1; }
+
+static int pkey_ed25519_sign_message(EVP_PKEY_CTX *ctx, uint8_t *sig,
+                                     size_t *siglen, const uint8_t *tbs,
+                                     size_t tbslen) {
+  ED25519_KEY *key = ctx->pkey->pkey.ptr;
+  if (!key->has_private) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_NOT_A_PRIVATE_KEY);
+    return 0;
+  }
+
+  *siglen = 64;
+  if (sig == NULL) {
+    return 1;
+  }
+
+  return ED25519_sign(sig, tbs, tbslen, key->key.priv);
+}
+
+static int pkey_ed25519_verify_message(EVP_PKEY_CTX *ctx, const uint8_t *sig,
+                                       size_t siglen, const uint8_t *tbs,
+                                       size_t tbslen) {
+  ED25519_KEY *key = ctx->pkey->pkey.ptr;
+  if (siglen != 64 ||
+      !ED25519_verify(tbs, tbslen, sig, key->key.pub.value)) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_INVALID_SIGNATURE);
+    return 0;
+  }
+
+  return 1;
+}
+
+const EVP_PKEY_METHOD ed25519_pkey_meth = {
+    EVP_PKEY_ED25519,
+    NULL /* init */,
+    pkey_ed25519_copy,
+    NULL /* cleanup */,
+    NULL /* keygen */,
+    NULL /* sign */,
+    pkey_ed25519_sign_message,
+    NULL /* verify */,
+    pkey_ed25519_verify_message,
+    NULL /* verify_recover */,
+    NULL /* encrypt */,
+    NULL /* decrypt */,
+    NULL /* derive */,
+    NULL /* ctrl */,
+};
diff --git a/src/crypto/evp/p_ed25519_asn1.c b/src/crypto/evp/p_ed25519_asn1.c
new file mode 100644
index 0000000..8cb359e
--- /dev/null
+++ b/src/crypto/evp/p_ed25519_asn1.c
@@ -0,0 +1,194 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/evp.h>
+
+#include <openssl/bytestring.h>
+#include <openssl/curve25519.h>
+#include <openssl/err.h>
+#include <openssl/mem.h>
+
+#include "internal.h"
+#include "../internal.h"
+
+
+static void ed25519_free(EVP_PKEY *pkey) {
+  if (pkey->pkey.ptr != NULL) {
+    ED25519_KEY *key = pkey->pkey.ptr;
+    OPENSSL_cleanse(key, sizeof(ED25519_KEY));
+    OPENSSL_free(key);
+    pkey->pkey.ptr = NULL;
+  }
+}
+
+static int set_pubkey(EVP_PKEY *pkey, const uint8_t pubkey[32]) {
+  ED25519_KEY *key = OPENSSL_malloc(sizeof(ED25519_KEY));
+  if (key == NULL) {
+    OPENSSL_PUT_ERROR(EVP, ERR_R_MALLOC_FAILURE);
+    return 0;
+  }
+  key->has_private = 0;
+  OPENSSL_memcpy(key->key.pub.value, pubkey, 32);
+
+  ed25519_free(pkey);
+  pkey->pkey.ptr = key;
+  return 1;
+}
+
+static int set_privkey(EVP_PKEY *pkey, const uint8_t privkey[64]) {
+  ED25519_KEY *key = OPENSSL_malloc(sizeof(ED25519_KEY));
+  if (key == NULL) {
+    OPENSSL_PUT_ERROR(EVP, ERR_R_MALLOC_FAILURE);
+    return 0;
+  }
+  key->has_private = 1;
+  OPENSSL_memcpy(key->key.priv, privkey, 64);
+
+  ed25519_free(pkey);
+  pkey->pkey.ptr = key;
+  return 1;
+}
+
+static int ed25519_pub_decode(EVP_PKEY *out, CBS *params, CBS *key) {
+  /* See draft-ietf-curdle-pkix-04, section 4. */
+
+  /* The parameters must be omitted. Public keys have length 32. */
+  if (CBS_len(params) != 0 ||
+      CBS_len(key) != 32) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_DECODE_ERROR);
+    return 0;
+  }
+
+  return set_pubkey(out, CBS_data(key));
+}
+
+static int ed25519_pub_encode(CBB *out, const EVP_PKEY *pkey) {
+  const ED25519_KEY *key = pkey->pkey.ptr;
+
+  /* See draft-ietf-curdle-pkix-04, section 4. */
+  CBB spki, algorithm, oid, key_bitstring;
+  if (!CBB_add_asn1(out, &spki, CBS_ASN1_SEQUENCE) ||
+      !CBB_add_asn1(&spki, &algorithm, CBS_ASN1_SEQUENCE) ||
+      !CBB_add_asn1(&algorithm, &oid, CBS_ASN1_OBJECT) ||
+      !CBB_add_bytes(&oid, ed25519_asn1_meth.oid, ed25519_asn1_meth.oid_len) ||
+      !CBB_add_asn1(&spki, &key_bitstring, CBS_ASN1_BITSTRING) ||
+      !CBB_add_u8(&key_bitstring, 0 /* padding */) ||
+      !CBB_add_bytes(&key_bitstring, key->key.pub.value, 32) ||
+      !CBB_flush(out)) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_ENCODE_ERROR);
+    return 0;
+  }
+
+  return 1;
+}
+
+static int ed25519_pub_cmp(const EVP_PKEY *a, const EVP_PKEY *b) {
+  const ED25519_KEY *a_key = a->pkey.ptr;
+  const ED25519_KEY *b_key = b->pkey.ptr;
+  return OPENSSL_memcmp(a_key->key.pub.value, b_key->key.pub.value, 32) == 0;
+}
+
+static int ed25519_priv_decode(EVP_PKEY *out, CBS *params, CBS *key) {
+  /* See draft-ietf-curdle-pkix-04, section 7. */
+
+  /* Parameters must be empty. The key is a 32-byte value wrapped in an extra
+   * OCTET STRING layer. */
+  CBS inner;
+  if (CBS_len(params) != 0 ||
+      !CBS_get_asn1(key, &inner, CBS_ASN1_OCTETSTRING) ||
+      CBS_len(key) != 0 ||
+      CBS_len(&inner) != 32) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_DECODE_ERROR);
+    return 0;
+  }
+
+  /* The PKCS#8 encoding stores only the 32-byte seed, so we must recover the
+   * full representation which we use from it. */
+  uint8_t pubkey[32], privkey[64];
+  ED25519_keypair_from_seed(pubkey, privkey, CBS_data(&inner));
+  return set_privkey(out, privkey);
+}
+
+static int ed25519_priv_encode(CBB *out, const EVP_PKEY *pkey) {
+  ED25519_KEY *key = pkey->pkey.ptr;
+  if (!key->has_private) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_NOT_A_PRIVATE_KEY);
+    return 0;
+  }
+
+  /* See draft-ietf-curdle-pkix-04, section 7. */
+  CBB pkcs8, algorithm, oid, private_key, inner;
+  if (!CBB_add_asn1(out, &pkcs8, CBS_ASN1_SEQUENCE) ||
+      !CBB_add_asn1_uint64(&pkcs8, 0 /* version */) ||
+      !CBB_add_asn1(&pkcs8, &algorithm, CBS_ASN1_SEQUENCE) ||
+      !CBB_add_asn1(&algorithm, &oid, CBS_ASN1_OBJECT) ||
+      !CBB_add_bytes(&oid, ed25519_asn1_meth.oid, ed25519_asn1_meth.oid_len) ||
+      !CBB_add_asn1(&pkcs8, &private_key, CBS_ASN1_OCTETSTRING) ||
+      !CBB_add_asn1(&private_key, &inner, CBS_ASN1_OCTETSTRING) ||
+      /* The PKCS#8 encoding stores only the 32-byte seed which is the first 32
+       * bytes of the private key. */
+      !CBB_add_bytes(&inner, key->key.priv, 32) ||
+      !CBB_flush(out)) {
+    OPENSSL_PUT_ERROR(EVP, EVP_R_ENCODE_ERROR);
+    return 0;
+  }
+
+  return 1;
+}
+
+static int ed25519_size(const EVP_PKEY *pkey) { return 64; }
+
+static int ed25519_bits(const EVP_PKEY *pkey) { return 256; }
+
+const EVP_PKEY_ASN1_METHOD ed25519_asn1_meth = {
+    EVP_PKEY_ED25519,
+    {0x2b, 0x65, 0x70},
+    3,
+    ed25519_pub_decode,
+    ed25519_pub_encode,
+    ed25519_pub_cmp,
+    ed25519_priv_decode,
+    ed25519_priv_encode,
+    NULL /* pkey_opaque */,
+    ed25519_size,
+    ed25519_bits,
+    NULL /* param_missing */,
+    NULL /* param_copy */,
+    NULL /* param_cmp */,
+    ed25519_free,
+};
+
+EVP_PKEY *EVP_PKEY_new_ed25519_public(const uint8_t public_key[32]) {
+  EVP_PKEY *ret = EVP_PKEY_new();
+  if (ret == NULL ||
+      !EVP_PKEY_set_type(ret, EVP_PKEY_ED25519) ||
+      !set_pubkey(ret, public_key)) {
+    EVP_PKEY_free(ret);
+    return NULL;
+  }
+
+  return ret;
+}
+
+EVP_PKEY *EVP_PKEY_new_ed25519_private(const uint8_t private_key[64]) {
+  EVP_PKEY *ret = EVP_PKEY_new();
+  if (ret == NULL ||
+      !EVP_PKEY_set_type(ret, EVP_PKEY_ED25519) ||
+      !set_privkey(ret, private_key)) {
+    EVP_PKEY_free(ret);
+    return NULL;
+  }
+
+  return ret;
+}
diff --git a/src/crypto/evp/p_rsa.c b/src/crypto/evp/p_rsa.c
index 6b25fa2..3b674cd 100644
--- a/src/crypto/evp/p_rsa.c
+++ b/src/crypto/evp/p_rsa.c
@@ -583,7 +583,9 @@
     pkey_rsa_cleanup,
     pkey_rsa_keygen,
     pkey_rsa_sign,
+    NULL /* sign_message */,
     pkey_rsa_verify,
+    NULL /* verify_message */,
     pkey_rsa_verify_recover,
     pkey_rsa_encrypt,
     pkey_rsa_decrypt,
diff --git a/src/crypto/evp/pbkdf.c b/src/crypto/evp/pbkdf.c
index 1792cdc..daebb2d 100644
--- a/src/crypto/evp/pbkdf.c
+++ b/src/crypto/evp/pbkdf.c
@@ -65,83 +65,76 @@
 int PKCS5_PBKDF2_HMAC(const char *password, size_t password_len,
                       const uint8_t *salt, size_t salt_len, unsigned iterations,
                       const EVP_MD *digest, size_t key_len, uint8_t *out_key) {
-  uint8_t digest_tmp[EVP_MAX_MD_SIZE], *p, itmp[4];
-  size_t cplen, mdlen, tkeylen, k;
-  unsigned j;
+  /* See RFC 8018, section 5.2. */
+  int ret = 0;
+  size_t md_len = EVP_MD_size(digest);
   uint32_t i = 1;
-  HMAC_CTX hctx_tpl, hctx;
+  HMAC_CTX hctx;
+  HMAC_CTX_init(&hctx);
 
-  mdlen = EVP_MD_size(digest);
-  HMAC_CTX_init(&hctx_tpl);
-  p = out_key;
-  tkeylen = key_len;
-  if (!HMAC_Init_ex(&hctx_tpl, password, password_len, digest, NULL)) {
-    HMAC_CTX_cleanup(&hctx_tpl);
-    return 0;
+  if (!HMAC_Init_ex(&hctx, password, password_len, digest, NULL)) {
+    goto err;
   }
-  while (tkeylen) {
-    if (tkeylen > mdlen) {
-      cplen = mdlen;
-    } else {
-      cplen = tkeylen;
+
+  while (key_len > 0) {
+    size_t todo = md_len;
+    if (todo > key_len) {
+      todo = key_len;
     }
-    /* We are unlikely to ever use more than 256 blocks (5120 bits!)
-     * but just in case... */
-    itmp[0] = (uint8_t)((i >> 24) & 0xff);
-    itmp[1] = (uint8_t)((i >> 16) & 0xff);
-    itmp[2] = (uint8_t)((i >> 8) & 0xff);
-    itmp[3] = (uint8_t)(i & 0xff);
-    if (!HMAC_CTX_copy(&hctx, &hctx_tpl)) {
-      HMAC_CTX_cleanup(&hctx_tpl);
-      return 0;
-    }
-    if (!HMAC_Update(&hctx, salt, salt_len) ||
-        !HMAC_Update(&hctx, itmp, 4) ||
+
+    uint8_t i_buf[4];
+    i_buf[0] = (uint8_t)((i >> 24) & 0xff);
+    i_buf[1] = (uint8_t)((i >> 16) & 0xff);
+    i_buf[2] = (uint8_t)((i >> 8) & 0xff);
+    i_buf[3] = (uint8_t)(i & 0xff);
+
+    /* Compute U_1. */
+    uint8_t digest_tmp[EVP_MAX_MD_SIZE];
+    if (!HMAC_Init_ex(&hctx, NULL, 0, NULL, NULL) ||
+        !HMAC_Update(&hctx, salt, salt_len) ||
+        !HMAC_Update(&hctx, i_buf, 4) ||
         !HMAC_Final(&hctx, digest_tmp, NULL)) {
-      HMAC_CTX_cleanup(&hctx_tpl);
-      HMAC_CTX_cleanup(&hctx);
-      return 0;
+      goto err;
     }
-    HMAC_CTX_cleanup(&hctx);
-    OPENSSL_memcpy(p, digest_tmp, cplen);
-    for (j = 1; j < iterations; j++) {
-      if (!HMAC_CTX_copy(&hctx, &hctx_tpl)) {
-        HMAC_CTX_cleanup(&hctx_tpl);
-        return 0;
-      }
-      if (!HMAC_Update(&hctx, digest_tmp, mdlen) ||
+
+    OPENSSL_memcpy(out_key, digest_tmp, todo);
+    for (unsigned j = 1; j < iterations; j++) {
+      /* Compute the remaining U_* values and XOR. */
+      if (!HMAC_Init_ex(&hctx, NULL, 0, NULL, NULL) ||
+          !HMAC_Update(&hctx, digest_tmp, md_len) ||
           !HMAC_Final(&hctx, digest_tmp, NULL)) {
-        HMAC_CTX_cleanup(&hctx_tpl);
-        HMAC_CTX_cleanup(&hctx);
-        return 0;
+        goto err;
       }
-      HMAC_CTX_cleanup(&hctx);
-      for (k = 0; k < cplen; k++) {
-        p[k] ^= digest_tmp[k];
+      for (size_t k = 0; k < todo; k++) {
+        out_key[k] ^= digest_tmp[k];
       }
     }
-    tkeylen -= cplen;
+
+    key_len -= todo;
+    out_key += todo;
     i++;
-    p += cplen;
   }
-  HMAC_CTX_cleanup(&hctx_tpl);
 
-  // RFC 2898 describes iterations (c) as being a "positive integer", so a
-  // value of 0 is an error.
-  //
-  // Unfortunatley not all consumers of PKCS5_PBKDF2_HMAC() check their return
-  // value, expecting it to succeed and unconditonally using |out_key|.
-  // As a precaution for such callsites in external code, the old behavior
-  // of iterations < 1 being treated as iterations == 1 is preserved, but
-  // additionally an error result is returned.
-  //
-  // TODO(eroman): Figure out how to remove this compatibility hack, or change
-  // the default to something more sensible like 2048.
+  /* RFC 8018 describes iterations (c) as being a "positive integer", so a
+   * value of 0 is an error.
+   *
+   * Unfortunately not all consumers of PKCS5_PBKDF2_HMAC() check their return
+   * value, expecting it to succeed and unconditionally using |out_key|.  As a
+   * precaution for such callsites in external code, the old behavior of
+   * iterations < 1 being treated as iterations == 1 is preserved, but
+   * additionally an error result is returned.
+   *
+   * TODO(eroman): Figure out how to remove this compatibility hack, or change
+   * the default to something more sensible like 2048. */
   if (iterations == 0) {
-    return 0;
+    goto err;
   }
 
-  return 1;
+  ret = 1;
+
+err:
+  HMAC_CTX_cleanup(&hctx);
+  return ret;
 }
 
 int PKCS5_PBKDF2_HMAC_SHA1(const char *password, size_t password_len,
diff --git a/src/crypto/evp/print.c b/src/crypto/evp/print.c
index b2e3509..214ada2 100644
--- a/src/crypto/evp/print.c
+++ b/src/crypto/evp/print.c
@@ -150,17 +150,6 @@
     update_buflen(rsa->dmp1, &buf_len);
     update_buflen(rsa->dmq1, &buf_len);
     update_buflen(rsa->iqmp, &buf_len);
-
-    if (rsa->additional_primes != NULL) {
-      for (size_t i = 0;
-           i < sk_RSA_additional_prime_num(rsa->additional_primes); i++) {
-        const RSA_additional_prime *ap =
-            sk_RSA_additional_prime_value(rsa->additional_primes, i);
-        update_buflen(ap->prime, &buf_len);
-        update_buflen(ap->exp, &buf_len);
-        update_buflen(ap->coeff, &buf_len);
-      }
-    }
   }
 
   m = (uint8_t *)OPENSSL_malloc(buf_len + 10);
@@ -204,26 +193,6 @@
         !bn_print(out, "coefficient:", rsa->iqmp, m, off)) {
       goto err;
     }
-
-    if (rsa->additional_primes != NULL &&
-        sk_RSA_additional_prime_num(rsa->additional_primes) > 0) {
-      if (BIO_printf(out, "otherPrimeInfos:\n") <= 0) {
-        goto err;
-      }
-      for (size_t i = 0;
-           i < sk_RSA_additional_prime_num(rsa->additional_primes); i++) {
-        const RSA_additional_prime *ap =
-            sk_RSA_additional_prime_value(rsa->additional_primes, i);
-
-        if (BIO_printf(out, "otherPrimeInfo (prime %u):\n",
-                       (unsigned)(i + 3)) <= 0 ||
-            !bn_print(out, "prime:", ap->prime, m, off) ||
-            !bn_print(out, "exponent:", ap->exp, m, off) ||
-            !bn_print(out, "coeff:", ap->coeff, m, off)) {
-          goto err;
-        }
-      }
-    }
   }
   ret = 1;
 
diff --git a/src/crypto/ex_data.c b/src/crypto/ex_data.c
index 5286513..20b762e 100644
--- a/src/crypto/ex_data.c
+++ b/src/crypto/ex_data.c
@@ -239,6 +239,13 @@
     return 1;
   }
 
+  for (size_t i = 0; i < ex_data_class->num_reserved; i++) {
+    void *ptr = CRYPTO_get_ex_data(from, i);
+    if (!CRYPTO_set_ex_data(to, i, ptr)) {
+      return 0;
+    }
+  }
+
   STACK_OF(CRYPTO_EX_DATA_FUNCS) *func_pointers;
   if (!get_func_pointers(&func_pointers, ex_data_class)) {
     return 0;
@@ -252,7 +259,10 @@
       func_pointer->dup_func(to, from, &ptr, i + ex_data_class->num_reserved,
                              func_pointer->argl, func_pointer->argp);
     }
-    CRYPTO_set_ex_data(to, i + ex_data_class->num_reserved, ptr);
+    if (!CRYPTO_set_ex_data(to, i + ex_data_class->num_reserved, ptr)) {
+      sk_CRYPTO_EX_DATA_FUNCS_free(func_pointers);
+      return 0;
+    }
   }
 
   sk_CRYPTO_EX_DATA_FUNCS_free(func_pointers);
diff --git a/src/crypto/fipsmodule/CMakeLists.txt b/src/crypto/fipsmodule/CMakeLists.txt
new file mode 100644
index 0000000..4db44a9
--- /dev/null
+++ b/src/crypto/fipsmodule/CMakeLists.txt
@@ -0,0 +1,176 @@
+include_directories(../../include)
+
+if (${ARCH} STREQUAL "x86_64")
+  set(
+    BCM_ASM_SOURCES
+
+    md5-x86_64.${ASM_EXT}
+    sha1-x86_64.${ASM_EXT}
+    sha256-x86_64.${ASM_EXT}
+    sha512-x86_64.${ASM_EXT}
+    aes-x86_64.${ASM_EXT}
+    aesni-x86_64.${ASM_EXT}
+    bsaes-x86_64.${ASM_EXT}
+    vpaes-x86_64.${ASM_EXT}
+  )
+endif()
+
+if (${ARCH} STREQUAL "x86")
+  set(
+    BCM_ASM_SOURCES
+
+    md5-586.${ASM_EXT}
+    sha1-586.${ASM_EXT}
+    sha256-586.${ASM_EXT}
+    sha512-586.${ASM_EXT}
+    aes-586.${ASM_EXT}
+    vpaes-x86.${ASM_EXT}
+    aesni-x86.${ASM_EXT}
+  )
+endif()
+
+if (${ARCH} STREQUAL "arm")
+  set(
+    BCM_ASM_SOURCES
+
+    sha1-armv4-large.${ASM_EXT}
+    sha256-armv4.${ASM_EXT}
+    sha512-armv4.${ASM_EXT}
+    aes-armv4.${ASM_EXT}
+    bsaes-armv7.${ASM_EXT}
+    aesv8-armx.${ASM_EXT}
+  )
+endif()
+
+if (${ARCH} STREQUAL "aarch64")
+  set(
+    BCM_ASM_SOURCES
+
+    sha1-armv8.${ASM_EXT}
+    sha256-armv8.${ASM_EXT}
+    sha512-armv8.${ASM_EXT}
+    aesv8-armx.${ASM_EXT}
+  )
+endif()
+
+if (${ARCH} STREQUAL "ppc64le")
+  set(
+    AES_ARCH_SOURCES
+
+    aesp8-ppc.${ASM_EXT}
+  )
+endif()
+
+perlasm(aes-586.${ASM_EXT} aes/asm/aes-586.pl)
+perlasm(aes-armv4.${ASM_EXT} aes/asm/aes-armv4.pl)
+perlasm(aesni-x86_64.${ASM_EXT} aes/asm/aesni-x86_64.pl)
+perlasm(aesni-x86.${ASM_EXT} aes/asm/aesni-x86.pl)
+perlasm(aesp8-ppc.${ASM_EXT} aes/asm/aesp8-ppc.pl)
+perlasm(aesv8-armx.${ASM_EXT} aes/asm/aesv8-armx.pl)
+perlasm(aes-x86_64.${ASM_EXT} aes/asm/aes-x86_64.pl)
+perlasm(bsaes-armv7.${ASM_EXT} aes/asm/bsaes-armv7.pl)
+perlasm(bsaes-x86_64.${ASM_EXT} aes/asm/bsaes-x86_64.pl)
+perlasm(md5-586.${ASM_EXT} md5/asm/md5-586.pl)
+perlasm(md5-x86_64.${ASM_EXT} md5/asm/md5-x86_64.pl)
+perlasm(sha1-586.${ASM_EXT} sha/asm/sha1-586.pl)
+perlasm(sha1-armv4-large.${ASM_EXT} sha/asm/sha1-armv4-large.pl)
+perlasm(sha1-armv8.${ASM_EXT} sha/asm/sha1-armv8.pl)
+perlasm(sha1-x86_64.${ASM_EXT} sha/asm/sha1-x86_64.pl)
+perlasm(sha256-586.${ASM_EXT} sha/asm/sha256-586.pl)
+perlasm(sha256-armv4.${ASM_EXT} sha/asm/sha256-armv4.pl)
+perlasm(sha256-armv8.${ASM_EXT} sha/asm/sha512-armv8.pl)
+perlasm(sha256-x86_64.${ASM_EXT} sha/asm/sha512-x86_64.pl)
+perlasm(sha512-586.${ASM_EXT} sha/asm/sha512-586.pl)
+perlasm(sha512-armv4.${ASM_EXT} sha/asm/sha512-armv4.pl)
+perlasm(sha512-armv8.${ASM_EXT} sha/asm/sha512-armv8.pl)
+perlasm(sha512-x86_64.${ASM_EXT} sha/asm/sha512-x86_64.pl)
+perlasm(vpaes-x86_64.${ASM_EXT} aes/asm/vpaes-x86_64.pl)
+perlasm(vpaes-x86.${ASM_EXT} aes/asm/vpaes-x86.pl)
+
+if(FIPS)
+  add_library(
+    bcm_c_generated_asm
+
+    STATIC
+
+    bcm.c
+  )
+
+  SET_TARGET_PROPERTIES(bcm_c_generated_asm PROPERTIES COMPILE_OPTIONS "-S")
+  SET_TARGET_PROPERTIES(bcm_c_generated_asm PROPERTIES POSITION_INDEPENDENT_CODE ON)
+
+  function(JOIN VALUES GLUE OUTPUT)
+    string (REPLACE ";" "${GLUE}" _TMP_STR "${VALUES}")
+    set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
+  endfunction()
+
+  set(DELOCATE_AS_FLAG)
+  set(DELOCATE_AS_ARG)
+
+  if(NOT "${BCM_ASM_SOURCES}" STREQUAL "")
+    set(DELOCATE_AS_FLAG "-as")
+    JOIN("${BCM_ASM_SOURCES}" ",${CMAKE_CURRENT_BINARY_DIR}/" BCM_ASM_SOURCES_COMMA_SEP)
+    SET(DELOCATE_AS_ARG "${CMAKE_CURRENT_BINARY_DIR}/${BCM_ASM_SOURCES_COMMA_SEP}")
+  endif()
+
+  add_custom_command(
+    OUTPUT bcm-delocated.S
+    COMMAND ${GO_EXECUTABLE} run crypto/fipsmodule/delocate.go crypto/fipsmodule/ar.go crypto/fipsmodule/const.go -a $<TARGET_FILE:bcm_c_generated_asm> ${DELOCATE_AS_FLAG} ${DELOCATE_AS_ARG} -o ${CMAKE_CURRENT_BINARY_DIR}/bcm-delocated.S
+    DEPENDS bcm_c_generated_asm ${BCM_ASM_SOURCES} delocate.go ar.go const.go
+    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  )
+
+  add_library(
+    bcm_hashunset
+
+    STATIC
+
+    bcm-delocated.S
+  )
+
+  set_target_properties(bcm_hashunset PROPERTIES POSITION_INDEPENDENT_CODE ON)
+  set_target_properties(bcm_hashunset PROPERTIES LINKER_LANGUAGE C)
+
+  add_custom_command(
+    OUTPUT bcm.o
+    COMMAND ${GO_EXECUTABLE} run crypto/fipsmodule/inject-hash.go crypto/fipsmodule/ar.go crypto/fipsmodule/const.go -o ${CMAKE_CURRENT_BINARY_DIR}/bcm.o -in $<TARGET_FILE:bcm_hashunset>
+    DEPENDS bcm_hashunset inject-hash.go ar.go const.go
+    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  )
+
+  # The outputs of add_custom_command cannot be referenced outside of the
+  # CMakeLists.txt that defines it. Thus we have to wrap bcm.o in a custom target
+  # so that crypto can depend on it.
+  add_custom_target(bcm_o_target DEPENDS bcm.o)
+
+  add_library(
+    fipsmodule
+
+    OBJECT
+
+    is_fips.c
+  )
+
+  set_target_properties(fipsmodule PROPERTIES LINKER_LANGUAGE C)
+else()
+  add_library(
+    fipsmodule
+
+    OBJECT
+
+    bcm.c
+    is_fips.c
+
+    ${BCM_ASM_SOURCES}
+  )
+endif()
+
+add_executable(
+  aes_test
+
+  aes/aes_test.cc
+  $<TARGET_OBJECTS:test_support>
+)
+
+target_link_libraries(aes_test crypto)
+add_dependencies(all_tests aes_test)
diff --git a/src/crypto/fipsmodule/FIPS.md b/src/crypto/fipsmodule/FIPS.md
new file mode 100644
index 0000000..06ef9fb
--- /dev/null
+++ b/src/crypto/fipsmodule/FIPS.md
@@ -0,0 +1,75 @@
+## Integrity Test
+
+FIPS-140 mandates that a module calculate an HMAC of its own code in a constructor function and compare the result to a known-good value. Typical code produced by a C compiler includes large numbers of relocations: places in the machine code where the linker needs to resolve and inject the final value of a symbolic expression. These relocations mean that the bytes that make up any specific bit of code generally aren't known until the final link has completed.
+
+Additionally, because of shared libraries and ASLR, some relocations can only be resolved at run-time, and thus targets of those relocations vary even after the final link.
+
+BoringSSL is linked (often statically) into a large number of binaries. It would be a significant cost if each of these binaries had to be post-processed in order to calculate the known-good HMAC value. We would much prefer if the value could be calculated, once, when BoringSSL itself is compiled.
+
+In order for the value to be calculated before the final link, there can be no relocations in the hashed code and data. This document describes how we build C and assembly code in order to produce an object file containing all the code and data for the FIPS module without that code having any relocations.
+
+First, all the C source files for the module are compiled as a single unit by compiling a single source file that `#include`s them all (this is `bcm.c`). The `-fPIC` flag is used to cause the compiler to use IP-relative addressing in many (but not all) cases. Also the `-S` flag is used to instruct the compiler to produce a textual assembly file rather than a binary object file.
+
+The textual assembly file is then processed by a script to merge in assembly implementations of some primitives and to eliminate the remaining sources of relocations.
+
+##### Redirector functions
+
+The most obvious cause of relocations are out-calls from the module to non-cryptographic functions outside of the module. Most obviously these include `malloc`, `memcpy` and other libc functions, but also include calls to support code in BoringSSL such as functions for managing the error queue.
+
+Offsets to these functions cannot be known until the final link because only the linker sees the object files containing them. Thus calls to these functions are rewritten into an IP-relative jump to a redirector function. The redirector functions contain a single jump instruction to the real function and are placed outside of the module and are thus not hashed (see diagram).
+
+![module structure](/crypto/fipsmodule/intcheck1.png)
+
+In this diagram, the integrity check hashes from `module_start` to `module_end`. Since this does not cover the jump to `memcpy`, it's fine that the linker will poke the final offset into that instruction.
+
+##### Read-only data
+
+Normally read-only data is placed in a `.data` segment that doesn't get mapped into memory with execute permissions. However, the offset of the data segment from the text segment is another thing that isn't determined until the final link. In order to fix data offsets before the link, read-only data is simply placed in the module's `.text` segment. This might make building ROP chains easier for an attacker, but so it goes.
+
+One special case is `rel.ro` data, which is data that contains function pointers. Since these function pointers are absolute, they are written by the dynamic linker at run-time and so we must eliminate them. The pattern that causes them is when we have a static `EVP_MD` or `EVP_CIPHER` object thus, inside the module, we'll change this pattern to instead to reserve space in the BSS for the object, and add a `CRYPTO_once_t` to protect its initialisation. The script will generate functions outside of the module that return pointers to these areas of memory—they effectively act like a special-purpose malloc calls that cannot fail.
+
+##### Read-write data
+
+Mutable data is a problem. It cannot be in the text segment because the text segment is mapped read-only. If it's in a different segment then the code cannot reference it with a known, IP-relative offset because the segment layout is only fixed during the final link.
+
+Thankfully, mutable data is very rare in our cryptographic code and I hope that we can get it down to just a few variables. In order to allow this we use a similar design to the redirector functions: the code references a symbol that's in the text segment, but out of the module and thus not hashed. A relocation record is emitted to instruct the linker to poke the final offset to the variable in that location. Thus the only change needed is an extra indirection when loading the value.
+
+##### Other transforms
+
+The script performs a number of other transformations which are worth noting but do not warrant their own sections:
+
+1.  It duplicates each global symbol with a local symbol that has `_local_target` appended to the name. References to the global symbols are rewritten to use these duplicates instead. Otherwise, although the generated code uses IP-relative references, relocations are emitted for global symbols in case they are overridden by a different object file during the link.
+1.  Various sections, notably `.rodata`, are moved to the `.text` section, inside the module, so module code may reference it without relocations.
+1.  For each BSS symbol, it generates a function named after that symbol but with `_bss_get` appended, which returns its address.
+1.  It inserts the labels that delimit the module's code and data (called `module_start` and `module_end` in the diagram above).
+1.  It adds a 32-byte, read-only array outside of the module to contain the known-good HMAC value.
+1.  It rewrites some "dummy" references to point to those labels and that array. In order to get the C compiler to emit the correct code it's necessary to make it think that it's referencing static functions. This compensates for that trick.
+
+##### Integrity testing
+
+In order to actually implement the integrity test, a constructor function within the module calculates an HMAC from `module_start` to `module_end` using a fixed, all-zero key. It compares the result with the known-good value added (by the script) to the unhashed portion of the text segment. If they don't match, it calls `exit` in an infinite loop.
+
+Initially the known-good value will be incorrect. Another script (`inject-hash.go`) calculates the correct value from the assembled object and injects it back into the object.
+
+![build process](/crypto/fipsmodule/intcheck2.png)
+
+### Comparison with OpenSSL's method
+
+(This is based on reading OpenSSL's [user guide](https://www.openssl.org/docs/fips/UserGuide-2.0.pdf) and inspecting the code of OpenSSL FIPS 2.0.12.)
+
+OpenSSL's solution to this problem is broadly similar but has a number of differences:
+
+1.  OpenSSL deals with run-time relocations by not hashing parts of the module's data. BoringSSL will eliminate run-time relocations instead and hash everything.
+1.  OpenSSL uses `ld -r` (the partial linking mode) to merge a number of object files into their `fipscanister.o`. For BoringSSL, we propose to merge all the C source files by building a single C file that #includes all the others, then we propose to merge the assembly sources by concatenating them to the assembly output from the C compiler.
+1.  OpenSSL depends on the link order and inserts two object files, `fips_start.o` and `fips_end.o`, in order to establish the `module_start` and `module_end` values. BoringSSL proposes to simply add labels at the correct places in the assembly.
+1.  OpenSSL calculates the hash after the final link and either injects it into the binary or recompiles with the value of the hash passed in as a #define. BoringSSL calculates it prior to the final link and injects it into the object file.
+1.  OpenSSL references read-write data directly, since it can know the offsets to it. BoringSSL indirects these loads and stores.
+1.  OpenSSL doesn't run the power-on test until `FIPS_module_mode_set` is called, BoringSSL plans to do it in a constructor function. Failure of the test is non-fatal in OpenSSL, BoringSSL plans to crash.
+1.  Since the contents of OpenSSL's module change between compilation and use, OpenSSL generates `fipscanister.o.sha1` to check that the compiled object doesn't change before linking. Since BoringSSL's module is fixed after compilation, the final integrity check is unbroken through the linking process.
+
+Some of the similarities are worth noting:
+
+1.  OpenSSL has all out-calls from the module indirecting via the PLT, which is equivalent to the redirector functions described above.
+
+
+![OpenSSL build process](/crypto/fipsmodule/intcheck3.png)
diff --git a/src/crypto/aes/aes.c b/src/crypto/fipsmodule/aes/aes.c
similarity index 99%
rename from src/crypto/aes/aes.c
rename to src/crypto/fipsmodule/aes/aes.c
index 1aed63e..cd53a46 100644
--- a/src/crypto/aes/aes.c
+++ b/src/crypto/fipsmodule/aes/aes.c
@@ -53,7 +53,7 @@
 
 #include <openssl/cpu.h>
 
-#include "internal.h"
+#include "../../modes/internal.h"
 
 
 #if defined(OPENSSL_NO_ASM) || \
diff --git a/src/crypto/aes/aes_test.cc b/src/crypto/fipsmodule/aes/aes_test.cc
similarity index 98%
rename from src/crypto/aes/aes_test.cc
rename to src/crypto/fipsmodule/aes/aes_test.cc
index cdf03d3..e1e9ca6 100644
--- a/src/crypto/aes/aes_test.cc
+++ b/src/crypto/fipsmodule/aes/aes_test.cc
@@ -21,8 +21,8 @@
 #include <openssl/aes.h>
 #include <openssl/crypto.h>
 
-#include "../internal.h"
-#include "../test/file_test.h"
+#include "../../internal.h"
+#include "../../test/file_test.h"
 
 
 static bool TestRaw(FileTest *t) {
diff --git a/src/crypto/aes/aes_tests.txt b/src/crypto/fipsmodule/aes/aes_tests.txt
similarity index 100%
rename from src/crypto/aes/aes_tests.txt
rename to src/crypto/fipsmodule/aes/aes_tests.txt
diff --git a/src/crypto/aes/asm/aes-586.pl b/src/crypto/fipsmodule/aes/asm/aes-586.pl
similarity index 99%
rename from src/crypto/aes/asm/aes-586.pl
rename to src/crypto/fipsmodule/aes/asm/aes-586.pl
index 45c19fb..a2c6eb5 100755
--- a/src/crypto/aes/asm/aes-586.pl
+++ b/src/crypto/fipsmodule/aes/asm/aes-586.pl
@@ -188,7 +188,7 @@
 # window, which is actually *less* than RDTSC latency on Intel P4!
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
-push(@INC,"${dir}","${dir}../../perlasm");
+push(@INC,"${dir}","${dir}../../../perlasm");
 require "x86asm.pl";
 
 $output = pop;
diff --git a/src/crypto/aes/asm/aes-armv4.pl b/src/crypto/fipsmodule/aes/asm/aes-armv4.pl
similarity index 99%
rename from src/crypto/aes/asm/aes-armv4.pl
rename to src/crypto/fipsmodule/aes/asm/aes-armv4.pl
index 5e1e117..562faab 100644
--- a/src/crypto/aes/asm/aes-armv4.pl
+++ b/src/crypto/fipsmodule/aes/asm/aes-armv4.pl
@@ -39,7 +39,7 @@
 if ($flavour && $flavour ne "void") {
     $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
     ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
-    ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+    ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or
     die "can't locate arm-xlate.pl";
 
     open STDOUT,"| \"$^X\" $xlate $flavour $output";
diff --git a/src/crypto/aes/asm/aes-x86_64.pl b/src/crypto/fipsmodule/aes/asm/aes-x86_64.pl
similarity index 99%
rename from src/crypto/aes/asm/aes-x86_64.pl
rename to src/crypto/fipsmodule/aes/asm/aes-x86_64.pl
index abf957c..362c1c9 100755
--- a/src/crypto/aes/asm/aes-x86_64.pl
+++ b/src/crypto/fipsmodule/aes/asm/aes-x86_64.pl
@@ -34,7 +34,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or
 die "can't locate x86_64-xlate.pl";
 
 open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\"";
@@ -1642,7 +1642,7 @@
 .align	16
 .globl	asm_AES_cbc_encrypt
 .type	asm_AES_cbc_encrypt,\@function,6
-.extern	OPENSSL_ia32cap_P
+.extern	OPENSSL_ia32cap_addr
 .hidden	asm_AES_cbc_encrypt
 asm_AES_cbc_encrypt:
 	cmp	\$0,%rdx	# check length
@@ -1664,7 +1664,8 @@
 	cmp	\$0,%r9
 	cmoveq	%r10,$sbox
 
-	mov	OPENSSL_ia32cap_P(%rip),%r10d
+	mov	OPENSSL_ia32cap_addr(%rip),%r10
+	mov	(%r10), %r10d
 	cmp	\$$speed_limit,%rdx
 	jb	.Lcbc_slow_prologue
 	test	\$15,%rdx
diff --git a/src/crypto/aes/asm/aesni-x86.pl b/src/crypto/fipsmodule/aes/asm/aesni-x86.pl
similarity index 99%
rename from src/crypto/aes/asm/aesni-x86.pl
rename to src/crypto/fipsmodule/aes/asm/aesni-x86.pl
index e494dd1..66af51b 100644
--- a/src/crypto/aes/asm/aesni-x86.pl
+++ b/src/crypto/fipsmodule/aes/asm/aesni-x86.pl
@@ -62,7 +62,7 @@
 $inline=1;		# inline _aesni_[en|de]crypt
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
-push(@INC,"${dir}","${dir}../../perlasm");
+push(@INC,"${dir}","${dir}../../../perlasm");
 require "x86asm.pl";
 
 $output = pop;
diff --git a/src/crypto/aes/asm/aesni-x86_64.pl b/src/crypto/fipsmodule/aes/asm/aesni-x86_64.pl
similarity index 99%
rename from src/crypto/aes/asm/aesni-x86_64.pl
rename to src/crypto/fipsmodule/aes/asm/aesni-x86_64.pl
index 8ae6dbf..5810980 100644
--- a/src/crypto/aes/asm/aesni-x86_64.pl
+++ b/src/crypto/fipsmodule/aes/asm/aesni-x86_64.pl
@@ -198,7 +198,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or
 die "can't locate x86_64-xlate.pl";
 
 open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\"";
@@ -209,7 +209,7 @@
 		("%rdi","%rsi","%rdx","%rcx");	# Unix order
 
 $code=".text\n";
-$code.=".extern	OPENSSL_ia32cap_P\n";
+$code.=".extern	OPENSSL_ia32cap_addr\n";
 
 $rounds="%eax";	# input to and changed by aesni_[en|de]cryptN !!!
 # this is natural Unix argument order for public $PREFIX_[ecb|cbc]_encrypt ...
@@ -1271,7 +1271,8 @@
 	lea	7($ctr),%r9
 	 mov	%r10d,0x60+12(%rsp)
 	bswap	%r9d
-	 mov	OPENSSL_ia32cap_P+4(%rip),%r10d
+	movq	OPENSSL_ia32cap_addr(%rip),%r10
+	 mov	4(%r10),%r10d
 	xor	$key0,%r9d
 	 and	\$`1<<26|1<<22`,%r10d		# isolate XSAVE+MOVBE
 	mov	%r9d,0x70+12(%rsp)
@@ -3771,7 +3772,8 @@
 	movdqa	$inout3,$in3
 	movdqu	0x50($inp),$inout5
 	movdqa	$inout4,$in4
-	mov	OPENSSL_ia32cap_P+4(%rip),%r9d
+	movq	OPENSSL_ia32cap_addr(%rip),%r9
+	mov	4(%r9),%r9d
 	cmp	\$0x70,$len
 	jbe	.Lcbc_dec_six_or_seven
 
@@ -4274,10 +4276,11 @@
 	test	$key,$key
 	jz	.Lenc_key_ret
 
-	mov	\$`1<<28|1<<11`,%r10d	# AVX and XOP bits
 	movups	($inp),%xmm0		# pull first 128 bits of *userKey
 	xorps	%xmm4,%xmm4		# low dword of xmm4 is assumed 0
-	and	OPENSSL_ia32cap_P+4(%rip),%r10d
+	movq	OPENSSL_ia32cap_addr(%rip),%r10
+	movl	4(%r10),%r10d
+	and	\$`1<<28|1<<11`,%r10d	# AVX and XOP bits
 	lea	16($key),%rax		# %rax is used as modifiable copy of $key
 	cmp	\$256,$bits
 	je	.L14rounds
diff --git a/src/crypto/aes/asm/aesp8-ppc.pl b/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
similarity index 99%
rename from src/crypto/aes/asm/aesp8-ppc.pl
rename to src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
index ca3a150..fb76d28 100644
--- a/src/crypto/aes/asm/aesp8-ppc.pl
+++ b/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
@@ -65,7 +65,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/ppc-xlate.pl" and -f $xlate) or
 die "can't locate ppc-xlate.pl";
 
 open STDOUT,"| $^X $xlate $flavour ".shift || die "can't call $xlate: $!";
diff --git a/src/crypto/aes/asm/aesv8-armx.pl b/src/crypto/fipsmodule/aes/asm/aesv8-armx.pl
similarity index 99%
rename from src/crypto/aes/asm/aesv8-armx.pl
rename to src/crypto/fipsmodule/aes/asm/aesv8-armx.pl
index 23ed77c..325bdeb 100644
--- a/src/crypto/aes/asm/aesv8-armx.pl
+++ b/src/crypto/fipsmodule/aes/asm/aesv8-armx.pl
@@ -36,7 +36,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or
 die "can't locate arm-xlate.pl";
 
 open OUT,"| \"$^X\" $xlate $flavour $output";
diff --git a/src/crypto/aes/asm/bsaes-armv7.pl b/src/crypto/fipsmodule/aes/asm/bsaes-armv7.pl
similarity index 99%
rename from src/crypto/aes/asm/bsaes-armv7.pl
rename to src/crypto/fipsmodule/aes/asm/bsaes-armv7.pl
index 92f5ece..895a269 100644
--- a/src/crypto/aes/asm/bsaes-armv7.pl
+++ b/src/crypto/fipsmodule/aes/asm/bsaes-armv7.pl
@@ -61,7 +61,7 @@
 if ($flavour && $flavour ne "void") {
     $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
     ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
-    ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+    ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or
     die "can't locate arm-xlate.pl";
 
     open STDOUT,"| \"$^X\" $xlate $flavour $output";
diff --git a/src/crypto/aes/asm/bsaes-x86_64.pl b/src/crypto/fipsmodule/aes/asm/bsaes-x86_64.pl
similarity index 99%
rename from src/crypto/aes/asm/bsaes-x86_64.pl
rename to src/crypto/fipsmodule/aes/asm/bsaes-x86_64.pl
index 9a8055e..8d9ee6b 100644
--- a/src/crypto/aes/asm/bsaes-x86_64.pl
+++ b/src/crypto/fipsmodule/aes/asm/bsaes-x86_64.pl
@@ -98,7 +98,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or
 die "can't locate x86_64-xlate.pl";
 
 open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\"";
diff --git a/src/crypto/aes/asm/vpaes-x86.pl b/src/crypto/fipsmodule/aes/asm/vpaes-x86.pl
similarity index 99%
rename from src/crypto/aes/asm/vpaes-x86.pl
rename to src/crypto/fipsmodule/aes/asm/vpaes-x86.pl
index ebf90e7..58b90a3 100644
--- a/src/crypto/aes/asm/vpaes-x86.pl
+++ b/src/crypto/fipsmodule/aes/asm/vpaes-x86.pl
@@ -48,7 +48,7 @@
 #						<appro@openssl.org>
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
-push(@INC,"${dir}","${dir}../../perlasm");
+push(@INC,"${dir}","${dir}../../../perlasm");
 require "x86asm.pl";
 
 $output = pop;
diff --git a/src/crypto/aes/asm/vpaes-x86_64.pl b/src/crypto/fipsmodule/aes/asm/vpaes-x86_64.pl
similarity index 99%
rename from src/crypto/aes/asm/vpaes-x86_64.pl
rename to src/crypto/fipsmodule/aes/asm/vpaes-x86_64.pl
index 7a24e0d..eb4c724 100644
--- a/src/crypto/aes/asm/vpaes-x86_64.pl
+++ b/src/crypto/fipsmodule/aes/asm/vpaes-x86_64.pl
@@ -55,7 +55,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or
 die "can't locate x86_64-xlate.pl";
 
 open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\"";
diff --git a/src/crypto/aes/key_wrap.c b/src/crypto/fipsmodule/aes/key_wrap.c
similarity index 99%
rename from src/crypto/aes/key_wrap.c
rename to src/crypto/fipsmodule/aes/key_wrap.c
index 23553b7..73de17f 100644
--- a/src/crypto/aes/key_wrap.c
+++ b/src/crypto/fipsmodule/aes/key_wrap.c
@@ -53,7 +53,7 @@
 
 #include <openssl/mem.h>
 
-#include "../internal.h"
+#include "../../internal.h"
 
 
 /* kDefaultIV is the default IV value given in RFC 3394, 2.2.3.1. */
diff --git a/src/crypto/aes/mode_wrappers.c b/src/crypto/fipsmodule/aes/mode_wrappers.c
similarity index 98%
rename from src/crypto/aes/mode_wrappers.c
rename to src/crypto/fipsmodule/aes/mode_wrappers.c
index 4929920..81e77a4 100644
--- a/src/crypto/aes/mode_wrappers.c
+++ b/src/crypto/fipsmodule/aes/mode_wrappers.c
@@ -50,7 +50,7 @@
 
 #include <assert.h>
 
-#include "../modes/internal.h"
+#include "../../modes/internal.h"
 
 
 void AES_ctr128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
diff --git a/src/crypto/fipsmodule/ar.go b/src/crypto/fipsmodule/ar.go
new file mode 100644
index 0000000..51e7aa5
--- /dev/null
+++ b/src/crypto/fipsmodule/ar.go
@@ -0,0 +1,120 @@
+// Copyright (c) 2017, Google Inc.
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+// ar.go contains functions for parsing .a archive files.
+
+package main
+
+import (
+	"bytes"
+	"errors"
+	"io"
+	"strconv"
+	"strings"
+)
+
+// ParseAR parses an archive file from r and returns a map from filename to
+// contents, or else an error.
+func ParseAR(r io.Reader) (map[string][]byte, error) {
+	// See https://en.wikipedia.org/wiki/Ar_(Unix)#File_format_details
+	const expectedMagic = "!<arch>\n"
+	var magic [len(expectedMagic)]byte
+	if _, err := io.ReadFull(r, magic[:]); err != nil {
+		return nil, err
+	}
+	if string(magic[:]) != expectedMagic {
+		return nil, errors.New("ar: not an archive file")
+	}
+
+	const filenameTableName = "//"
+	const symbolTableName = "/"
+	var longFilenameTable []byte
+	ret := make(map[string][]byte)
+
+	for {
+		var header [60]byte
+		if _, err := io.ReadFull(r, header[:]); err != nil {
+			if err == io.EOF {
+				break
+			}
+			return nil, errors.New("ar: error reading file header: " + err.Error())
+		}
+
+		name := strings.TrimRight(string(header[:16]), " ")
+		sizeStr := strings.TrimRight(string(header[48:58]), "\x00 ")
+		size, err := strconv.ParseUint(sizeStr, 10, 64)
+		if err != nil {
+			return nil, errors.New("ar: failed to parse file size: " + err.Error())
+		}
+
+		// File contents are padded to a multiple of two bytes
+		storedSize := size
+		if storedSize%2 == 1 {
+			storedSize++
+		}
+
+		contents := make([]byte, storedSize)
+		if _, err := io.ReadFull(r, contents); err != nil {
+			return nil, errors.New("ar: error reading file contents: " + err.Error())
+		}
+		contents = contents[:size]
+
+		switch {
+		case name == filenameTableName:
+			if longFilenameTable != nil {
+				return nil, errors.New("ar: two filename tables found")
+			}
+			longFilenameTable = contents
+			continue
+
+		case name == symbolTableName:
+			continue
+
+		case len(name) > 1 && name[0] == '/':
+			if longFilenameTable == nil {
+				return nil, errors.New("ar: long filename reference found before filename table")
+			}
+
+			// A long filename is stored as "/" followed by a
+			// base-10 offset in the filename table.
+			offset, err := strconv.ParseUint(name[1:], 10, 64)
+			if err != nil {
+				return nil, errors.New("ar: failed to parse filename offset: " + err.Error())
+			}
+			if offset > uint64((^uint(0))>>1) {
+				return nil, errors.New("ar: filename offset overflow")
+			}
+
+			if int(offset) > len(longFilenameTable) {
+				return nil, errors.New("ar: filename offset out of bounds")
+			}
+
+			filename := longFilenameTable[offset:]
+			if i := bytes.IndexByte(filename, '/'); i < 0 {
+				return nil, errors.New("ar: unterminated filename in table")
+			} else {
+				filename = filename[:i]
+			}
+
+			name = string(filename)
+
+		default:
+			name = strings.TrimRight(name, "/")
+		}
+
+		ret[name] = contents
+	}
+
+	return ret, nil
+}
diff --git a/src/crypto/fipsmodule/bcm.c b/src/crypto/fipsmodule/bcm.c
new file mode 100644
index 0000000..8a05ea2
--- /dev/null
+++ b/src/crypto/fipsmodule/bcm.c
@@ -0,0 +1,97 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/base.h>
+#include <openssl/crypto.h>
+#include <openssl/hmac.h>
+
+#include "../internal.h"
+
+#include "aes/aes.c"
+#include "aes/key_wrap.c"
+#include "aes/mode_wrappers.c"
+#include "digest/digest.c"
+#include "digest/digests.c"
+#include "hmac/hmac.c"
+#include "md4/md4.c"
+#include "md5/md5.c"
+#include "sha/sha1-altivec.c"
+#include "sha/sha1.c"
+#include "sha/sha256.c"
+#include "sha/sha512.c"
+
+
+#if defined(BORINGSSL_FIPS)
+static void hexdump(const uint8_t *in, size_t len) {
+  for (size_t i = 0; i < len; i++) {
+    printf("%02x", in[i]);
+  }
+}
+
+/* These functions are removed by delocate.go and references to them are
+ * rewritten to point to the start and end of the module, and the location of
+ * the integrity hash. */
+static void BORINGSSL_bcm_text_dummy_start(void) {}
+static void BORINGSSL_bcm_text_dummy_end(void) {}
+static void BORINGSSL_bcm_text_dummy_hash(void) {}
+
+static void BORINGSSL_bcm_power_on_self_test(void) __attribute__((constructor));
+
+static void BORINGSSL_bcm_power_on_self_test(void) {
+  CRYPTO_library_init();
+
+#if defined(__has_feature)
+#if __has_feature(address_sanitizer)
+  /* Power-on tests cannot run under ASAN because it involves reading the full
+   * .text section, which triggers the global-buffer overflow detection. */
+  return;
+#endif
+#endif
+
+  const uint8_t *const start = (const uint8_t *)BORINGSSL_bcm_text_dummy_start;
+  const uint8_t *const end = (const uint8_t *)BORINGSSL_bcm_text_dummy_end;
+
+  static const uint8_t kHMACKey[32] = {0};
+  uint8_t result[SHA256_DIGEST_LENGTH];
+
+  unsigned result_len;
+  if (!HMAC(EVP_sha256(), kHMACKey, sizeof(kHMACKey), start, end - start,
+            result, &result_len) ||
+      result_len != sizeof(result)) {
+    goto err;
+  }
+
+  const uint8_t *const expected =
+      (const uint8_t *)BORINGSSL_bcm_text_dummy_hash;
+
+  if (OPENSSL_memcmp(expected, result, sizeof(result)) != 0) {
+    printf("FIPS integrity test failed.\nExpected: ");
+    hexdump(expected, sizeof(result));
+    printf("\nCalculated: ");
+    hexdump(result, sizeof(result));
+    printf("\n");
+    goto err;
+  }
+
+  // TODO(fips): KAT tests go here.
+
+  return;
+
+err:
+  for (;;) {
+    exit(1);
+    abort();
+  }
+}
+#endif  /* BORINGSSL_FIPS */
diff --git a/src/crypto/fipsmodule/const.go b/src/crypto/fipsmodule/const.go
new file mode 100644
index 0000000..aec10c7
--- /dev/null
+++ b/src/crypto/fipsmodule/const.go
@@ -0,0 +1,22 @@
+// Copyright (c) 2017, Google Inc.
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+package main
+
+// uninitHashValue is the default hash value that we inject into the module.
+// This value need only be distinct, i.e. so that we can safely
+// search-and-replace it in an object file.
+var uninitHashValue = [32]byte{
+	0x5f, 0x30, 0xd1, 0x80, 0xe7, 0x9e, 0x8f, 0x8f, 0xdf, 0x8b, 0x93, 0xd4, 0x96, 0x36, 0x30, 0xcc, 0x30, 0xea, 0x38, 0x0f, 0x75, 0x56, 0x9a, 0x1b, 0x23, 0x2f, 0x7c, 0x79, 0xff, 0x1b, 0x2b, 0xca,
+}
diff --git a/src/crypto/fipsmodule/delocate.go b/src/crypto/fipsmodule/delocate.go
new file mode 100644
index 0000000..d8b5fb3
--- /dev/null
+++ b/src/crypto/fipsmodule/delocate.go
@@ -0,0 +1,473 @@
+// Copyright (c) 2017, Google Inc.
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+// delocate performs several transformations of textual assembly code. See
+// FIPS.md in this directory for an overview.
+package main
+
+import (
+	"bufio"
+	"bytes"
+	"flag"
+	"fmt"
+	"os"
+	"path/filepath"
+	"sort"
+	"strconv"
+	"strings"
+	"unicode/utf8"
+)
+
+func main() {
+	// The .a file, if given, is expected to be an archive of textual
+	// assembly sources. That's odd, but CMake really wants to create
+	// archive files so it's the only way that we can make it work.
+	arInput := flag.String("a", "", "Path to a .a file containing assembly sources")
+
+	outFile := flag.String("o", "", "Path to output assembly")
+	asmFiles := flag.String("as", "", "Comma separated list of assembly inputs")
+
+	flag.Parse()
+
+	var lines []string
+	var err error
+	if len(*arInput) > 0 {
+		if lines, err = arLines(lines, *arInput); err != nil {
+			panic(err)
+		}
+	}
+
+	asPaths := strings.Split(*asmFiles, ",")
+	for i, path := range asPaths {
+		if len(path) == 0 {
+			continue
+		}
+
+		if lines, err = asLines(lines, path, i); err != nil {
+			panic(err)
+		}
+	}
+
+	symbols := definedSymbols(lines)
+	lines = transform(lines, symbols)
+
+	out, err := os.OpenFile(*outFile, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
+	if err != nil {
+		panic(err)
+	}
+	defer out.Close()
+
+	for _, line := range lines {
+		out.WriteString(line)
+		out.WriteString("\n")
+	}
+}
+
+// isSymbolDef returns detects whether line contains a (non-local) symbol
+// definition. If so, it returns the symbol and true. Otherwise it returns ""
+// and false.
+func isSymbolDef(line string) (string, bool) {
+	line = strings.TrimSpace(line)
+
+	if len(line) > 0 && line[len(line)-1] == ':' && line[0] != '.' {
+		symbol := line[:len(line)-1]
+		if validSymbolName(symbol) {
+			return symbol, true
+		}
+	}
+
+	return "", false
+}
+
+// definedSymbols finds all (non-local) symbols from lines and returns a map
+// from symbol name to whether or not that symbol is global.
+func definedSymbols(lines []string) map[string]bool {
+	globalSymbols := make(map[string]struct{})
+	symbols := make(map[string]bool)
+
+	for _, line := range lines {
+		if len(line) == 0 {
+			continue
+		}
+
+		if symbol, ok := isSymbolDef(line); ok {
+			_, isGlobal := globalSymbols[symbol]
+			symbols[symbol] = isGlobal
+		}
+
+		parts := strings.Fields(strings.TrimSpace(line))
+		if parts[0] == ".globl" {
+			globalSymbols[parts[1]] = struct{}{}
+		}
+	}
+
+	return symbols
+}
+
+func referencesIA32CapDirectly(line string) bool {
+	const symbol = "OPENSSL_ia32cap_P"
+	i := strings.Index(line, symbol)
+	if i < 0 {
+		return false
+	}
+	i += len(symbol)
+	return i == len(line) || line[i] == '+' || line[i] == '('
+}
+
+// transform performs a number of transformations on the given assembly code.
+// See FIPS.md in the current directory for an overview.
+func transform(lines []string, symbols map[string]bool) (ret []string) {
+	ret = append(ret, ".text", "BORINGSSL_bcm_text_start:")
+
+	// redirectors maps from out-call symbol name to the name of a
+	// redirector function for that symbol.
+	redirectors := make(map[string]string)
+
+	// ia32capAddrNeeded is true iff OPENSSL_ia32cap_addr has been
+	// referenced and thus needs to be emitted outside the module.
+	ia32capAddrNeeded := false
+
+	// extractedText contains lines that have been extracted from the
+	// assembly and need to be moved outside of the module. (This is used
+	// for the .init_array section that specifies constructors.)
+	var extractedText []string
+	extractingText := false
+
+	// bssAccessorsNeeded contains the names of BSS symbols for which
+	// accessor functions need to be emitted outside of the module.
+	var bssAccessorsNeeded []string
+
+	for lineNo, line := range lines {
+		if referencesIA32CapDirectly(line) {
+			panic("reference to OPENSSL_ia32cap_P needs to be changed to indirect via OPENSSL_ia32cap_addr")
+		}
+
+		if strings.Contains(line, "OPENSSL_ia32cap_addr(%rip)") {
+			ia32capAddrNeeded = true
+		}
+
+		parts := strings.Fields(strings.TrimSpace(line))
+
+		if len(parts) == 0 {
+			ret = append(ret, line)
+			continue
+		}
+
+		switch parts[0] {
+		case "call", "callq", "jmp", "jne", "jb", "jz", "jnz", "ja":
+			target := parts[1]
+			// indirect via register or local label
+			if strings.HasPrefix(target, "*") || strings.HasPrefix(target, ".L") {
+				ret = append(ret, line)
+				continue
+			}
+
+			if isGlobal, ok := symbols[target]; ok {
+				newTarget := target
+				if isGlobal {
+					newTarget = localTargetName(target)
+				}
+				ret = append(ret, fmt.Sprintf("\t%s %s", parts[0], newTarget))
+				continue
+			}
+
+			redirectorName := "bcm_redirector_" + target
+
+			if strings.HasSuffix(target, "@PLT") {
+				withoutPLT := target[:len(target)-4]
+				if isGlobal, ok := symbols[withoutPLT]; ok {
+					newTarget := withoutPLT
+					if isGlobal {
+						newTarget = localTargetName(withoutPLT)
+					}
+					ret = append(ret, fmt.Sprintf("\t%s %s", parts[0], newTarget))
+					continue
+				}
+
+				redirectorName = redirectorName[:len(redirectorName)-4]
+			}
+
+			ret = append(ret, fmt.Sprintf("\t%s %s", parts[0], redirectorName))
+			redirectors[redirectorName] = target
+			continue
+
+		case "leaq":
+			if strings.Contains(line, "BORINGSSL_bcm_text_dummy_") {
+				line = strings.Replace(line, "BORINGSSL_bcm_text_dummy_", "BORINGSSL_bcm_text_", -1)
+			}
+
+			target := strings.SplitN(parts[1], ",", 2)[0]
+			if strings.HasSuffix(target, "(%rip)") {
+				target = target[:len(target)-6]
+				if isGlobal := symbols[target]; isGlobal {
+					line = strings.Replace(line, target, localTargetName(target), 1)
+				}
+			}
+
+			ret = append(ret, line)
+			continue
+
+		case ".file":
+			// Do not reorder .file directives. These define
+			// numbered files which are referenced by other debug
+			// directives which may not be reordered.
+			ret = append(ret, line)
+			continue
+
+		case ".comm":
+			p := strings.Split(parts[1], ",")
+			name := p[0]
+			bssAccessorsNeeded = append(bssAccessorsNeeded, name)
+			symbols[accessorName(name)] = false
+			ret = append(ret, line)
+
+		case ".section":
+			extractingText = false
+
+			p := strings.Split(parts[1], ",")
+			section := p[0]
+
+			if section == ".rodata" || section == ".text.startup" || strings.HasPrefix(section, ".rodata.") {
+				// Move .rodata to .text so it may be accessed
+				// without a relocation. GCC with
+				// -fmerge-constants will place strings into
+				// separate sections, so we move all sections
+				// named like .rodata. Also move .text.startup
+				// so the self-test function is also in the
+				// module.
+				ret = append(ret, ".text  # "+section)
+				break
+			}
+
+			switch section {
+			case ".data", ".data.rel.ro.local":
+				panic(fmt.Sprintf("bad section %q on line %d", parts[1], lineNo+1))
+
+			case ".init_array":
+				// init_array contains function pointers to
+				// constructor functions. Since these must be
+				// relocated, this section is moved to the end
+				// of the file.
+				extractedText = append(extractedText, line)
+				extractingText = true
+
+			default:
+				ret = append(ret, line)
+			}
+
+		case ".text":
+			extractingText = false
+			fallthrough
+
+		default:
+			if extractingText {
+				extractedText = append(extractedText, line)
+				continue
+			}
+
+			if symbol, ok := isSymbolDef(line); ok {
+				if isGlobal := symbols[symbol]; isGlobal {
+					ret = append(ret, localTargetName(symbol)+":")
+				}
+			}
+
+			ret = append(ret, line)
+		}
+	}
+
+	ret = append(ret, ".text")
+	ret = append(ret, "BORINGSSL_bcm_text_end:")
+
+	// Emit redirector functions. Each is a single JMP instruction.
+	var redirectorNames []string
+	for name := range redirectors {
+		redirectorNames = append(redirectorNames, name)
+	}
+	sort.Strings(redirectorNames)
+
+	for _, name := range redirectorNames {
+		ret = append(ret, ".type "+name+", @function")
+		ret = append(ret, name+":")
+		ret = append(ret, "\tjmp "+redirectors[name])
+	}
+
+	// Emit BSS accessor functions. Each is a single LEA followed by RET.
+	for _, name := range bssAccessorsNeeded {
+		funcName := accessorName(name)
+		ret = append(ret, ".type "+funcName+", @function")
+		ret = append(ret, funcName+":")
+		ret = append(ret, "\tleaq "+name+"(%rip), %rax")
+		ret = append(ret, "\tret")
+	}
+
+	// Emit an indirect reference to OPENSSL_ia32cap_P.
+	if ia32capAddrNeeded {
+		ret = append(ret, ".extern OPENSSL_ia32cap_P")
+		ret = append(ret, ".type OPENSSL_ia32cap_addr,@object")
+		ret = append(ret, ".size OPENSSL_ia32cap_addr,8")
+		ret = append(ret, "OPENSSL_ia32cap_addr:")
+		ret = append(ret, "\t.quad OPENSSL_ia32cap_P")
+	}
+
+	// Emit an array for storing the module hash.
+	ret = append(ret, ".type BORINGSSL_bcm_text_hash,@object")
+	ret = append(ret, ".size OPENSSL_ia32cap_addr,32")
+	ret = append(ret, "BORINGSSL_bcm_text_hash:")
+	for _, b := range uninitHashValue {
+		ret = append(ret, ".byte 0x"+strconv.FormatUint(uint64(b), 16))
+	}
+
+	ret = append(ret, extractedText...)
+
+	return ret
+}
+
+// accessorName returns the name of the accessor function for a BSS symbol
+// named name.
+func accessorName(name string) string {
+	return name + "_bss_get"
+}
+
+// localTargetName returns the name of the local target label for a global
+// symbol named name.
+func localTargetName(name string) string {
+	return ".L" + name + "_local_target"
+}
+
+// asLines appends the contents of path to lines. Local symbols are renamed
+// using uniqueId to avoid collisions.
+func asLines(lines []string, path string, uniqueId int) ([]string, error) {
+	basename := symbolRuneOrUnderscore(filepath.Base(path))
+
+	asFile, err := os.Open(path)
+	if err != nil {
+		return nil, err
+	}
+	defer asFile.Close()
+
+	var contents []string
+
+	// localSymbols maps from the symbol name used in the input, to a
+	// unique symbol name.
+	localSymbols := make(map[string]string)
+
+	scanner := bufio.NewScanner(asFile)
+	for scanner.Scan() {
+		line := scanner.Text()
+		trimmed := strings.TrimSpace(line)
+		if strings.HasPrefix(trimmed, ".L") && strings.HasSuffix(trimmed, ":") {
+			symbol := trimmed[:len(trimmed)-1]
+			mappedSymbol := fmt.Sprintf(".L%s_%d_%s", basename, uniqueId, symbol[2:])
+			localSymbols[symbol] = mappedSymbol
+			contents = append(contents, mappedSymbol+":")
+			continue
+		}
+
+		contents = append(contents, scanner.Text())
+	}
+	if err := scanner.Err(); err != nil {
+		return nil, err
+	}
+
+	for _, line := range contents {
+		for symbol, mappedSymbol := range localSymbols {
+			for i := strings.Index(line, symbol); i >= 0; i = strings.Index(line[i:], symbol) {
+				before := ' '
+				if i > 0 {
+					before, _ = utf8.DecodeLastRuneInString(line[:i])
+				}
+
+				after, _ := utf8.DecodeRuneInString(line[i+len(symbol):])
+
+				if !symbolRune(before) && !symbolRune(after) {
+					line = strings.Replace(line, symbol, mappedSymbol, 1)
+					i += len(mappedSymbol)
+				} else {
+					i += len(symbol)
+				}
+			}
+		}
+
+		lines = append(lines, line)
+	}
+
+	return lines, nil
+}
+
+func arLines(lines []string, arPath string) ([]string, error) {
+	arFile, err := os.Open(arPath)
+	if err != nil {
+		return nil, err
+	}
+	defer arFile.Close()
+
+	ar, err := ParseAR(arFile)
+	if err != nil {
+		return nil, err
+	}
+
+	if len(ar) != 1 {
+		return nil, fmt.Errorf("expected one file in archive, but found %d", len(ar))
+	}
+
+	for _, contents := range ar {
+		scanner := bufio.NewScanner(bytes.NewBuffer(contents))
+		for scanner.Scan() {
+			lines = append(lines, scanner.Text())
+		}
+		if err := scanner.Err(); err != nil {
+			return nil, err
+		}
+	}
+
+	return lines, nil
+}
+
+// validSymbolName returns true if s is a valid (non-local) name for a symbol.
+func validSymbolName(s string) bool {
+	if len(s) == 0 {
+		return false
+	}
+
+	r, n := utf8.DecodeRuneInString(s)
+	// symbols don't start with a digit.
+	if r == utf8.RuneError || !symbolRune(r) || ('0' <= s[0] && s[0] <= '9') {
+		return false
+	}
+
+	return strings.IndexFunc(s[n:], func(r rune) bool {
+		return !symbolRune(r)
+	}) == -1
+}
+
+// symbolRune returns true if r is valid in a symbol name.
+func symbolRune(r rune) bool {
+	return (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') || (r >= '0' && r <= '9') || r == '$' || r == '_'
+}
+
+// symbolRuneOrUnderscore maps s where runes valid in a symbol name map to
+// themselves and all other runs map to underscore.
+func symbolRuneOrUnderscore(s string) string {
+	runes := make([]rune, 0, len(s))
+
+	for _, r := range s {
+		if symbolRune(r) {
+			runes = append(runes, r)
+		} else {
+			runes = append(runes, '_')
+		}
+	}
+
+	return string(runes)
+}
diff --git a/src/crypto/fipsmodule/delocate.h b/src/crypto/fipsmodule/delocate.h
new file mode 100644
index 0000000..676073c
--- /dev/null
+++ b/src/crypto/fipsmodule/delocate.h
@@ -0,0 +1,66 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#ifndef OPENSSL_HEADER_FIPSMODULE_DELOCATE_H
+#define OPENSSL_HEADER_FIPSMODULE_DELOCATE_H
+
+#include <openssl/base.h>
+
+#include "../internal.h"
+
+
+#if defined(BORINGSSL_FIPS)
+#define DEFINE_BSS_GET(type, name)            \
+  static type name __attribute__((used)); \
+  type *name##_bss_get(void);
+#else
+#define DEFINE_BSS_GET(type, name) \
+  static type name;            \
+  static type *name##_bss_get(void) { return &name; }
+#endif
+
+/* DEFINE_METHOD_FUNCTION defines a function named |name| which returns a
+ * method table of type const |type|*. In FIPS mode, to avoid rel.ro data, it
+ * is split into a CRYPTO_once_t-guarded initializer in the module and
+ * unhashed, non-module accessor functions to space reserved in the BSS. The
+ * method table is initialized by a caller-supplied function which takes a
+ * parameter named |out| of type |type|*. The caller should follow the macro
+ * invocation with the body of this function:
+ *
+ *     DEFINE_METHOD_FUNCTION(EVP_MD, EVP_md4) {
+ *       out->type = NID_md4;
+ *       out->md_size = MD4_DIGEST_LENGTH;
+ *       out->flags = 0;
+ *       out->init = md4_init;
+ *       out->update = md4_update;
+ *       out->final = md4_final;
+ *       out->block_size = 64;
+ *       out->ctx_size = sizeof(MD4_CTX);
+ *     }
+ *
+ * This mechanism does not use a static initializer because their execution
+ * order is undefined. See FIPS.md for more details. */
+#define DEFINE_METHOD_FUNCTION(type, name)                                    \
+  DEFINE_BSS_GET(type, name##_storage)                                        \
+  DEFINE_BSS_GET(CRYPTO_once_t, name##_once)                                  \
+  static void name##_do_init(type *out);                                      \
+  static void name##_init(void) { name##_do_init(name##_storage_bss_get()); } \
+  const type *name(void) {                                                    \
+    CRYPTO_once(name##_once_bss_get(), name##_init);                          \
+    return name##_storage_bss_get();                                          \
+  }                                                                           \
+  static void name##_do_init(type *out)
+
+
+#endif /* OPENSSL_HEADER_FIPSMODULE_DELOCATE_H */
diff --git a/src/crypto/digest/digest.c b/src/crypto/fipsmodule/digest/digest.c
similarity index 99%
rename from src/crypto/digest/digest.c
rename to src/crypto/fipsmodule/digest/digest.c
index 9c9962b..00e6d4b 100644
--- a/src/crypto/digest/digest.c
+++ b/src/crypto/fipsmodule/digest/digest.c
@@ -63,7 +63,7 @@
 #include <openssl/mem.h>
 
 #include "internal.h"
-#include "../internal.h"
+#include "../../internal.h"
 
 
 int EVP_MD_type(const EVP_MD *md) { return md->type; }
diff --git a/src/crypto/fipsmodule/digest/digests.c b/src/crypto/fipsmodule/digest/digests.c
new file mode 100644
index 0000000..f2fa349
--- /dev/null
+++ b/src/crypto/fipsmodule/digest/digests.c
@@ -0,0 +1,280 @@
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.] */
+
+#include <openssl/digest.h>
+
+#include <assert.h>
+#include <string.h>
+
+#include <openssl/md4.h>
+#include <openssl/md5.h>
+#include <openssl/nid.h>
+#include <openssl/sha.h>
+
+#include "internal.h"
+#include "../delocate.h"
+#include "../../internal.h"
+
+#if defined(NDEBUG)
+#define CHECK(x) (void) (x)
+#else
+#define CHECK(x) assert(x)
+#endif
+
+
+static void md4_init(EVP_MD_CTX *ctx) {
+  CHECK(MD4_Init(ctx->md_data));
+}
+
+static void md4_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
+  CHECK(MD4_Update(ctx->md_data, data, count));
+}
+
+static void md4_final(EVP_MD_CTX *ctx, uint8_t *out) {
+  CHECK(MD4_Final(out, ctx->md_data));
+}
+
+DEFINE_METHOD_FUNCTION(EVP_MD, EVP_md4) {
+  out->type = NID_md4;
+  out->md_size = MD4_DIGEST_LENGTH;
+  out->flags = 0;
+  out->init = md4_init;
+  out->update = md4_update;
+  out->final = md4_final;
+  out->block_size = 64;
+  out->ctx_size = sizeof(MD4_CTX);
+}
+
+
+static void md5_init(EVP_MD_CTX *ctx) {
+  CHECK(MD5_Init(ctx->md_data));
+}
+
+static void md5_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
+  CHECK(MD5_Update(ctx->md_data, data, count));
+}
+
+static void md5_final(EVP_MD_CTX *ctx, uint8_t *out) {
+  CHECK(MD5_Final(out, ctx->md_data));
+}
+
+DEFINE_METHOD_FUNCTION(EVP_MD, EVP_md5) {
+  out->type = NID_md5;
+  out->md_size = MD5_DIGEST_LENGTH;
+  out->flags = 0;
+  out->init = md5_init;
+  out->update = md5_update;
+  out->final = md5_final;
+  out->block_size = 64;
+  out->ctx_size = sizeof(MD5_CTX);
+}
+
+
+static void sha1_init(EVP_MD_CTX *ctx) {
+  CHECK(SHA1_Init(ctx->md_data));
+}
+
+static void sha1_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
+  CHECK(SHA1_Update(ctx->md_data, data, count));
+}
+
+static void sha1_final(EVP_MD_CTX *ctx, uint8_t *md) {
+  CHECK(SHA1_Final(md, ctx->md_data));
+}
+
+DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha1) {
+  out->type = NID_sha1;
+  out->md_size = SHA_DIGEST_LENGTH;
+  out->flags = 0;
+  out->init = sha1_init;
+  out->update = sha1_update;
+  out->final = sha1_final;
+  out->block_size = 64;
+  out->ctx_size = sizeof(SHA_CTX);
+}
+
+
+static void sha224_init(EVP_MD_CTX *ctx) {
+  CHECK(SHA224_Init(ctx->md_data));
+}
+
+static void sha224_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
+  CHECK(SHA224_Update(ctx->md_data, data, count));
+}
+
+static void sha224_final(EVP_MD_CTX *ctx, uint8_t *md) {
+  CHECK(SHA224_Final(md, ctx->md_data));
+}
+
+DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha224) {
+  out->type = NID_sha224;
+  out->md_size = SHA224_DIGEST_LENGTH;
+  out->flags = 0;
+  out->init = sha224_init;
+  out->update = sha224_update;
+  out->final = sha224_final;
+  out->block_size = 64;
+  out->ctx_size = sizeof(SHA256_CTX);
+}
+
+
+static void sha256_init(EVP_MD_CTX *ctx) {
+  CHECK(SHA256_Init(ctx->md_data));
+}
+
+static void sha256_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
+  CHECK(SHA256_Update(ctx->md_data, data, count));
+}
+
+static void sha256_final(EVP_MD_CTX *ctx, uint8_t *md) {
+  CHECK(SHA256_Final(md, ctx->md_data));
+}
+
+DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha256) {
+  out->type = NID_sha256;
+  out->md_size = SHA256_DIGEST_LENGTH;
+  out->flags = 0;
+  out->init = sha256_init;
+  out->update = sha256_update;
+  out->final = sha256_final;
+  out->block_size = 64;
+  out->ctx_size = sizeof(SHA256_CTX);
+}
+
+
+static void sha384_init(EVP_MD_CTX *ctx) {
+  CHECK(SHA384_Init(ctx->md_data));
+}
+
+static void sha384_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
+  CHECK(SHA384_Update(ctx->md_data, data, count));
+}
+
+static void sha384_final(EVP_MD_CTX *ctx, uint8_t *md) {
+  CHECK(SHA384_Final(md, ctx->md_data));
+}
+
+DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha384) {
+  out->type = NID_sha384;
+  out->md_size = SHA384_DIGEST_LENGTH;
+  out->flags = 0;
+  out->init = sha384_init;
+  out->update = sha384_update;
+  out->final = sha384_final;
+  out->block_size = 128;
+  out->ctx_size = sizeof(SHA512_CTX);
+}
+
+
+static void sha512_init(EVP_MD_CTX *ctx) {
+  CHECK(SHA512_Init(ctx->md_data));
+}
+
+static void sha512_update(EVP_MD_CTX *ctx, const void *data, size_t count) {
+  CHECK(SHA512_Update(ctx->md_data, data, count));
+}
+
+static void sha512_final(EVP_MD_CTX *ctx, uint8_t *md) {
+  CHECK(SHA512_Final(md, ctx->md_data));
+}
+
+DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha512) {
+  out->type = NID_sha512;
+  out->md_size = SHA512_DIGEST_LENGTH;
+  out->flags = 0;
+  out->init = sha512_init;
+  out->update = sha512_update;
+  out->final = sha512_final;
+  out->block_size = 128;
+  out->ctx_size = sizeof(SHA512_CTX);
+}
+
+
+typedef struct {
+  MD5_CTX md5;
+  SHA_CTX sha1;
+} MD5_SHA1_CTX;
+
+static void md5_sha1_init(EVP_MD_CTX *md_ctx) {
+  MD5_SHA1_CTX *ctx = md_ctx->md_data;
+  CHECK(MD5_Init(&ctx->md5) && SHA1_Init(&ctx->sha1));
+}
+
+static void md5_sha1_update(EVP_MD_CTX *md_ctx, const void *data,
+                            size_t count) {
+  MD5_SHA1_CTX *ctx = md_ctx->md_data;
+  CHECK(MD5_Update(&ctx->md5, data, count) &&
+        SHA1_Update(&ctx->sha1, data, count));
+}
+
+static void md5_sha1_final(EVP_MD_CTX *md_ctx, uint8_t *out) {
+  MD5_SHA1_CTX *ctx = md_ctx->md_data;
+  CHECK(MD5_Final(out, &ctx->md5) &&
+        SHA1_Final(out + MD5_DIGEST_LENGTH, &ctx->sha1));
+}
+
+DEFINE_METHOD_FUNCTION(EVP_MD, EVP_md5_sha1) {
+  out->type = NID_md5_sha1;
+  out->md_size = MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH;
+  out->flags = 0;
+  out->init = md5_sha1_init;
+  out->update = md5_sha1_update;
+  out->final = md5_sha1_final;
+  out->block_size = 64;
+  out->ctx_size = sizeof(MD5_SHA1_CTX);
+}
+
+#undef CHECK
diff --git a/src/crypto/digest/internal.h b/src/crypto/fipsmodule/digest/internal.h
similarity index 98%
rename from src/crypto/digest/internal.h
rename to src/crypto/fipsmodule/digest/internal.h
index 9f83bcb..e3d812a 100644
--- a/src/crypto/digest/internal.h
+++ b/src/crypto/fipsmodule/digest/internal.h
@@ -104,8 +104,6 @@
   EVP_PKEY_CTX* (*dup) (EVP_PKEY_CTX *pctx);
 };
 
-const EVP_MD *EVP_parse_digest_algorithm(CBS *cbs);
-
 
 #if defined(__cplusplus)
 }  /* extern C */
diff --git a/src/crypto/digest/md32_common.h b/src/crypto/fipsmodule/digest/md32_common.h
similarity index 98%
rename from src/crypto/digest/md32_common.h
rename to src/crypto/fipsmodule/digest/md32_common.h
index 45fe939..7371629 100644
--- a/src/crypto/digest/md32_common.h
+++ b/src/crypto/fipsmodule/digest/md32_common.h
@@ -46,14 +46,11 @@
  * OF THE POSSIBILITY OF SUCH DAMAGE.
  * ==================================================================== */
 
-#ifndef OPENSSL_HEADER_MD32_COMMON_H
-#define OPENSSL_HEADER_MD32_COMMON_H
-
 #include <openssl/base.h>
 
 #include <assert.h>
 
-#include "../internal.h"
+#include "../../internal.h"
 
 #if defined(__cplusplus)
 extern "C" {
@@ -270,5 +267,3 @@
 #if defined(__cplusplus)
 } /* extern C */
 #endif
-
-#endif /* OPENSSL_HEADER_MD32_COMMON_H */
diff --git a/src/crypto/hmac/hmac.c b/src/crypto/fipsmodule/hmac/hmac.c
similarity index 99%
rename from src/crypto/hmac/hmac.c
rename to src/crypto/fipsmodule/hmac/hmac.c
index 931f7a1..3292350 100644
--- a/src/crypto/hmac/hmac.c
+++ b/src/crypto/fipsmodule/hmac/hmac.c
@@ -62,7 +62,7 @@
 #include <openssl/digest.h>
 #include <openssl/mem.h>
 
-#include "../internal.h"
+#include "../../internal.h"
 
 
 uint8_t *HMAC(const EVP_MD *evp_md, const void *key, size_t key_len,
diff --git a/src/crypto/fipsmodule/inject-hash.go b/src/crypto/fipsmodule/inject-hash.go
new file mode 100644
index 0000000..7f2c9c9
--- /dev/null
+++ b/src/crypto/fipsmodule/inject-hash.go
@@ -0,0 +1,159 @@
+// Copyright (c) 2017, Google Inc.
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+// inject-hash parses an archive containing a file object file. It finds a FIPS
+// module inside that object, calculates its hash and replaces the default hash
+// value in the object with the calculated value.
+package main
+
+import (
+	"bytes"
+	"crypto/hmac"
+	"crypto/sha256"
+	"debug/elf"
+	"errors"
+	"flag"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"os"
+)
+
+func do(outPath, arInput string) error {
+	arFile, err := os.Open(arInput)
+	if err != nil {
+		return err
+	}
+	defer arFile.Close()
+
+	ar, err := ParseAR(arFile)
+	if err != nil {
+		return err
+	}
+
+	if len(ar) != 1 {
+		return fmt.Errorf("expected one file in archive, but found %d", len(ar))
+	}
+
+	var objectBytes []byte
+	for _, contents := range ar {
+		objectBytes = contents
+	}
+
+	object, err := elf.NewFile(bytes.NewReader(objectBytes))
+	if err != nil {
+		return errors.New("failed to parse object: " + err.Error())
+	}
+
+	// Find the .text section.
+
+	var textSection *elf.Section
+	var textSectionIndex elf.SectionIndex
+	for i, section := range object.Sections {
+		if section.Name == ".text" {
+			textSectionIndex = elf.SectionIndex(i)
+			textSection = section
+			break
+		}
+	}
+
+	if textSection == nil {
+		return errors.New("failed to find .text section in object")
+	}
+
+	// Find the starting and ending symbols for the module.
+
+	var startSeen, endSeen bool
+	var start, end uint64
+
+	symbols, err := object.Symbols()
+	if err != nil {
+		return errors.New("failed to parse symbols: " + err.Error())
+	}
+
+	for _, symbol := range symbols {
+		if symbol.Section != textSectionIndex {
+			continue
+		}
+
+		switch symbol.Name {
+		case "BORINGSSL_bcm_text_start":
+			if startSeen {
+				return errors.New("duplicate start symbol found")
+			}
+			startSeen = true
+			start = symbol.Value
+		case "BORINGSSL_bcm_text_end":
+			if endSeen {
+				return errors.New("duplicate end symbol found")
+			}
+			endSeen = true
+			end = symbol.Value
+		default:
+			continue
+		}
+	}
+
+	if !startSeen || !endSeen {
+		return errors.New("could not find module boundaries in object")
+	}
+
+	if max := textSection.Size; start > max || start > end || end > max {
+		return fmt.Errorf("invalid module boundaries: start: %x, end: %x, max: %x", start, end, max)
+	}
+
+	// Extract the module from the .text section and hash it.
+
+	text := textSection.Open()
+	if _, err := text.Seek(int64(start), 0); err != nil {
+		return errors.New("failed to seek to module start in .text: " + err.Error())
+	}
+	moduleText := make([]byte, end-start)
+	if _, err := io.ReadFull(text, moduleText); err != nil {
+		return errors.New("failed to read .text: " + err.Error())
+	}
+
+	var zeroKey [32]byte
+	mac := hmac.New(sha256.New, zeroKey[:])
+	mac.Write(moduleText)
+	calculated := mac.Sum(nil)
+
+	// Replace the default hash value in the object with the calculated
+	// value and write it out.
+
+	offset := bytes.Index(objectBytes, uninitHashValue[:])
+	if offset < 0 {
+		return errors.New("did not find uninitialised hash value in object file")
+	}
+
+	if bytes.Index(objectBytes[offset+1:], uninitHashValue[:]) >= 0 {
+		return errors.New("found two occurrences of uninitialised hash value in object file")
+	}
+
+	copy(objectBytes[offset:], calculated)
+
+	return ioutil.WriteFile(outPath, objectBytes, 0644)
+}
+
+func main() {
+	arInput := flag.String("in", "", "Path to a .a file")
+	outPath := flag.String("o", "", "Path to output object")
+
+	flag.Parse()
+
+	if err := do(*outPath, *arInput); err != nil {
+		fmt.Fprintf(os.Stderr, "%s\n", err)
+		os.Exit(1)
+	}
+}
diff --git a/src/crypto/fipsmodule/intcheck1.png b/src/crypto/fipsmodule/intcheck1.png
new file mode 100644
index 0000000..2fec4ea
--- /dev/null
+++ b/src/crypto/fipsmodule/intcheck1.png
Binary files differ
diff --git a/src/crypto/fipsmodule/intcheck2.png b/src/crypto/fipsmodule/intcheck2.png
new file mode 100644
index 0000000..3e66267
--- /dev/null
+++ b/src/crypto/fipsmodule/intcheck2.png
Binary files differ
diff --git a/src/crypto/fipsmodule/intcheck3.png b/src/crypto/fipsmodule/intcheck3.png
new file mode 100644
index 0000000..9a22d33
--- /dev/null
+++ b/src/crypto/fipsmodule/intcheck3.png
Binary files differ
diff --git a/src/crypto/fipsmodule/is_fips.c b/src/crypto/fipsmodule/is_fips.c
new file mode 100644
index 0000000..c23e621
--- /dev/null
+++ b/src/crypto/fipsmodule/is_fips.c
@@ -0,0 +1,27 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/crypto.h>
+
+
+/* This file exists in order to give the fipsmodule target, in non-FIPS mode,
+ * something to compile. */
+
+int FIPS_mode(void) {
+#if defined(BORINGSSL_FIPS)
+  return 1;
+#else
+  return 0;
+#endif
+}
diff --git a/src/crypto/md4/md4.c b/src/crypto/fipsmodule/md4/md4.c
similarity index 95%
rename from src/crypto/md4/md4.c
rename to src/crypto/fipsmodule/md4/md4.c
index 0046c21..3028c8b 100644
--- a/src/crypto/md4/md4.c
+++ b/src/crypto/fipsmodule/md4/md4.c
@@ -59,7 +59,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "../internal.h"
+#include "../../internal.h"
 
 
 uint8_t *MD4(const uint8_t *data, size_t len, uint8_t *out) {
@@ -234,3 +234,21 @@
     D = state[3] += D;
   }
 }
+
+#undef DATA_ORDER_IS_LITTLE_ENDIAN
+#undef HASH_CTX
+#undef HASH_CBLOCK
+#undef HASH_UPDATE
+#undef HASH_TRANSFORM
+#undef HASH_FINAL
+#undef HASH_MAKE_STRING
+#undef HASH_BLOCK_DATA_ORDER
+#undef F
+#undef G
+#undef H
+#undef ROTATE
+#undef R0
+#undef R1
+#undef R2
+#undef HOST_c2l
+#undef HOST_l2c
diff --git a/src/crypto/md5/asm/md5-586.pl b/src/crypto/fipsmodule/md5/asm/md5-586.pl
similarity index 99%
rename from src/crypto/md5/asm/md5-586.pl
rename to src/crypto/fipsmodule/md5/asm/md5-586.pl
index a032d9b..4ba08ec 100644
--- a/src/crypto/md5/asm/md5-586.pl
+++ b/src/crypto/fipsmodule/md5/asm/md5-586.pl
@@ -8,7 +8,7 @@
 $normal=0;
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
-push(@INC,"${dir}","${dir}../../perlasm");
+push(@INC,"${dir}","${dir}../../../perlasm");
 require "x86asm.pl";
 
 $output=pop;
diff --git a/src/crypto/md5/asm/md5-x86_64.pl b/src/crypto/fipsmodule/md5/asm/md5-x86_64.pl
similarity index 99%
rename from src/crypto/md5/asm/md5-x86_64.pl
rename to src/crypto/fipsmodule/md5/asm/md5-x86_64.pl
index 5ba0c62..568f4f5 100644
--- a/src/crypto/md5/asm/md5-x86_64.pl
+++ b/src/crypto/fipsmodule/md5/asm/md5-x86_64.pl
@@ -117,7 +117,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or
 die "can't locate x86_64-xlate.pl";
 
 open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\"";
diff --git a/src/crypto/md5/md5.c b/src/crypto/fipsmodule/md5/md5.c
similarity index 96%
rename from src/crypto/md5/md5.c
rename to src/crypto/fipsmodule/md5/md5.c
index adc5957..15a0f53 100644
--- a/src/crypto/md5/md5.c
+++ b/src/crypto/fipsmodule/md5/md5.c
@@ -60,7 +60,7 @@
 
 #include <openssl/mem.h>
 
-#include "../internal.h"
+#include "../../internal.h"
 
 
 uint8_t *MD5(const uint8_t *data, size_t len, uint8_t *out) {
@@ -275,4 +275,25 @@
     D = state[3] += D;
   }
 }
+#undef X
 #endif
+
+#undef DATA_ORDER_IS_LITTLE_ENDIAN
+#undef HASH_CTX
+#undef HASH_CBLOCK
+#undef HASH_UPDATE
+#undef HASH_TRANSFORM
+#undef HASH_FINAL
+#undef HASH_MAKE_STRING
+#undef HASH_BLOCK_DATA_ORDER
+#undef F
+#undef G
+#undef H
+#undef I
+#undef ROTATE
+#undef R0
+#undef R1
+#undef R2
+#undef R3
+#undef HOST_c2l
+#undef HOST_l2c
diff --git a/src/crypto/sha/asm/sha1-586.pl b/src/crypto/fipsmodule/sha/asm/sha1-586.pl
similarity index 99%
rename from src/crypto/sha/asm/sha1-586.pl
rename to src/crypto/fipsmodule/sha/asm/sha1-586.pl
index acf383d..4221e27 100644
--- a/src/crypto/sha/asm/sha1-586.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha1-586.pl
@@ -114,7 +114,7 @@
 # (***)	SHAEXT result
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
-push(@INC,"${dir}","${dir}../../perlasm");
+push(@INC,"${dir}","${dir}../../../perlasm");
 require "x86asm.pl";
 
 $output=pop;
diff --git a/src/crypto/sha/asm/sha1-armv4-large.pl b/src/crypto/fipsmodule/sha/asm/sha1-armv4-large.pl
similarity index 99%
rename from src/crypto/sha/asm/sha1-armv4-large.pl
rename to src/crypto/fipsmodule/sha/asm/sha1-armv4-large.pl
index 4fef524..944248f 100644
--- a/src/crypto/sha/asm/sha1-armv4-large.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha1-armv4-large.pl
@@ -75,7 +75,7 @@
 if ($flavour && $flavour ne "void") {
     $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
     ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
-    ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+    ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or
     die "can't locate arm-xlate.pl";
 
     open STDOUT,"| \"$^X\" $xlate $flavour $output";
diff --git a/src/crypto/sha/asm/sha1-armv8.pl b/src/crypto/fipsmodule/sha/asm/sha1-armv8.pl
similarity index 98%
rename from src/crypto/sha/asm/sha1-armv8.pl
rename to src/crypto/fipsmodule/sha/asm/sha1-armv8.pl
index 1c4fe4a..dbbb54b 100644
--- a/src/crypto/sha/asm/sha1-armv8.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha1-armv8.pl
@@ -28,7 +28,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or
 die "can't locate arm-xlate.pl";
 
 open OUT,"| \"$^X\" $xlate $flavour $output";
diff --git a/src/crypto/sha/asm/sha1-x86_64.pl b/src/crypto/fipsmodule/sha/asm/sha1-x86_64.pl
similarity index 99%
rename from src/crypto/sha/asm/sha1-x86_64.pl
rename to src/crypto/fipsmodule/sha/asm/sha1-x86_64.pl
index 9a13f6c..25a1cad 100755
--- a/src/crypto/sha/asm/sha1-x86_64.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha1-x86_64.pl
@@ -92,7 +92,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or
 die "can't locate x86_64-xlate.pl";
 
 # In upstream, this is controlled by shelling out to the compiler to check
@@ -236,15 +236,17 @@
 
 $code.=<<___;
 .text
-.extern	OPENSSL_ia32cap_P
+.extern	OPENSSL_ia32cap_addr
 
 .globl	sha1_block_data_order
 .type	sha1_block_data_order,\@function,3
 .align	16
 sha1_block_data_order:
-	mov	OPENSSL_ia32cap_P+0(%rip),%r9d
-	mov	OPENSSL_ia32cap_P+4(%rip),%r8d
-	mov	OPENSSL_ia32cap_P+8(%rip),%r10d
+	lea	OPENSSL_ia32cap_addr(%rip),%r10
+	mov	(%r10),%r10
+	mov	0(%r10),%r9d
+	mov	4(%r10),%r8d
+	mov	8(%r10),%r10d
 	test	\$`1<<9`,%r8d		# check SSSE3 bit
 	jz	.Lialu
 ___
diff --git a/src/crypto/sha/asm/sha256-586.pl b/src/crypto/fipsmodule/sha/asm/sha256-586.pl
similarity index 99%
rename from src/crypto/sha/asm/sha256-586.pl
rename to src/crypto/fipsmodule/sha/asm/sha256-586.pl
index d85004c..834d00f 100644
--- a/src/crypto/sha/asm/sha256-586.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha256-586.pl
@@ -63,7 +63,7 @@
 # (***)	SHAEXT result is 4.1, strangely enough better than 64-bit one;
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
-push(@INC,"${dir}","${dir}../../perlasm");
+push(@INC,"${dir}","${dir}../../../perlasm");
 require "x86asm.pl";
 
 $output=pop;
diff --git a/src/crypto/sha/asm/sha256-armv4.pl b/src/crypto/fipsmodule/sha/asm/sha256-armv4.pl
similarity index 99%
rename from src/crypto/sha/asm/sha256-armv4.pl
rename to src/crypto/fipsmodule/sha/asm/sha256-armv4.pl
index bac7ce8..3eea080 100644
--- a/src/crypto/sha/asm/sha256-armv4.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha256-armv4.pl
@@ -51,7 +51,7 @@
 if ($flavour && $flavour ne "void") {
     $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
     ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
-    ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+    ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or
     die "can't locate arm-xlate.pl";
 
     open STDOUT,"| \"$^X\" $xlate $flavour $output";
diff --git a/src/crypto/sha/asm/sha512-586.pl b/src/crypto/fipsmodule/sha/asm/sha512-586.pl
similarity index 99%
rename from src/crypto/sha/asm/sha512-586.pl
rename to src/crypto/fipsmodule/sha/asm/sha512-586.pl
index 6d909ed..a757ee7 100644
--- a/src/crypto/sha/asm/sha512-586.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha512-586.pl
@@ -49,7 +49,7 @@
 # cost of increased data cache "footprint" by 1/2KB.
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
-push(@INC,"${dir}","${dir}../../perlasm");
+push(@INC,"${dir}","${dir}../../../perlasm");
 require "x86asm.pl";
 
 $output=pop;
diff --git a/src/crypto/sha/asm/sha512-armv4.pl b/src/crypto/fipsmodule/sha/asm/sha512-armv4.pl
similarity index 99%
rename from src/crypto/sha/asm/sha512-armv4.pl
rename to src/crypto/fipsmodule/sha/asm/sha512-armv4.pl
index 0320c16..fd92f7a 100644
--- a/src/crypto/sha/asm/sha512-armv4.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha512-armv4.pl
@@ -57,7 +57,7 @@
 if ($flavour && $flavour ne "void") {
     $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
     ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
-    ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+    ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or
     die "can't locate arm-xlate.pl";
 
     open STDOUT,"| \"$^X\" $xlate $flavour $output";
diff --git a/src/crypto/sha/asm/sha512-armv8.pl b/src/crypto/fipsmodule/sha/asm/sha512-armv8.pl
similarity index 99%
rename from src/crypto/sha/asm/sha512-armv8.pl
rename to src/crypto/fipsmodule/sha/asm/sha512-armv8.pl
index 494e633..b4e558a 100644
--- a/src/crypto/sha/asm/sha512-armv8.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha512-armv8.pl
@@ -34,7 +34,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or
 die "can't locate arm-xlate.pl";
 
 open OUT,"| \"$^X\" $xlate $flavour $output";
diff --git a/src/crypto/sha/asm/sha512-x86_64.pl b/src/crypto/fipsmodule/sha/asm/sha512-x86_64.pl
similarity index 99%
rename from src/crypto/sha/asm/sha512-x86_64.pl
rename to src/crypto/fipsmodule/sha/asm/sha512-x86_64.pl
index 5716791..c638595 100755
--- a/src/crypto/sha/asm/sha512-x86_64.pl
+++ b/src/crypto/fipsmodule/sha/asm/sha512-x86_64.pl
@@ -108,7 +108,7 @@
 
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
-( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
+( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or
 die "can't locate x86_64-xlate.pl";
 
 # In upstream, this is controlled by shelling out to the compiler to check
@@ -249,14 +249,15 @@
 $code=<<___;
 .text
 
-.extern	OPENSSL_ia32cap_P
+.extern	OPENSSL_ia32cap_addr
 .globl	$func
 .type	$func,\@function,3
 .align	16
 $func:
 ___
 $code.=<<___ if ($SZ==4 || $avx);
-	lea	OPENSSL_ia32cap_P(%rip),%r11
+	lea	OPENSSL_ia32cap_addr(%rip),%r11
+	mov	(%r11),%r11
 	mov	0(%r11),%r9d
 	mov	4(%r11),%r10d
 	mov	8(%r11),%r11d
@@ -311,6 +312,7 @@
 	mov	$SZ*5($ctx),$F
 	mov	$SZ*6($ctx),$G
 	mov	$SZ*7($ctx),$H
+
 	jmp	.Lloop
 
 .align	16
diff --git a/src/crypto/sha/sha1-altivec.c b/src/crypto/fipsmodule/sha/sha1-altivec.c
similarity index 98%
rename from src/crypto/sha/sha1-altivec.c
rename to src/crypto/fipsmodule/sha/sha1-altivec.c
index 0b64315..14e2bae 100644
--- a/src/crypto/sha/sha1-altivec.c
+++ b/src/crypto/fipsmodule/sha/sha1-altivec.c
@@ -346,3 +346,16 @@
 }
 
 #endif  /* OPENSSL_PPC64LE */
+
+#undef K_00_19
+#undef K_20_39
+#undef K_40_59
+#undef K_60_79
+#undef F_00_19
+#undef F_20_39
+#undef F_40_59
+#undef F_60_79
+#undef BODY_00_19
+#undef BODY_20_39
+#undef BODY_40_59
+#undef BODY_60_79
diff --git a/src/crypto/sha/sha1.c b/src/crypto/fipsmodule/sha/sha1.c
similarity index 96%
rename from src/crypto/sha/sha1.c
rename to src/crypto/fipsmodule/sha/sha1.c
index 4eb8189..7b44563 100644
--- a/src/crypto/sha/sha1.c
+++ b/src/crypto/fipsmodule/sha/sha1.c
@@ -60,7 +60,7 @@
 
 #include <openssl/mem.h>
 
-#include "../internal.h"
+#include "../../internal.h"
 
 
 #if !defined(OPENSSL_NO_ASM) &&                         \
@@ -82,9 +82,7 @@
 
 uint8_t *SHA1(const uint8_t *data, size_t len, uint8_t *out) {
   SHA_CTX ctx;
-  if (!SHA1_Init(&ctx)) {
-    return NULL;
-  }
+  SHA1_Init(&ctx);
   SHA1_Update(&ctx, data, len);
   SHA1_Final(out, &ctx);
   OPENSSL_cleanse(&ctx, sizeof(ctx));
@@ -347,3 +345,31 @@
   }
 }
 #endif
+
+#undef DATA_ORDER_IS_BIG_ENDIAN
+#undef HASH_CTX
+#undef HASH_CBLOCK
+#undef HASH_MAKE_STRING
+#undef HASH_UPDATE
+#undef HASH_TRANSFORM
+#undef HASH_FINAL
+#undef HASH_BLOCK_DATA_ORDER
+#undef ROTATE
+#undef Xupdate
+#undef K_00_19
+#undef K_20_39
+#undef K_40_59
+#undef K_60_79
+#undef F_00_19
+#undef F_20_39
+#undef F_40_59
+#undef F_60_79
+#undef BODY_00_15
+#undef BODY_16_19
+#undef BODY_20_31
+#undef BODY_32_39
+#undef BODY_40_59
+#undef BODY_60_79
+#undef X
+#undef HOST_c2l
+#undef HOST_l2c
diff --git a/src/crypto/sha/sha256.c b/src/crypto/fipsmodule/sha/sha256.c
similarity index 96%
rename from src/crypto/sha/sha256.c
rename to src/crypto/fipsmodule/sha/sha256.c
index c3bd5ad..cd6becb 100644
--- a/src/crypto/sha/sha256.c
+++ b/src/crypto/fipsmodule/sha/sha256.c
@@ -60,7 +60,7 @@
 
 #include <openssl/mem.h>
 
-#include "../internal.h"
+#include "../../internal.h"
 
 
 #if !defined(OPENSSL_NO_ASM) &&                         \
@@ -314,4 +314,24 @@
   }
 }
 
-#endif /* SHA256_ASM */
+#endif /* !SHA256_ASM */
+
+#undef DATA_ORDER_IS_BIG_ENDIAN
+#undef HASH_CTX
+#undef HASH_CBLOCK
+#undef HASH_MAKE_STRING
+#undef HASH_UPDATE
+#undef HASH_TRANSFORM
+#undef HASH_FINAL
+#undef HASH_BLOCK_DATA_ORDER
+#undef ROTATE
+#undef Sigma0
+#undef Sigma1
+#undef sigma0
+#undef sigma1
+#undef Ch
+#undef Maj
+#undef ROUND_00_15
+#undef ROUND_16_63
+#undef HOST_c2l
+#undef HOST_l2c
diff --git a/src/crypto/sha/sha512.c b/src/crypto/fipsmodule/sha/sha512.c
similarity index 98%
rename from src/crypto/sha/sha512.c
rename to src/crypto/fipsmodule/sha/sha512.c
index e8284f1..6e1f79b 100644
--- a/src/crypto/sha/sha512.c
+++ b/src/crypto/fipsmodule/sha/sha512.c
@@ -60,7 +60,7 @@
 
 #include <openssl/mem.h>
 
-#include "../internal.h"
+#include "../../internal.h"
 
 
 /* IMPLEMENTATION NOTES.
@@ -593,4 +593,18 @@
 
 #endif
 
-#endif /* SHA512_ASM */
+#endif /* !SHA512_ASM */
+
+#undef ROTR
+#undef PULL64
+#undef B
+#undef Sigma0
+#undef Sigma1
+#undef sigma0
+#undef sigma1
+#undef Ch
+#undef Maj
+#undef ROUND_00_15
+#undef ROUND_16_80
+#undef HOST_c2l
+#undef HOST_l2c
diff --git a/src/crypto/hmac/CMakeLists.txt b/src/crypto/hmac_extra/CMakeLists.txt
similarity index 81%
rename from src/crypto/hmac/CMakeLists.txt
rename to src/crypto/hmac_extra/CMakeLists.txt
index 179a53b..045213a 100644
--- a/src/crypto/hmac/CMakeLists.txt
+++ b/src/crypto/hmac_extra/CMakeLists.txt
@@ -1,14 +1,5 @@
 include_directories(../../include)
 
-add_library(
-  hmac
-
-  OBJECT
-
-  hmac.c
-)
-
-
 add_executable(
   hmac_test
 
diff --git a/src/crypto/hmac/hmac_test.cc b/src/crypto/hmac_extra/hmac_test.cc
similarity index 100%
rename from src/crypto/hmac/hmac_test.cc
rename to src/crypto/hmac_extra/hmac_test.cc
diff --git a/src/crypto/hmac/hmac_tests.txt b/src/crypto/hmac_extra/hmac_tests.txt
similarity index 100%
rename from src/crypto/hmac/hmac_tests.txt
rename to src/crypto/hmac_extra/hmac_tests.txt
diff --git a/src/crypto/internal.h b/src/crypto/internal.h
index 7ce99a4..162041f 100644
--- a/src/crypto/internal.h
+++ b/src/crypto/internal.h
@@ -445,7 +445,6 @@
 typedef enum {
   OPENSSL_THREAD_LOCAL_ERR = 0,
   OPENSSL_THREAD_LOCAL_RAND,
-  OPENSSL_THREAD_LOCAL_URANDOM_BUF,
   OPENSSL_THREAD_LOCAL_TEST,
   NUM_OPENSSL_THREAD_LOCALS,
 } thread_local_data_t;
diff --git a/src/crypto/md4/CMakeLists.txt b/src/crypto/md4/CMakeLists.txt
deleted file mode 100644
index 59140a7..0000000
--- a/src/crypto/md4/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-include_directories(../../include)
-
-add_library(
-  md4
-
-  OBJECT
-
-  md4.c
-)
diff --git a/src/crypto/md5/CMakeLists.txt b/src/crypto/md5/CMakeLists.txt
deleted file mode 100644
index a37c47e..0000000
--- a/src/crypto/md5/CMakeLists.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-include_directories(../../include)
-
-if (${ARCH} STREQUAL "x86_64")
-  set(
-    MD5_ARCH_SOURCES
-
-    md5-x86_64.${ASM_EXT}
-  )
-endif()
-
-if (${ARCH} STREQUAL "x86")
-  set(
-    MD5_ARCH_SOURCES
-
-    md5-586.${ASM_EXT}
-  )
-endif()
-
-add_library(
-  md5
-
-  OBJECT
-
-  md5.c
-
-  ${MD5_ARCH_SOURCES}
-)
-
-perlasm(md5-x86_64.${ASM_EXT} asm/md5-x86_64.pl)
-perlasm(md5-586.${ASM_EXT} asm/md5-586.pl)
diff --git a/src/crypto/obj/obj_dat.h b/src/crypto/obj/obj_dat.h
index 4905f0d..5f36d40 100644
--- a/src/crypto/obj/obj_dat.h
+++ b/src/crypto/obj/obj_dat.h
@@ -56,7 +56,7 @@
 
 /* This file is generated by crypto/obj/objects.go. */
 
-#define NUM_NID 949
+#define NUM_NID 950
 
 static const uint8_t kObjectData[] = {
     /* NID_rsadsi */
@@ -1811,6 +1811,8 @@
     0x2b, 0x81, 0x04, 0x01, 0x0e, 0x02,
     /* NID_dhSinglePass_cofactorDH_sha512kdf_scheme */
     0x2b, 0x81, 0x04, 0x01, 0x0e, 0x03,
+    /* NID_Ed25519 */
+    0x2b, 0x65, 0x70,
 };
 
 static const ASN1_OBJECT kObjects[NUM_NID] = {
@@ -3440,6 +3442,7 @@
     {"dh-std-kdf", "dh-std-kdf", NID_dh_std_kdf, 0, NULL, 0},
     {"dh-cofactor-kdf", "dh-cofactor-kdf", NID_dh_cofactor_kdf, 0, NULL, 0},
     {"X25519", "X25519", NID_X25519, 0, NULL, 0},
+    {"Ed25519", "Ed25519", NID_Ed25519, 3, &kObjectData[6175], 0},
 };
 
 static const unsigned kNIDsInShortNameOrder[] = {
@@ -3528,6 +3531,7 @@
     70 /* DSA-SHA1-old */,
     67 /* DSA-old */,
     297 /* DVCS */,
+    949 /* Ed25519 */,
     99 /* GN */,
     855 /* HMAC */,
     780 /* HMAC-MD5 */,
@@ -4400,6 +4404,7 @@
     382 /* Directory */,
     392 /* Domain */,
     132 /* E-mail Protection */,
+    949 /* Ed25519 */,
     389 /* Enterprises */,
     384 /* Experimental */,
     372 /* Extended OCSP Status */,
@@ -5334,7 +5339,8 @@
     378 /* 2.5.8 (OBJ_X500algorithms) */, 81 /* 2.5.29 (OBJ_id_ce) */,
     512 /* 2.23.42 (OBJ_id_set) */, 678 /* 2.23.43 (OBJ_wap) */,
     435 /* 0.9.2342 (OBJ_pss) */, 183 /* 1.2.840 (OBJ_ISO_US) */,
-    381 /* 1.3.6.1 (OBJ_iana) */, 677 /* 1.3.132 (OBJ_certicom_arc) */,
+    381 /* 1.3.6.1 (OBJ_iana) */, 949 /* 1.3.101.112 (OBJ_Ed25519) */,
+    677 /* 1.3.132 (OBJ_certicom_arc) */,
     394 /* 2.5.1.5 (OBJ_selected_attribute_types) */,
     13 /* 2.5.4.3 (OBJ_commonName) */, 100 /* 2.5.4.4 (OBJ_surname) */,
     105 /* 2.5.4.5 (OBJ_serialNumber) */, 14 /* 2.5.4.6 (OBJ_countryName) */,
diff --git a/src/crypto/obj/obj_mac.num b/src/crypto/obj/obj_mac.num
index ef19a6d..2f2a557 100644
--- a/src/crypto/obj/obj_mac.num
+++ b/src/crypto/obj/obj_mac.num
@@ -937,3 +937,4 @@
 dh_std_kdf		946
 dh_cofactor_kdf		947
 X25519		948
+Ed25519		949
diff --git a/src/crypto/obj/obj_xref.c b/src/crypto/obj/obj_xref.c
index 7b4ff12..1baed0e 100644
--- a/src/crypto/obj/obj_xref.c
+++ b/src/crypto/obj/obj_xref.c
@@ -85,10 +85,10 @@
     {NID_ecdsa_with_SHA256, NID_sha256, NID_X9_62_id_ecPublicKey},
     {NID_ecdsa_with_SHA384, NID_sha384, NID_X9_62_id_ecPublicKey},
     {NID_ecdsa_with_SHA512, NID_sha512, NID_X9_62_id_ecPublicKey},
-    /* For PSS the digest algorithm can vary and depends on the included
-     * AlgorithmIdentifier. The digest "undef" indicates the public key method
-     * should handle this explicitly. */
+    /* The following algorithms use more complex (or simpler) parameters. The
+     * digest "undef" indicates the caller should handle this explicitly. */
     {NID_rsassaPss, NID_undef, NID_rsaEncryption},
+    {NID_Ed25519, NID_undef, NID_Ed25519},
 };
 
 int OBJ_find_sigid_algs(int sign_nid, int *out_digest_nid, int *out_pkey_nid) {
diff --git a/src/crypto/obj/objects.txt b/src/crypto/obj/objects.txt
index f3990d0..c2ddfbe 100644
--- a/src/crypto/obj/objects.txt
+++ b/src/crypto/obj/objects.txt
@@ -1333,3 +1333,6 @@
 
 # NID for X25519 (no corresponding OID).
  : X25519
+
+# See draft-ietf-curdle-pkix-04.
+1 3 101 112 : Ed25519
diff --git a/src/crypto/pkcs8/pkcs8_x509.c b/src/crypto/pkcs8/pkcs8_x509.c
index 242f911..875b4ca 100644
--- a/src/crypto/pkcs8/pkcs8_x509.c
+++ b/src/crypto/pkcs8/pkcs8_x509.c
@@ -71,7 +71,7 @@
 
 #include "internal.h"
 #include "../bytestring/internal.h"
-#include "../digest/internal.h"
+#include "../digest_extra/internal.h"
 #include "../internal.h"
 
 
diff --git a/src/crypto/poly1305/internal.h b/src/crypto/poly1305/internal.h
index df6769e..079f51e 100644
--- a/src/crypto/poly1305/internal.h
+++ b/src/crypto/poly1305/internal.h
@@ -22,8 +22,9 @@
 extern "C" {
 #endif
 
+#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_APPLE)
+#define OPENSSL_POLY1305_NEON
 
-#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM)
 void CRYPTO_poly1305_init_neon(poly1305_state *state, const uint8_t key[32]);
 
 void CRYPTO_poly1305_update_neon(poly1305_state *state, const uint8_t *in,
diff --git a/src/crypto/poly1305/poly1305.c b/src/crypto/poly1305/poly1305.c
index 77e8046..5c310e9 100644
--- a/src/crypto/poly1305/poly1305.c
+++ b/src/crypto/poly1305/poly1305.c
@@ -156,7 +156,7 @@
   struct poly1305_state_st *state = poly1305_aligned_state(statep);
   uint32_t t0, t1, t2, t3;
 
-#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM)
+#if defined(OPENSSL_POLY1305_NEON)
   if (CRYPTO_is_NEON_capable()) {
     CRYPTO_poly1305_init_neon(statep, key);
     return;
@@ -203,7 +203,7 @@
   unsigned int i;
   struct poly1305_state_st *state = poly1305_aligned_state(statep);
 
-#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM)
+#if defined(OPENSSL_POLY1305_NEON)
   if (CRYPTO_is_NEON_capable()) {
     CRYPTO_poly1305_update_neon(statep, in, in_len);
     return;
@@ -249,7 +249,7 @@
   uint32_t g0, g1, g2, g3, g4;
   uint32_t b, nb;
 
-#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM)
+#if defined(OPENSSL_POLY1305_NEON)
   if (CRYPTO_is_NEON_capable()) {
     CRYPTO_poly1305_finish_neon(statep, mac);
     return;
diff --git a/src/crypto/poly1305/poly1305_arm.c b/src/crypto/poly1305/poly1305_arm.c
index 444413b..6280e2c 100644
--- a/src/crypto/poly1305/poly1305_arm.c
+++ b/src/crypto/poly1305/poly1305_arm.c
@@ -17,14 +17,14 @@
 
 #include <openssl/poly1305.h>
 
-#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM)
-
 #include <string.h>
 
 #include "../internal.h"
 #include "internal.h"
 
 
+#if defined(OPENSSL_POLY1305_NEON)
+
 typedef struct {
   uint32_t v[12]; /* for alignment; only using 10 */
 } fe1305x2;
@@ -301,4 +301,4 @@
   fe1305x2_tobytearray(mac, h);
 }
 
-#endif  /* OPENSSL_ARM && !OPENSSL_NO_ASM */
+#endif  /* OPENSSL_POLY1305_NEON */
diff --git a/src/crypto/poly1305/poly1305_arm_asm.S b/src/crypto/poly1305/poly1305_arm_asm.S
index e16f83b..b75c8c4 100644
--- a/src/crypto/poly1305/poly1305_arm_asm.S
+++ b/src/crypto/poly1305/poly1305_arm_asm.S
@@ -1,4 +1,4 @@
-#if defined(__arm__) && !defined(OPENSSL_NO_ASM)
+#if defined(__arm__) && !defined(OPENSSL_NO_ASM) && !defined(__APPLE__)
 
 # This implementation was taken from the public domain, neon2 version in
 # SUPERCOP by D. J. Bernstein and Peter Schwabe.
@@ -2012,4 +2012,4 @@
 add sp,sp,#0
 bx lr
 
-#endif  /* __arm__ && !OPENSSL_NO_ASM */
+#endif  /* __arm__ && !OPENSSL_NO_ASM && !__APPLE__ */
diff --git a/src/crypto/rand/CMakeLists.txt b/src/crypto/rand/CMakeLists.txt
index f7c11f1..c2b1fda 100644
--- a/src/crypto/rand/CMakeLists.txt
+++ b/src/crypto/rand/CMakeLists.txt
@@ -13,7 +13,9 @@
 
   OBJECT
 
+  ctrdrbg.c
   deterministic.c
+  forkunsafe.c
   fuchsia.c
   rand.c
   urandom.c
@@ -23,3 +25,14 @@
 )
 
 perlasm(rdrand-x86_64.${ASM_EXT} asm/rdrand-x86_64.pl)
+
+add_executable(
+  ctrdrbg_vector_test
+
+  ctrdrbg_vector_test.cc
+
+  $<TARGET_OBJECTS:test_support>
+)
+
+target_link_libraries(ctrdrbg_vector_test crypto)
+add_dependencies(all_tests ctrdrbg_vector_test)
diff --git a/src/crypto/rand/ctrdrbg.c b/src/crypto/rand/ctrdrbg.c
new file mode 100644
index 0000000..2b22f5d
--- /dev/null
+++ b/src/crypto/rand/ctrdrbg.c
@@ -0,0 +1,200 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/rand.h>
+
+#include <openssl/type_check.h>
+#include <openssl/mem.h>
+
+#include "internal.h"
+#include "../cipher/internal.h"
+
+
+/* Section references in this file refer to SP 800-90Ar1:
+ * http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf */
+
+/* See table 3. */
+static const uint64_t kMaxReseedCount = UINT64_C(1) << 48;
+
+int CTR_DRBG_init(CTR_DRBG_STATE *drbg,
+                  const uint8_t entropy[CTR_DRBG_ENTROPY_LEN],
+                  const uint8_t *personalization, size_t personalization_len) {
+  /* Section 10.2.1.3.1 */
+  if (personalization_len > CTR_DRBG_ENTROPY_LEN) {
+    return 0;
+  }
+
+  uint8_t seed_material[CTR_DRBG_ENTROPY_LEN];
+  OPENSSL_memcpy(seed_material, entropy, CTR_DRBG_ENTROPY_LEN);
+
+  for (size_t i = 0; i < personalization_len; i++) {
+    seed_material[i] ^= personalization[i];
+  }
+
+  /* Section 10.2.1.2 */
+
+  /* kInitMask is the result of encrypting blocks with big-endian value 1, 2
+   * and 3 with the all-zero AES-256 key. */
+  static const uint8_t kInitMask[CTR_DRBG_ENTROPY_LEN] = {
+      0x53, 0x0f, 0x8a, 0xfb, 0xc7, 0x45, 0x36, 0xb9, 0xa9, 0x63, 0xb4, 0xf1,
+      0xc4, 0xcb, 0x73, 0x8b, 0xce, 0xa7, 0x40, 0x3d, 0x4d, 0x60, 0x6b, 0x6e,
+      0x07, 0x4e, 0xc5, 0xd3, 0xba, 0xf3, 0x9d, 0x18, 0x72, 0x60, 0x03, 0xca,
+      0x37, 0xa6, 0x2a, 0x74, 0xd1, 0xa2, 0xf5, 0x8e, 0x75, 0x06, 0x35, 0x8e,
+  };
+
+  for (size_t i = 0; i < sizeof(kInitMask); i++) {
+    seed_material[i] ^= kInitMask[i];
+  }
+
+  drbg->ctr = aes_ctr_set_key(&drbg->ks, NULL, &drbg->block, seed_material, 32);
+  OPENSSL_memcpy(drbg->counter.bytes, seed_material + 32, 16);
+  drbg->reseed_counter = 1;
+
+  return 1;
+}
+
+OPENSSL_COMPILE_ASSERT(CTR_DRBG_ENTROPY_LEN % AES_BLOCK_SIZE == 0,
+                       not_a_multiple_of_block_size);
+
+/* ctr_inc adds |n| to the last four bytes of |drbg->counter|, treated as a
+ * big-endian number. */
+static void ctr32_add(CTR_DRBG_STATE *drbg, uint32_t n) {
+  drbg->counter.words[3] =
+      CRYPTO_bswap4(CRYPTO_bswap4(drbg->counter.words[3]) + n);
+}
+
+static int CTR_DRBG_update(CTR_DRBG_STATE *drbg, const uint8_t *data,
+                           size_t data_len) {
+  /* Section 10.2.1.2. A value of |data_len| which less than
+   * |CTR_DRBG_ENTROPY_LEN| is permitted and acts the same as right-padding
+   * with zeros. This can save a copy. */
+  if (data_len > CTR_DRBG_ENTROPY_LEN) {
+    return 0;
+  }
+
+  uint8_t temp[CTR_DRBG_ENTROPY_LEN];
+  for (size_t i = 0; i < CTR_DRBG_ENTROPY_LEN; i += AES_BLOCK_SIZE) {
+    ctr32_add(drbg, 1);
+    drbg->block(drbg->counter.bytes, temp + i, &drbg->ks);
+  }
+
+  for (size_t i = 0; i < data_len; i++) {
+    temp[i] ^= data[i];
+  }
+
+  drbg->ctr = aes_ctr_set_key(&drbg->ks, NULL, &drbg->block, temp, 32);
+  OPENSSL_memcpy(drbg->counter.bytes, temp + 32, 16);
+
+  return 1;
+}
+
+int CTR_DRBG_reseed(CTR_DRBG_STATE *drbg,
+                    const uint8_t entropy[CTR_DRBG_ENTROPY_LEN],
+                    const uint8_t *additional_data,
+                    size_t additional_data_len) {
+  /* Section 10.2.1.4 */
+  uint8_t entropy_copy[CTR_DRBG_ENTROPY_LEN];
+
+  if (additional_data_len > 0) {
+    if (additional_data_len > CTR_DRBG_ENTROPY_LEN) {
+      return 0;
+    }
+
+    OPENSSL_memcpy(entropy_copy, entropy, CTR_DRBG_ENTROPY_LEN);
+    for (size_t i = 0; i < additional_data_len; i++) {
+      entropy_copy[i] ^= additional_data[i];
+    }
+
+    entropy = entropy_copy;
+  }
+
+  if (!CTR_DRBG_update(drbg, entropy, CTR_DRBG_ENTROPY_LEN)) {
+    return 0;
+  }
+
+  drbg->reseed_counter = 1;
+
+  return 1;
+}
+
+int CTR_DRBG_generate(CTR_DRBG_STATE *drbg, uint8_t *out, size_t out_len,
+                      const uint8_t *additional_data,
+                      size_t additional_data_len) {
+  /* See 9.3.1 */
+  if (out_len > CTR_DRBG_MAX_GENERATE_LENGTH) {
+    return 0;
+  }
+
+  /* See 10.2.1.5.1 */
+  if (drbg->reseed_counter > kMaxReseedCount) {
+    return 0;
+  }
+
+  if (additional_data_len != 0 &&
+      !CTR_DRBG_update(drbg, additional_data, additional_data_len)) {
+    return 0;
+  }
+
+  /* kChunkSize is used to interact better with the cache. Since the AES-CTR
+   * code assumes that it's encrypting rather than just writing keystream, the
+   * buffer has to be zeroed first. Without chunking, large reads would zero
+   * the whole buffer, flushing the L1 cache, and then do another pass (missing
+   * the cache every time) to “encrypt” it. The code can avoid this by
+   * chunking. */
+  static const size_t kChunkSize = 8 * 1024;
+
+  while (out_len >= AES_BLOCK_SIZE) {
+    size_t todo = kChunkSize;
+    if (todo > out_len) {
+      todo = out_len;
+    }
+
+    todo &= ~(AES_BLOCK_SIZE-1);
+    const size_t num_blocks = todo / AES_BLOCK_SIZE;
+
+    if (drbg->ctr) {
+      OPENSSL_memset(out, 0, todo);
+      ctr32_add(drbg, 1);
+      drbg->ctr(out, out, num_blocks, &drbg->ks, drbg->counter.bytes);
+      ctr32_add(drbg, num_blocks - 1);
+    } else {
+      for (size_t i = 0; i < todo; i += AES_BLOCK_SIZE) {
+        ctr32_add(drbg, 1);
+        drbg->block(drbg->counter.bytes, out + i, &drbg->ks);
+      }
+    }
+
+    out += todo;
+    out_len -= todo;
+  }
+
+  if (out_len > 0) {
+    uint8_t block[AES_BLOCK_SIZE];
+    ctr32_add(drbg, 1);
+    drbg->block(drbg->counter.bytes, block, &drbg->ks);
+
+    OPENSSL_memcpy(out, block, out_len);
+  }
+
+  if (!CTR_DRBG_update(drbg, additional_data, additional_data_len)) {
+    return 0;
+  }
+
+  drbg->reseed_counter++;
+  return 1;
+}
+
+void CTR_DRBG_clear(CTR_DRBG_STATE *drbg) {
+  OPENSSL_cleanse(drbg, sizeof(CTR_DRBG_STATE));
+}
diff --git a/src/crypto/rand/ctrdrbg_test.cc b/src/crypto/rand/ctrdrbg_test.cc
new file mode 100644
index 0000000..2ff1027
--- /dev/null
+++ b/src/crypto/rand/ctrdrbg_test.cc
@@ -0,0 +1,83 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <gtest/gtest.h>
+
+#include <openssl/rand.h>
+#include <openssl/sha.h>
+
+#include "internal.h"
+#include "../test/test_util.h"
+
+
+TEST(CTRDRBGTest, Basic) {
+  const uint8_t kSeed[CTR_DRBG_ENTROPY_LEN] = {
+      0xe4, 0xbc, 0x23, 0xc5, 0x08, 0x9a, 0x19, 0xd8, 0x6f, 0x41, 0x19, 0xcb,
+      0x3f, 0xa0, 0x8c, 0x0a, 0x49, 0x91, 0xe0, 0xa1, 0xde, 0xf1, 0x7e, 0x10,
+      0x1e, 0x4c, 0x14, 0xd9, 0xc3, 0x23, 0x46, 0x0a, 0x7c, 0x2f, 0xb5, 0x8e,
+      0x0b, 0x08, 0x6c, 0x6c, 0x57, 0xb5, 0x5f, 0x56, 0xca, 0xe2, 0x5b, 0xad,
+  };
+
+  CTR_DRBG_STATE drbg;
+  ASSERT_TRUE(CTR_DRBG_init(&drbg, kSeed, nullptr, 0));
+
+  const uint8_t kReseed[CTR_DRBG_ENTROPY_LEN] = {
+      0xfd, 0x85, 0xa8, 0x36, 0xbb, 0xa8, 0x50, 0x19, 0x88, 0x1e, 0x8c, 0x6b,
+      0xad, 0x23, 0xc9, 0x06, 0x1a, 0xdc, 0x75, 0x47, 0x76, 0x59, 0xac, 0xae,
+      0xa8, 0xe4, 0xa0, 0x1d, 0xfe, 0x07, 0xa1, 0x83, 0x2d, 0xad, 0x1c, 0x13,
+      0x6f, 0x59, 0xd7, 0x0f, 0x86, 0x53, 0xa5, 0xdc, 0x11, 0x86, 0x63, 0xd6,
+  };
+
+  ASSERT_TRUE(CTR_DRBG_reseed(&drbg, kReseed, nullptr, 0));
+
+  uint8_t out[64];
+  ASSERT_TRUE(CTR_DRBG_generate(&drbg, out, sizeof(out), nullptr, 0));
+  ASSERT_TRUE(CTR_DRBG_generate(&drbg, out, sizeof(out), nullptr, 0));
+
+  const uint8_t kExpected[64] = {
+      0xb2, 0xcb, 0x89, 0x05, 0xc0, 0x5e, 0x59, 0x50, 0xca, 0x31, 0x89,
+      0x50, 0x96, 0xbe, 0x29, 0xea, 0x3d, 0x5a, 0x3b, 0x82, 0xb2, 0x69,
+      0x49, 0x55, 0x54, 0xeb, 0x80, 0xfe, 0x07, 0xde, 0x43, 0xe1, 0x93,
+      0xb9, 0xe7, 0xc3, 0xec, 0xe7, 0x3b, 0x80, 0xe0, 0x62, 0xb1, 0xc1,
+      0xf6, 0x82, 0x02, 0xfb, 0xb1, 0xc5, 0x2a, 0x04, 0x0e, 0xa2, 0x47,
+      0x88, 0x64, 0x29, 0x52, 0x82, 0x23, 0x4a, 0xaa, 0xda,
+  };
+
+  EXPECT_EQ(Bytes(kExpected), Bytes(out));
+
+  CTR_DRBG_clear(&drbg);
+}
+
+TEST(CTRDRBGTest, Large) {
+  const uint8_t kSeed[CTR_DRBG_ENTROPY_LEN] = {0};
+
+  CTR_DRBG_STATE drbg;
+  ASSERT_TRUE(CTR_DRBG_init(&drbg, kSeed, nullptr, 0));
+
+  std::unique_ptr<uint8_t[]> buf(new uint8_t[CTR_DRBG_MAX_GENERATE_LENGTH]);
+  ASSERT_TRUE(CTR_DRBG_generate(&drbg, buf.get(), CTR_DRBG_MAX_GENERATE_LENGTH,
+                                nullptr, 0));
+
+  uint8_t digest[SHA256_DIGEST_LENGTH];
+  SHA256(buf.get(), CTR_DRBG_MAX_GENERATE_LENGTH, digest);
+
+  const uint8_t kExpected[SHA256_DIGEST_LENGTH] = {
+      0x69, 0x78, 0x15, 0x96, 0xca, 0xc0, 0x3f, 0x6a, 0x6d, 0xed, 0x22,
+      0x1e, 0x26, 0xd0, 0x75, 0x49, 0xa0, 0x4b, 0x91, 0x58, 0x3c, 0xf4,
+      0xe3, 0x6d, 0xff, 0x41, 0xbf, 0xb9, 0xf8, 0xa8, 0x1c, 0x2b,
+  };
+  EXPECT_EQ(Bytes(kExpected), Bytes(digest));
+
+  CTR_DRBG_clear(&drbg);
+}
diff --git a/src/crypto/rand/ctrdrbg_vector_test.cc b/src/crypto/rand/ctrdrbg_vector_test.cc
new file mode 100644
index 0000000..7c93861
--- /dev/null
+++ b/src/crypto/rand/ctrdrbg_vector_test.cc
@@ -0,0 +1,73 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/rand.h>
+
+#include <openssl/crypto.h>
+
+#include "internal.h"
+#include "../test/test_util.h"
+#include "../test/file_test.h"
+
+
+static bool TestCTRDRBG(FileTest *t, void *arg) {
+  std::vector<uint8_t> seed, personalisation, reseed, ai_reseed, ai1, ai2,
+    expected;
+  if (!t->GetBytes(&seed, "EntropyInput") ||
+      !t->GetBytes(&personalisation, "PersonalizationString") ||
+      !t->GetBytes(&reseed, "EntropyInputReseed") ||
+      !t->GetBytes(&ai_reseed, "AdditionalInputReseed") ||
+      !t->GetBytes(&ai1, "AdditionalInput1") ||
+      !t->GetBytes(&ai2, "AdditionalInput2") ||
+      !t->GetBytes(&expected, "ReturnedBits")) {
+    t->PrintLine("missing value");
+    return false;
+  }
+
+  if (seed.size() != CTR_DRBG_ENTROPY_LEN ||
+      reseed.size() != CTR_DRBG_ENTROPY_LEN) {
+    t->PrintLine("bad seed length");
+    return false;
+  }
+
+  CTR_DRBG_STATE drbg;
+  CTR_DRBG_init(&drbg, seed.data(),
+                personalisation.size() > 0 ? personalisation.data() : nullptr,
+                personalisation.size());
+  CTR_DRBG_reseed(&drbg, reseed.data(),
+                  ai_reseed.size() > 0 ? ai_reseed.data() : nullptr,
+                  ai_reseed.size());
+
+  std::vector<uint8_t> out;
+  out.resize(expected.size());
+
+  CTR_DRBG_generate(&drbg, out.data(), out.size(),
+                    ai1.size() > 0 ? ai1.data() : nullptr, ai1.size());
+  CTR_DRBG_generate(&drbg, out.data(), out.size(),
+                    ai2.size() > 0 ? ai2.data() : nullptr, ai2.size());
+
+  return t->ExpectBytesEqual(expected.data(), expected.size(), out.data(),
+                             out.size());
+}
+
+int main(int argc, char **argv) {
+  CRYPTO_library_init();
+
+  if (argc != 2) {
+    fprintf(stderr, "%s <test file>\n", argv[0]);
+    return 1;
+  }
+
+  return FileTestMain(TestCTRDRBG, nullptr, argv[1]);
+}
diff --git a/src/crypto/rand/ctrdrbg_vectors.txt b/src/crypto/rand/ctrdrbg_vectors.txt
new file mode 100644
index 0000000..c866431
--- /dev/null
+++ b/src/crypto/rand/ctrdrbg_vectors.txt
@@ -0,0 +1,1922 @@
+# These test vectors were taken from NIST's CAVP tests for CTR-DRBG.
+# Specifically those for AES-256 with no derivation function.
+
+EntropyInput = e4bc23c5089a19d86f4119cb3fa08c0a4991e0a1def17e101e4c14d9c323460a7c2fb58e0b086c6c57b55f56cae25bad
+PersonalizationString =
+EntropyInputReseed = fd85a836bba85019881e8c6bad23c9061adc75477659acaea8e4a01dfe07a1832dad1c136f59d70f8653a5dc118663d6
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = b2cb8905c05e5950ca31895096be29ea3d5a3b82b269495554eb80fe07de43e193b9e7c3ece73b80e062b1c1f68202fbb1c52a040ea2478864295282234aaada
+
+EntropyInput = edfdb55e77d418a63e4414dfd42225ed257cf74e99325fba26e8f3a4524a71bc80a731af23256908cb4675a9c253ea6f
+PersonalizationString =
+EntropyInputReseed = a9372fea93d607fbbc75a97b7f65f2d4ae8c06bd184981572e888a35c5794d2bb380a4ae04bba27f2efcc9e7914b96dc
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 11b1a0f0bb935ec0c54e089e0cd20832d1f00e7069f30e9ea2e35b7f15ecf0577d0e90035bf0f91ffd9e8a1fa8a507503739afbec19393e02c9b7c230cdea36f
+
+EntropyInput = f253fd442b105434c0f47ba9b6798bc20c8832a142a2a6d965678485a3ac52393528a5e092341d60ad74429f4005f8bb
+PersonalizationString =
+EntropyInputReseed = 600c822b198dbdcd9d13ee25bd4b846e5d8665725eac5347b4cfe7512c1f3fbdc4c51c85d977ca58e9e6485a17c533bb
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 076419bdd354d6a1f1415a0a71bed94db29cad22f0205d983c841874497875a4857404e573545366850fe6eb5286e0deb87ddd63bb3317b4556a82920412aeef
+
+EntropyInput = 8dbf2c37dbbf3862f05af4b32e98edd3d8cd7bd34d8a23daa2d15200daed6e9d238387ba85ddfd35a2986bdf5790e1a7
+PersonalizationString =
+EntropyInputReseed = f67aed05dea08baa16cbb669ae310a0b8e019da0a7fe2762abf684121292186a50bc13d568576ce5d7aeb080e4604a1e
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 69666e65c5623140da35927ec39189fcfda0891674efdcd2a7d6f2628921a37bd49a164590413c04f6090a50336f040b015dd8c45452991bcdd96994c5ecc6bd
+
+EntropyInput = 2fac25dcea5274a7dbd6af112d757b59a4447f5dcbda972666af071c5d8f71583ec6914a1e685f610b8a43ffada0b411
+PersonalizationString =
+EntropyInputReseed = 52f5b1f927c0873ae375d6a6e140fe594fd474a63bcdcd6a98109e32ad980ce534714ec626dad7acd43101415e5817d2
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 3096cf20137eb6f94d9d26a4871eddf10285c6984776847105ca9294aafc68925ad8bd7f36bb68fe371476114649ead11b926f9f0fc1d21c744342ff5c44c8e3
+
+EntropyInput = 4133a0e6ce837125f46f2a44e05c4f64d76879156ea16a1d16db1d3ec460cc53609fa9e4b3081f9dde0b79f00c93ac5a
+PersonalizationString =
+EntropyInputReseed = 4613b2327dc9054f34faf933d62bf7b12ec8b34626c07ef7512cecd8aedcbd4023f26b859a941c5af77ec1e2e02a1d9c
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = be02e94fd18c488741fd90b6980118dffba1cda5bd25aa23d44414392201c5a78c3ea68252f92afaaf540b298d3f80a94818f1d1ca84c2be5f66a46191a7548b
+
+EntropyInput = e312fd67b5009ab1c896ba8f85d53fb29517ed2a26d20a4b9d09505ec004bef5739cc94e7f368989c675eee1f40501a2
+PersonalizationString =
+EntropyInputReseed = 176ec11c0d4462ea26b1bdee41208e3ff3b430de11f12567ebe982c16d709f681fcd9f5bd5309f3f2a9d80b3a426929a
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 07cb9f51e34be38fe1d1c18858ee44db227c1e6a6c2f7d09e9143e87e9e09df0af9a5cb7a183e5d26359509fe619e52e59e3333d3620373d3ae5a008b51ef786
+
+EntropyInput = 3eaf30117135d9167c829e35bd8da227a6302471b649381858085e67c65496058ded0ab176a38b3888f4e3c2e65269dd
+PersonalizationString =
+EntropyInputReseed = df60a1b9fb2f8501756edd09e489fc98a60ed08646f5a2e018f55b71c76b9b7718ac4ae61b41241593829108ddeb0ef0
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 29c4d540354e97f50f3fb1de84eef471192cd76a670de34176c6465523ff249ed5eafe2c09f091f5ed101cf8a971d782f150a2642ed291e850906e29328d6b8a
+
+EntropyInput = 99d5543c192c6a1069bf548d80d678bc42c1f020f0b29a0ceeba424c03f8a8aa38df1c0fe100ee4c1b0bc870b4afa3d2
+PersonalizationString =
+EntropyInputReseed = a0fddd29c792f6f411b5d532fff2564d492ca15ac8b7fe1b4575e9b59806823665ad7ac4e2adcd2803ccaabe87ab75ed
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 3d58e98a1f4beda50f84f773c405d106b28f4be6da2a2942098403843bffa3323c53661a7f072a020c68f55ea2b3a9cf9157b7c4cdff5e642ee9be1f436f9c18
+
+EntropyInput = 2151ba6cf2ed6a7366991e516443162b6ed4e7f8ef2d6c81ec5e5feb0061e20ced65da27847956194dc6177b5e0befa9
+PersonalizationString =
+EntropyInputReseed = 73418efab1c6039145dc6ce09b84abde4ef4f8eaccbac250213bdd75e2a5e8b42ffb1367bd8d1281e3b0051651f78a05
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 5b219cb285c820f3bce52b9eff15afa042de3036f1a52896eab34e4476c28c60127cf8daddce0809efafab03c9269cd220a49f79220e14db9d208311d2a22a1b
+
+EntropyInput = 7c7321b69fdefdece32c45e47cce07a0d599e83ea8ee5781e2f2ff341f292c0bdb848e5ab379771639e811fed45f63d7
+PersonalizationString =
+EntropyInputReseed = 4b04652d3d0515b305f4da346754c0d398c8cfefe8e5c1edacb79cb8396018bda12ad7d42bf86e801159bb62c34fff68
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 379c12dc2c8a884c6f40df5353047d74efbd9c626795b86256abec4a6f42ba26529f19e4b043f53776180c7ab16a3817b4a50c09bb3355234786e714edb9e2b4
+
+EntropyInput = 3a56329b07dffb8bc7761c0c2b4ec4ec3b7ed2513f0cc3d9be3eb9a153e8e1605d9392dbb951e4b0989ef473301f6f57
+PersonalizationString =
+EntropyInputReseed = ff6efb9b946748af0992bdc38eeb15d4991bb610692e1fe53ff828405924a544ee0e4da70aa1d0ae55e7925a58cf5597
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 9f32e40391217833176ca768beedd2839892c6fc17dec5c250f0820c576e4ed615729653515ae13292a2e4aedaa2df74c6535d8c625dd1cab479d3c5ae7bf955
+
+EntropyInput = d550f48af436ae42ea48a8cb0cd615be8db51691b365ef20ed826b28561fbacc9deb28cd3d83655033068948c55683da
+PersonalizationString =
+EntropyInputReseed = 76ea2e732f77b337ddd402e367c158dacc3433feb40d7b4376fb8dc449891336b00841580ea189583ada95cef783d540
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 8433b2ac45da6fdcbeaf3e6f76e66beb5b90a89a9cb197cfbe405ed53b1dd51a42cfc9aec5fe7cf778f88031fb7b15b0874d4d1ea87ef3895848721b34fb1a35
+
+EntropyInput = ce6137f720affd106396d9b66540580ae216d5d7dab48ed2729cdb3e587c7d8da13ce39ea8d9d8c22220a96b74e7ee9d
+PersonalizationString =
+EntropyInputReseed = af9f12fddeef001b08a5993f62da5e7c3aff23f882ae874b9f66f28eca1106e6386dd82f07ae1fb6868f186e2ec4f449
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 219fc160dbc136cdc9a7c3407eafde4639602cc58101c512dfbd85cc26b61fc9a94cdf76f15a1de7a46e36ab64aca3eeae36acd6e3d0b3fe59b75958b3eddd24
+
+EntropyInput = 1accff5a19861164c5d2cf542cf41a789f143c7956518ae158d4449ff0c257a00966faa862ccbb363bcf4aeb31089134
+PersonalizationString =
+EntropyInputReseed = f2fa58209759d84bf38a1656bae655669767a902ade22a830df56b32ef9e1c992335eb4cb27eeb142bfd21b5d31451de
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = f214b4055d182cb258d9e9b61251bebc9bf090db662c4e36023cc156964fbbe1cedf691cd0c3d7db4262fb65a5d34b942f909b0f31fc18009766413523dcaf40
+
+EntropyInput = 99903165903fea49c2db26ed675e44cc14cb2c1f28b836b203240b02771e831146ffc4335373bb344688c5c950670291
+PersonalizationString =
+EntropyInputReseed = b4ee99fa9e0eddaf4a3612013cd636c4af69177b43eebb3c58a305b9979b68b5cc820504f6c029aad78a5d29c66e84a0
+AdditionalInputReseed = 2d8c5c28b05696e74774eb69a10f01c5fabc62691ddf7848a8004bb5eeb4d2c5febe1aa01f4d557b23d7e9a0e4e90655
+AdditionalInput1 = 0dc9cde42ac6e856f01a55f219c614de90c659260948db5053d414bab0ec2e13e995120c3eb5aafc25dc4bdcef8ace24
+AdditionalInput2 = 711be6c035013189f362211889248ca8a3268e63a7eb26836d915810a680ac4a33cd1180811a31a0f44f08db3dd64f91
+ReturnedBits = 11c7a0326ea737baa7a993d510fafee5374e7bbe17ef0e3e29f50fa68aac2124b017d449768491cac06d136d691a4e80785739f9aaedf311bba752a3268cc531
+
+EntropyInput = f963096540d0023d6703e18248755ad16aea91852a2db0dd0f6a414d2a5822f3224ac8b1d47b01aaecc93ae299081d7d
+PersonalizationString =
+EntropyInputReseed = 399ed54bd846de00d42fb1f92d1ade93e81e32cd6ce73825f0bf86179dd46fd79bc8cbbd3b8834e58cc86619e19b08b4
+AdditionalInputReseed = ee073f9f6145d0a7c09a5e4a12d65baeba360bc9b5d7cadf93e7d2454dfde507af37e49782cf8550dd3a548e8cf98563
+AdditionalInput1 = 6a42ffe56dac0b4dc5d84b49698859b3645c920151565bf29f56b6322244bcaa7cd1ebb8ee9936d8ee1d280f547ae245
+AdditionalInput2 = d057c418a758d99a8ee855093da9bc1734a5168a6df9d9c9924e8bb472b5945563d86350dcf3e11aebcbd06a22b9ef78
+ReturnedBits = a0cd72e63f49ce4c1d64e21e92546afced2af268549ef48d3ca88afe4d4097f91a52ecd0e7ad12ec0a1f67dd8c5325b78ee507c0a63cf90d64e9c47862acedf3
+
+EntropyInput = 333a0269eb0fb1d9d1e92f55de9e13cd7e24de64f5f276382d3eb2ff356a66679a9a75d2da31d39a940a09cc85d9d531
+PersonalizationString =
+EntropyInputReseed = cbf504cc473c9a6e66493b71b9684e8df458e65d2cc676e4e6ad43eb59172932c0956d0623134a6a3bba23906ec9da0a
+AdditionalInputReseed = abc86c71ae0585827ffe0d19a9fe97f23cdc4afd67978e553e0669d4635ca1df30250843fefd4d1288f6fbc3bfe04a72
+AdditionalInput1 = 15d15fbe7c060e6811bf47c21e93639c00cdcc562f4e02c88f7e347ec14a2c8410fdb2ddc3dfa62ba9ed1758f12017df
+AdditionalInput2 = fff311ea4c5cbd8ce53c45fe8d8106c28eb06d01ec9d8245c29f95b50b13085a0ec28803d733bd0d8a75193e63e21d5d
+ReturnedBits = fcdb52bb6e2ba8d896973b9284b32af6364a34a2b80b3e3c7684c200c9e0a02f7bc6c3cd32b159df9b98da07a17baab9b0b07eab214544d5c562e454ec643de1
+
+EntropyInput = 86e4c30c5a7dfcca86eda7723930ab3272635f0ad9e2fd70a2d7a69b6a07dc0cddeabffa9c411198e3cb7589cb29d3f2
+PersonalizationString =
+EntropyInputReseed = e1af1c42cd29dd002e10e5839e8b679d3c5192da5e1b655123132ff1ade22b35651ac6df66fa14f36e1832be7a176895
+AdditionalInputReseed = 5f619073fa2e98b9f06bb4676bb972379ceb727e1e8768ef09e532cf3d8fed5ce92a7528eb55ae552959d74f75dd0324
+AdditionalInput1 = 330e316bec4955d907d7d7bf2b7149f0aaf4285ed1a2b7e387376ea1a4e0858c114ec3ddddf7a1edd7c8a29b1f12b998
+AdditionalInput2 = 405911cf7c6779e02e4740fa9737f189370292494c80621cfaa9f7d16d68219e72d474f8d5a54aa8ea8020dff9c36650
+ReturnedBits = e359c3e23315c9c1d69ab2ec96ec3c6c5aad868e58709e101b0fa08c4041248e4d538d038993250d395d9651513514fca5760dcb9970dce53d2d1c2712bc56d0
+
+EntropyInput = d8cc5d13badedbdc2fd41852247a9f2879b0103b4a8186f0a08da7d55453b7484f642a9e5a5182340584d2ca7cd5ed10
+PersonalizationString =
+EntropyInputReseed = 35788b8369fdc3dfd206efb873b5c5215f5b8ecb0541fc0a0e027e868a91053b5d58cc8ca0751e0c0893c868e2322471
+AdditionalInputReseed = 6afcdc760fe62b080f141886b516623971f8014ede86e50d62d307a90cf3512da5fefd37b3932d3d9d86ad0c03447be4
+AdditionalInput1 = 72105702fbf1da4c10ff087b02db764804963fd986de933b757b8fe5a6016e0f2700573925aced85c09e2ad9f9f7b2c2
+AdditionalInput2 = 65f9a3fe4e1953b7d538f6d6ca3c0a73bda2276fe8f80860c07b7ed139d748c3c45db5d96598f77ff863a43977ba390c
+ReturnedBits = 7c2b600c3f550671215b03ad7aebf71086ec59aa4f45cf6b3bac9bba2e108f801f6478b098fcc4e063454cd3f64a951ed70f619866c1a4e70b5c47458c09e083
+
+EntropyInput = 07d14a0d9fbc76a155047a93bc0bb2b578fa7dd75cfe9a44bb8709fe3cc2302fdcc06a9c6751f4602a3a4955c0f38c7e
+PersonalizationString =
+EntropyInputReseed = 8babab6b9f8429f554156da3905122cb48c0b901fb6eaad8df771e8d583ba885dfbad02e47524b1981768593bde88260
+AdditionalInputReseed = c185c45cb07e8c8ba8eb31d3bd48a7c864137c689214c2fb3b1d6d6abcda84f2922a862a0955e67695391d60d6f2d1bf
+AdditionalInput1 = 326a5c9c4a1a2b6fdc369fe2a171bf625dc26e23d1a34faacf59bd33be98ff7ac7f16e485b6da3145ea4db37ee4ffefa
+AdditionalInput2 = de096ad13dcc1ee1449c3a0661edee028603590f087474161a7ab8fcfac896a924e14b0a57aeac17fed676f4b9c7168c
+ReturnedBits = 60911e6e6455bf4d85a4f76378390f6cd537d7cce88228cf34e4a4889adf62a9cc1070dfc39c254e81a8557bb2c350fe3f462199e377d3796ed139117b6b0f45
+
+EntropyInput = b3458c6b38ca70c44fc6c601e088863fafc953c6b5d3ee57fb1a07f3f65dd5e6dc19aed17aa5530913aca598b26a40c0
+PersonalizationString =
+EntropyInputReseed = faa8d3feabf972e482e5a0b3821c23ba067c45267e3715a4c10f65716a348030d7fa5637e9f000b3e47d786c013fc035
+AdditionalInputReseed = 901ef89ea38203b83249a34a1a8cbd0da4773ccd503d60a395be3a3db113613e6c571a49960a4e99d302b6f237f64d54
+AdditionalInput1 = f2f87693d1f28f95b0a6459c538e82be99a8cefe8a2c7ca037822072e63670dd141873f3dc9e309c6ead40783f46794e
+AdditionalInput2 = 93cfefbb7624a137cbd7b177918823893e77251fc5660a76ab0cfaa3b340ae822a8a75365056f06b0a7e76afc39f6819
+ReturnedBits = 5bbcdeb5d7d1ae19e4ef7878abd1ca4f2641d42c765b94a7689172a4e90baae46ebcfa5427a882c1614cab36f186a98dd3a15febc4b23add955f69dbfd5e5d2e
+
+EntropyInput = 6dbcf6f2f3997ed55471f779039982bc84a1c052fbf5883d6f62c0a61db108386e74759d7237bb0efca030aac76bc7e6
+PersonalizationString =
+EntropyInputReseed = 1a16753c195fed27a1abbe067b2b22aff4c49ae7832d18d01cef5ea5c7d5833008036f71e9c77c1629b6f61370b57f7b
+AdditionalInputReseed = ec54395931ac0aea2a8739d4c51e33c8425906005c341db373247e73b968c2c79257cf7ac74353c00fd81a80f4c95b8c
+AdditionalInput1 = dbd6bb5579a10e395b534431f3ab7c8025527bf99e4f7c162d681f8d35a56f6a03729f07ab43897ad0e80146044b1614
+AdditionalInput2 = 5d35742c25620bb795eae41178d7fc86d9cbe050ea702573ae6adb61e16c411b7445548dc535d57371bb11e2cdd59597
+ReturnedBits = ba3905bfddcabf6dae311d1fc19fff1f6fc1ce779e38f864b7ccd2aeb1b3d6ec1845305c29d39b8736b3977277ecaf5735d0e4acefccf7778ac3542af815fd41
+
+EntropyInput = 3a9e8099007c67f6e5f98525cc4295a68c5d5135d01f5f66305c7048ca02525caa3f790b2d12a8520e9963a9cdd597a8
+PersonalizationString =
+EntropyInputReseed = 15993dba9775db8a5bf79778a316f2910d4dc0be59c3b21c650e3aa89c8c89b33fc69e9e5d642e7fee16d61b691de2bf
+AdditionalInputReseed = 946121bae27e5804daeba0d7dc7ae0c1c397bfab106e13b8b7c5462b540d147119af5b7c4f9c198161e5aa9be34e2d28
+AdditionalInput1 = e9799421e75bae7086731a21242dc101c93b768fc747734a357454fc0f7c082cfdb79b8bbcea2d1122d89316a7bfbd3d
+AdditionalInput2 = caa04f94b4b9d694e2c4bfa1e8e708b9c00d9c3d645243acfcb879d2e2ba723d9e48908738114eab7d15f8cf36b043ae
+ReturnedBits = 9bd50f3c5384eb28d931f03a64eb97ef140e1e81f4c1d9c910cd7d79a40494e1fcc53d82cd32df35d53b05a450e54b7ec71e28359c1273848e5ab117d5ded88f
+
+EntropyInput = 7f2a0213de6738ec62bedab769a5f01732dad2d35dd4cad7a765dbbb6f9101f57b65ec8fc4e23fb3479ce6211ca3d84e
+PersonalizationString =
+EntropyInputReseed = aeb097e9ddc4dfe87874ddb1a856ec3d00fff1b38c8f954681c11e61bac8b6b2e2d8d010e6820f9c4d807b295acb8ab0
+AdditionalInputReseed = b33ad3dec7d529b71e39d59147f79b4884039d1112804fe8c70e174fdd9828c06a4d44d20aa5fc1918c3ee8082a2bf93
+AdditionalInput1 = 8632d221757132bb7b883b7dc26755f62ec2ffab0876168d11ea7b92774c15c553b11320393d64a2262133608ca92a18
+AdditionalInput2 = ccaf3bc3ae9cdbfa885aa8414c1f823c6a3ecc020b619201a52ce0b7516ba1f49755c450c532bfe11c06b9d0e049ccae
+ReturnedBits = 4b1c065a288e5eec56b67fb341e25fc7521b794b52b94f9570bdb16583bb6f7a780aea5297496355ffb4bf5a444c277c96394619cc33cbb5a3b2a9f49b00f9df
+
+EntropyInput = 80773d0272ff48ba84b98c817365b097f21258624d0de8529381977950a5e49ff2b79d0f2522269970ea6d484198922c
+PersonalizationString =
+EntropyInputReseed = 9b101ac018be88da3611a236dfb1300c0049947e9f6ebef7a3ad6e1499efeca0b142826fa06f427e271865232a18dd29
+AdditionalInputReseed = a67ee22453dcaa5e4726e3084872145ab60489bcb6e83346c108f3efcce5b3d988b84d58786658d87c2dc3b9035e9d88
+AdditionalInput1 = 546515bf86e48dfb2b4dd21c2b46f10c1e797ab799b51822e8e7cd99ccebcca00b8899ef6af5cb395168aada9056a6c9
+AdditionalInput2 = 57bedda63fc5f792a608be111141a12e522496c086194515909bddcd868be997e718e7c5899e28dd6b123cbcc3f2a8f2
+ReturnedBits = 4075461e459f15cd32030551be47528223693c2f44e32443cbe9271eefe74fa0a6e1ec04f4b8f41d7ed6c5f455281a3cba56d952b08b7753f6a3d7da3517317a
+
+EntropyInput = dc132c15af0e214d1b56eb88849e96b81dc17f238eb3d1bb9a659219dbd77eba38ca2796a8011e29cfad76f8cbbf099d
+PersonalizationString =
+EntropyInputReseed = cba23d4fdbb6c11e38012b71ca264bff9d1264bb20a39bb27d86dcdf7d72ce7a4f5c124cdf2aca6aaee20832495181e6
+AdditionalInputReseed = 07e043add7cc14612a82926c09934dea092f4618cce25674972b1f50b2907c7e3d40a25722ea49b0c7ceb6b57ff2d870
+AdditionalInput1 = 0017ff834967cff8827598ff6c00a9c97f0347c34f2523a85dd7d18ff5575756c1f5383de50338d0ab0505841d70a193
+AdditionalInput2 = c404dbc3cb0851b08530f96500f5a2c10d8985c82dec2ba31d4199fd07687ccf124382fbee3fa119938f0c72ac586102
+ReturnedBits = 1935cce86bde7087fcab30b5dce0e072ad741c2f281902e1801e56c08ae8b256d27514de92dd48a838ca426820002c1206f86cad37cfd99d3a935e05f56a7507
+
+EntropyInput = e48495930a7fc86ecbfad807d40ca84ba35e346c812090def8f44d9e48b0a40704ac67ec80ae15b12e858ae85a7ed9cf
+PersonalizationString =
+EntropyInputReseed = f4735954d17e99077061c9604e8f1734d61dd662e54e37256c0f8bf276e025d59d21cacc0869ededb44a2aac9fcf2ccc
+AdditionalInputReseed = e796322fc0ef503251f6d4bd72dc5ea8100c5a59f1a4fe4837fa8eb2623bc650a0cd48c306f139e0ecd169a51deb2cd0
+AdditionalInput1 = 1c844d24b7cd9512e5035bc457612ebf6d3df6867aa909038bcbc1f474f7d0783ed474e34525a817bea1fbc883961e31
+AdditionalInput2 = 5c5671ba79bd0b83f74d0ed98e9c8b369a2de34188d8b7cada20b3363738d1252ece1e6a26d007acdfc5b6108412766a
+ReturnedBits = 40f17e2bf6084a6447f2c40d601e16a43098dadd9f9614d518874623e8e684438c02e127e582b000dfd46df03dd5435edc4f0f47098320fd311afdbb8542c4db
+
+EntropyInput = df4a888ec7363fadd99ce2223ed39577a41bc220d20b253f98dbfc617aff8fe4ac66e5da1b5097228422cf8242baaf53
+PersonalizationString =
+EntropyInputReseed = e16dca80b2061706e8180dce8f59e888f150836a0bbceac179a4b8d882eead78709ed9951102728abbbbf9226a2d913e
+AdditionalInputReseed = febc9f6b9f2b90b4320d5d41e5c5506fa32b164d86d5e7f91d4a360fe179c127bd2bdeb78fe760174e856a5e04ed898b
+AdditionalInput1 = 0aba74cd299e75886c9e7e5293e5915d720da2c8c1cca7f0e1d6f2b672b4014eb4582e97a877121c87956185736ba0e9
+AdditionalInput2 = e451eac802660ac843fc72b66d59f1e1ca831f22d6a361929043f7626f1d82133f512fb1f2d8ca51004f80ed600609e4
+ReturnedBits = 968b708ed6b54d2e5a66d46f22998748dfb5cf47e817732a40938bf3593fb251ccf8f2076837715d14b316bfb52560135602ff98338593696bf80a462b214c4b
+
+EntropyInput = 43bc561c4dd1b904a5333a092a670d0d1b61128a13be2e538a329094574819284e414b938dc8b1860b385c293c03010d
+PersonalizationString =
+EntropyInputReseed = eb362136f4ccc9e302505d525befbfa99d8c3336187d5902b03ed75641913ce973743757f97dae9366874ba62bd87013
+AdditionalInputReseed = a901f4daaa638804177a0b263e8cbc81688df3beb218b02316da83b729230a9e5112fb3896b727298755bb9ac6b6250a
+AdditionalInput1 = e33d181f3159fb0874eff5ef8ddd2b51a60b13ccf046f7e637ed27bed81bb604277f7345e6b8f0e09f925793ce417fff
+AdditionalInput2 = 3ecf6233820e6cceddac7b024c490c5ee14c73d5b598c92cda30940471b6ed450019120689aaf157fd87b71b13afea25
+ReturnedBits = 9d793dd96b870dfa0267623bd1c2d8bd3e2c63e9f211340f630fea01358011394154145a10659c4d98274a525c48a90da0126a99b85ed5b4b903195f0dddc762
+
+EntropyInput = ffad10100025a879672ff50374b286712f457dd01441d76ac1a1cd15c7390dd93179a2f5920d198bf34a1b76fbc21289
+PersonalizationString = 1d2be6f25e88fa30c4ef42e4d54efd957dec231fa00143ca47580be666a8c143a916c90b3819a0a7ea914e3c9a2e7a3f
+EntropyInputReseed = 6c1a089cae313363bc76a780139eb4f2f2048b1f6b07896c5c412bff0385440fc43b73facbb79e3a252fa01fe17ab391
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = e053c7d4bd9099ef6a99f190a5fd80219437d642006672338da6e0fe73ca4d24ffa51151bfbdac78d8a2f6255046edf57a04626e9977139c6933274299f3bdff
+
+EntropyInput = f1e0d7b1ac7e4e155bb588500f57d0c59969267ea5427e2d7fde1f9c54e67b7f6562bfc1019b8b5799d2a833fdccac79
+PersonalizationString = 86da37245d9bd1fb59a4bc7abd289ea2999258042c5fa696f2da7344bb6ebc5b770ca284bfe642570b52ef47b780d5c9
+EntropyInputReseed = 9c2c9c07cab12cf50f8846148034a416c83366c1e20776073751553cae69da8d1f6bce6bde27087659d69a62e2ba7c3c
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = e0ac06d7eae89469b6c14a31e7f0464ee21f7b30d2264c2de3e435cb40d0e5043ee13dfbc0342156750880b2d5dddb3bebb43b162a8478235c8b87f96d0284fd
+
+EntropyInput = 1dbee767e9916ab322ba461fbf9f7515cfbcb45944a7b471577da087690d94d967018b631e0c1f64da3c805d049f449a
+PersonalizationString = 966b5cd94019d4d90b48ea7f540a698cfe30d7eb25f5f7e5fe42d9f53ebed6e94e733b0794fc6bf30627911e20cc18e8
+EntropyInputReseed = 96e828128f183c76c90ec8341a43561368b77114048ccb05db66128d54c9539d1adc1d72f7fb0950e41b1343a9e4df76
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = c4d3f5c55d3979b174020650ad7a46b423ec446dff2a9e9fe0a782bf65a72d5fcb1896bc1092a8c73f41295e2e7044434f88aa0aca78f7eac40e322cb7c25563
+
+EntropyInput = df588bff3a1fc97a908067da6a7fef08c889ac29ad7d639bd047157bacab4dbdee3dffe575f37d071af94cbd7628d398
+PersonalizationString = 548715cfb28c1bc56453b8c39e24cfd64077c0f6e9d959d51b9f0667b97d3c4e1a179d1a554df845b24c26daec85845a
+EntropyInputReseed = f8c165b5ebd8347a2ffef2218f993877027e977598b4fdac2f65d8d994c7432900f8407ab5aed1885dee5aa2458f5998
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = deed18220bd8f72a34559924f3cad925ee717690f76bc223d5ffeebbb554b61b9d9eb6ac5697b06331e236672677e2e01d6e3fd581a4fa1ebad289797b68955f
+
+EntropyInput = 98555093e443fe8e2bc8d2eb4d3a7abb8eba00b25683a6b31191fff7c043665ec2cad3e99e55bbc241b8edc699dbc9ed
+PersonalizationString = 5627a0a55457db05e3903d4b69ce15f55f933168d6eb374c044e8f1040f61ed7eb24f87f91c68cde050f504b8965dd81
+EntropyInputReseed = 18d17e1b68378801f83e7aa9a6d4b84d3960022c740e6c845869a5db553d2e02479cd92f3c0d8abd3e92fc9c9fbc6a3f
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 7a7f0ab07a540b4e9a3eda3f8bd1262015d8ea6d512dbea05942421f5a73242ac236009ef083bf2e51b19c40d1a019367a6b96fb52d254e4d881550aef0549ed
+
+EntropyInput = 07793bac6461f23e5eb0d1bc60b5f735515458d1530540df1c8e6fc5c3ebfb06b9db60a8947eb629ff7a375fe680d696
+PersonalizationString = c1e2132b77b6c15742e06e856c1549c4ccebd1b2eda93e2c43391b52cad51490fe34157f57be9eb4eff463b059986680
+EntropyInputReseed = 23e47e0c41462f7c619bbcd5b73f9ab1c68c7cdf1ec92c4c37126402958e110e329107742e70db611b93974c393936a6
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = e6dab4a887f48ec33cb293ffdab5fc69595f94c72c5a9bb43f468f75490190b7e0f14f5c04550cb62a6d0ee0c3d834be3434c8229c124087bb985a06b9a37267
+
+EntropyInput = 25cefa0512921fd4a3a4e5e7c48c6201185a6968419ae5bcc6667bb74c35de4f91988a33f25ea88a8443c65643cc73dd
+PersonalizationString = 07ddf125960c346680b4b361c0a9c6dc1008a85ce1861b45ff18907e6e7db41b046e5f016617e6c5b0ceb5575ac278a8
+EntropyInputReseed = 8cf41e5413b0c8ffacbc4dfc119f10b47569359b911448f45c7ad63dd58e872410c25176b986fee8b83966d0098d996a
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = ab58ec5c35600566dd2ee187a5b67dfa65bebe13333670d2a198fa5af0c20294c6cb69d37564d2b2587ea5587e12341e77f47f173d6cc9f9b9e5dedf0ee1a8d0
+
+EntropyInput = 929f1dec0a6d14de483a2fe114a430796d0b449fca56a4ddbbe661bdc26a8df85cafad7b677ccbf1fe4cb0d5e8cb57a9
+PersonalizationString = 0bf8c590a66653c0494750d10274b583d86e540b517bfc23bb3b0c9fde373e456558468603c2115c97d3662e6825f4f2
+EntropyInputReseed = 84030628534b7525dbd4023aed1ab08c4f2b86a7c2fa3bc9559b425cce07c34fac14e963256aea03f74f1122a7a30483
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 199f2dce5bbe32c693151a216fb36ccea7996c313f6b78fa30ad812a0e603965023fc29706a71b753d79244cb9e8fdaff467e0f963426b10ad89a98e987af316
+
+EntropyInput = 7bc5d970186b9e1b0052b7564dbabf61c89cb3d64ff42f9a62d625112aca0486cdf0336c3612254b40cbfba83ab65b42
+PersonalizationString = a25326fef30f9c94423d99759a1ee575536a9715df9526de9a0b8dbcc3a2234cd835615f5dfe7823927355f569ec6f02
+EntropyInputReseed = ef8a0137013be212402e42b28c03ed6420881aa38b3a3e6e90a861116516df1ef732a19e8935ffcd9be7a2fc236783b7
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 29f81ecf3f41d278c01bba9af9bc0fe6009539682f46723ce5b0ff75fed217ad71580b5dac46289e324d824094c332c3955c528257701a14ec2bfecce4f62a6c
+
+EntropyInput = 0c841a245a19295281163b07541590376d31d86a9be99e66cc22352dabb29f95e113ee233d74d3f2b7f2f608830525f0
+PersonalizationString = 28d3581054d87f153aee12edca47bad80bfc9b066ad1e8b9d96c851dc7b8ed768cad007b891d1c9447d43065b483d085
+EntropyInputReseed = 587a1dae75c2a1f2dea7fb42ef7bf38646b76a964ecd7043d8b62fdd9e6a5c007882f02f78fd040561d15a337e59f257
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = ba7bce080963fe2b4e8f0e1aa700e92b3908e18dc78728666904b0220e4077fef2cd18bbea29a2755a3499798cca445bb75269a5adca2f291dd3875457c69a89
+
+EntropyInput = f4afddabe515ca3e776730e7d44461b27e8f72407ca398d3fb578365e09ea8c24d6c4b09724907a610d755407d38667f
+PersonalizationString = 846bcbc7014ca8c6fb042a80d4a8c3aa50b6c5eff15e4b12f966ab17e6514cbb22fb2eed628ee5c2a8acde821a956078
+EntropyInputReseed = b2aeab1165b150908c9bb52c2b7167c149ea4fb4710edc8acfbc63f7652bb552d636a7e6fc3d1e74d3f65461baaac087
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 2a0335c3caeeec7c797f99fbc145654d3985c3c71025c8e4bd4b098801f15d21c272420417d805b0ad1ce68f904502a46130246315957bc07a5db4f3447a84e7
+
+EntropyInput = 6942413e05ac487cf539bc61aa6866ef8cbd9d0f15e1385f37bba5a951a29fc956d46f8740603af7c71800048c8312ad
+PersonalizationString = 47ebb16c24bc17ad179e6730407526187cf9332c172ae56037aee471a0dcfa766fe51808c0a47fd06b9e34bded006c8b
+EntropyInputReseed = d8275ad1545bc24e77213ce1dfa480d3b7a56a2d5f26c1ab345f9f0ac712ad004b0f6f033b6014c0f78069f92840f62b
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 1b74cfa6344d294ec3ac8002c510b86c0b459cf7823aeb05336a20c1355a3193966fdc8ba8f7cc1371c9c70a9f7ff553c4c6dadf23f2cb08e4040af51f172ac0
+
+EntropyInput = 9c14646d104785546c4cf47396ff1ccdd26cc0cde8c20b5aa64aa0baeae87b58f348914081a1b31d9ae083a0b3588aa2
+PersonalizationString = 2476edda7543edfdd3970ae9b27924424955b9588011bf7eabd96456ffffc4c9a08e6b814b7da32d680c2575f9b89e66
+EntropyInputReseed = 04154128284836621bbe445148f71e60dd8421327a0fbf7fce07d6f40a88cf098d4f775fb78155e7e9095a1f635d265f
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = df70ff84c416964cec9231c308657f918124b75ac93eec8083e76aca89f92a1c6b54df3977003175484bcd6fd5ab5b4a902d775c32ddd8bcf2359b660df1691f
+
+EntropyInput = d20464faf411c7d84e673cdb7058d0451be60a4c54b419ec60cceca757fb97dfc4f0b91e66b35295d68e867463496944
+PersonalizationString = bdd2842555cb7a3ff2ce2743b6c7e3cb465ccbbc044fc5c2faf35ee99413fd1f87915704cb82fcd62c500cf4fd5a430c
+EntropyInputReseed = ce02ee2c647dc9a455322a142b9226f96eb53c2a99513a7ab349db702cdc55c88125f4ee5aa82a214796b2dae6209138
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = acc5fd672fa83b2daae703bacf218c98ac29d0751d9d5c9b7bc68582fbd593b1a691acb125bef3c2edc125f9b73ca3391958b3bdd8007fc50422cbf89b00ca05
+
+EntropyInput = 44927d98e9c275ad4d07bda6b4c62b29fe562927fb1ee718473b3c74b9b2189a133c11aec3607d39d623ef35096a055f
+PersonalizationString = 8c40c5317f29b64da7f4025cda90ae3e99ba1ed350482048f8411af8b694a99272625031716c090f68c0fddc7a701e0d
+EntropyInputReseed = cb7933c3c803644d4ab7c35b941319bebf6784f98c04754c69359e10c9693b57ae12e38b08ca8a9f0f15142c4476f0bc
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = e95d375c7b3354190721d598e8fde7aef16fb2a9dc963ed76eef6a12abe2001622725a8e1545c73c9a85995e6b07806e2ac39b179b595bcfd96b2189b5d10497
+
+EntropyInput = ae7ebe062971f5eb32e5b21444750785de816595ad2cbe80a209c8f8ab04b5468166de8c6ae522d8f10b56386a3b424f
+PersonalizationString = 55860dae57fcac297087c137efb796878a75868f6e7681114e9b73ed0c67e3c62bfc9f5d77e8caa59bcdb223f4ffd247
+EntropyInputReseed = a42407931bfeca70e6ee5dd197021a129525051c07468e8b25587c5ad50abe9204e882fe847b8fd47cf7b4360e5aa034
+AdditionalInputReseed = ee4c88d1eb05f4853663eada501d2fc4b4984b283a88db579af2113031e03d9bc570de943dd168918f3ba8065581fea7
+AdditionalInput1 = 4b4b03ef19b0f259dca2b3ee3ae4cd86c3895a784b3d8eee043a2003c08289f8fffdad141e6b1ab2174d8d5d79c1e581
+AdditionalInput2 = 3062b33f116b46e20fe3c354726ae9b2a3a4c51922c8107863cb86f1f0bdad7554075659d91c371e2b11b1e8106a1ed5
+ReturnedBits = 0d270518baeafac160ff1cb28c11ef68712c764c0c01674e6c9ca2cc9c7e0e8accfd3c753635ee070081eee7628af6187fbc2854b3c204461a796cf3f3fcb092
+
+EntropyInput = cc1f1e4f22c7d78bc7a459834522e85a09bbf6cddcd3737ef98ff0de950bf2899f6c27b55a050baab0302c0144c432f4
+PersonalizationString = 49d895ca0db6837af2faa650884475e800e72005365dd8c97ac55bbb824c4209903ba440b0129c9efc420b4dd74e56cb
+EntropyInputReseed = 001cdf1483bf3fa17dcab30e40fa900a4ddd78012a62c69d847c51090e0898f15f9a3e7efd5f5fbf380c95791db9fcce
+AdditionalInputReseed = f87d37599cc79460554affb532dfad3393a3f925cc119ec3c7fef178b49adc838a38f395091add5e78a9733b38347168
+AdditionalInput1 = 9f0db48e5a148570d15232f568216216eba4fccc1c52a1e73f197a5e1625e45da8369bb29afcdbb6cb3188a9004bb47b
+AdditionalInput2 = e7bb505a8196428faa5c40c6dd9b8740c2469ea5eba1b507227833a16e96fb2e8d2eb227368c817ccf3ce785ed3275f0
+ReturnedBits = a3eca2adeb14d306df139f280604980207229f7d72806e9e2f7b916078de0e09f1a7b2cac41bf01812bf80c1b13cd22744adce23e1e2000146c6236fb67a923c
+
+EntropyInput = e43943df12f899fe7fbe1e657d1b3d22f6371b96e07ac89a82c156c1e28bf33922f8d1316d524cdcb9af349c14fa2308
+PersonalizationString = 0e2c55b023d45361c4e7c50aad6b0b97a19fe703661cbce3a74d29f1319f048ddf00e01b6617a3ab643c1c6e39d7420e
+EntropyInputReseed = 35b7f479071271b61d075b0c0be3e0d10cff77d975492a93a53cac28c5dd6e9ffd390a1e651f0bb3ee688b77b8203553
+AdditionalInputReseed = 45045c97d7118f75429c1426a4e16a435988e334e4e066bd8e2fdb8bfcfc783e32f7ce81972926b3e1b42e5b7dfe8eb9
+AdditionalInput1 = 56bfee26285152a11483f7ae951cae3b80eb11a13a1370fd10d6a5e259d84bac37aa2cbb3c7577f392d31876c3ea1051
+AdditionalInput2 = 8ff69acb968b1bc3bebb71fac820b0ed44513022a30af46465dbd0285aabf1c51f9d80acebd3467989dddc9ba3c1c491
+ReturnedBits = 1e77b4ccd61c11732f2c6f0f060e0fd03c9e1734c1ea1ec980490a1d9f5b003629aaaf05405207394765ba420994ea694ffb3fb1e5d1194f5e2ceafa3fc4e3bd
+
+EntropyInput = 0d94c5624352e44f8426c77a96aae94094ad1498c43a501121f7788a356b1b02a16abc9248375a9974eb7b3caf3cb309
+PersonalizationString = b665eb6b67f213968a35b2c006ec99a4fd935c79bcf5a7e0286793c113ed18d475e2904672ff709a4226f2ab451f20d6
+EntropyInputReseed = 3847e83734d3ba20b9036ced968267c91965e3b4bf6a95298aeafc771cd72040ba5fa8de47e170374eedeac3619e3970
+AdditionalInputReseed = 8aab0554d39c30ddbe8421c0cbbd2924e5c5841e9194dcb41297ea54abbc49153f10a7aeeb878c01659f4073124bae25
+AdditionalInput1 = 4a6b0e63f6cbebf0636145c9424af07d1b36276d214592f825965ce80521966a8a6a7d1a58074772131d6b528a7454d0
+AdditionalInput2 = 25cff55c776047583586901c1f730de3d86fb912c40694b0926cfb6ece1996578af6f15c35f6b2cf82adbd4bf6e0b3ab
+ReturnedBits = ec7d74074d8183a0df885c28c1001f80fe00977584c8667ded0bd3630f554489990a94ab40ee2f01d9fdb4e2d0f7bb0e00d41c6b6c568ade2c2394a2b32a1f14
+
+EntropyInput = 86b4437092cd13f427431ff7b55d3b9fd87326415fbacbd66eeb6c43a490c0fe3398837776788f67727d632a603bdf2a
+PersonalizationString = e236ba93937034ae24f18f4ebd134179a35d2569cf2baf0af430547bc5e2ec4f6db336bfa88d181970675875e5fbe1ab
+EntropyInputReseed = 164084c70f3bbb159b82f13ed3d813fa7a07756a96037be06b55611d98fce609872e65507b99b503b0959cad84372aa9
+AdditionalInputReseed = aa7ee7fec74223dda7304e43aefa8ceb5144db04d98b7392ab097005a3a12387ee1bbe3662a0bd277878855ac892dc94
+AdditionalInput1 = ec19a5d7d66a6034ef83ffdb24ac54e9d3d38f0517ed7edbb9a3acb648e4c4b02f974875cd3149b37432ae5d3b0d90ee
+AdditionalInput2 = 98ea0624bfc95d0c0f7b810c464ef22e94c12392df5414cf6e6201c2d7db2e8570f09541334db0f1358b5c0fa2cf6d77
+ReturnedBits = a27facdbdbf49e64b55390beb35260a0713ab913d7e5a08aaf01e83cc94503e32d6a44a770f7a9ef6d3a9f96d3a33859d568dbf3e856fd91177a05fbf99dc4fb
+
+EntropyInput = 1a77f33bfceeadf68b79dd40ee856e9e0668059179783fa73d91f588eff242bce11dc66ccb90310b291f4a963f2a96b4
+PersonalizationString = 98435fc821606772894e46c55356fa883f0afb1b1f4ee40fa56cac09ccbdc38b7d3a3fb2571d2fcb9eb5918b60c0ba3e
+EntropyInputReseed = 6b0a37515249ab5e26605bd08cbc7f5523f4e552f006faa7c2433132c0a45feb875c8801ec35454a1eb13604efdb3325
+AdditionalInputReseed = c6ba05b7197e06f11b35a7824f6b8f51afe1d6cd80640697567b934daa62acbe731ad8ba2fc78217decec4cebd46d522
+AdditionalInput1 = 2eba463e52ff2a180aad3493e9476a4b972bf32c9ccb13efabf0624f1c44df8048c8c6472f73fdaa60127e669a432294
+AdditionalInput2 = 25110798e06af473013a2a04f359e15fdfdd0306b8b928985f67872bbaa44cef5793ac14d6a99d05d2c2692d08d5e396
+ReturnedBits = 927902f75f10c5880f0d930ca6c36a20c7e4f2535672714f96bef72d77b0f8718e4546e4e3fa2e7b245e4dedb7425ea678a18edadc90ade86bc261992b02bd9a
+
+EntropyInput = 4fada58a9fca48a9572cb9fd1de380a2d9e039971487ad53a5f8c8641350d05432dcfb683131380d35cf1c6d474e4f3d
+PersonalizationString = a0b453b3f86b455c02d27df347775366ae01466c9aba27d51c75928ad1f31b278bc0e4052ef702d995f302c31394f943
+EntropyInputReseed = 6cd3b9ec6e0dfcfc3caa90ad2812d09513310ebd9506064d05a59d68a94405388afa313518a7055e29b2e2fc52a9a988
+AdditionalInputReseed = 39aa041c27cd50f6d4356d7bf90243ba4f6964348a882ca50330c6f398f0b8992bc3c6da90e0cd57077aa0a9da48016b
+AdditionalInput1 = c6e342a2365afaf61da40a91fe6ba950b0a10a05cc68f5ffde7cb12ca4650ffab8178b1fd6eb07c6e369b2ea41dc2adb
+AdditionalInput2 = 755c6210636079ab966fa29568975de980b0e5dbe4ea1fc1d3a86e217ff6b57dc04d7a713779e929d4227757161e1dfd
+ReturnedBits = 02a600e072873e396ae4df5d7119dcf00c256bdba76808419a50d41036bee15fcd3d6fbe03f225a4870386d44e735af51ce414f5c703ee9db516b562b412bbc9
+
+EntropyInput = 8598996f8b6adcb8ac644d7384eb95bf6f9529ac0f3dabd238855e6d4545c43b85bff29976d67cf1c97b4b33301767b1
+PersonalizationString = ff207a4f36eb9daedce0acd99e63913c16c368b467562a92ea2c47cc4dd6b5c9b637691d6d07f61c05f4b86954a2bd26
+EntropyInputReseed = 5a748c44bee475862db1e0d1d49679e934b03a5a4b199dddcb5e6a91acc01263fdc8eaabdf7ae0fb7b752b20731b03d1
+AdditionalInputReseed = 9498d3a665f78745d65a04141420cb5ca1389c154782fa10174e484cf7bf27f8292bad48956e2a16dc80ad135379c2a8
+AdditionalInput1 = a1f1b6815799ed98f3056247c71c17485ec61583922116cdf4ceb8fba24b80f087cf919f3aae6962ae2a353305469151
+AdditionalInput2 = b6f256ef1c62d4d7b06057cc93968eeb18c5474d0bb8c218d36d89097a89d75991ad80c9e39537515c5aec3e55b32051
+ReturnedBits = 2b69dfb0eb743eaf892689117a3017a62de63f653ea7440fb29c473d0b729e649a416fee202b2de94e19e0915c38fcbb8139da4076caca865f0124ae8b6bacd2
+
+EntropyInput = 77a9549d33e350a7183956bb94746d32d3649ccde8a58f7b8e78d54dc20cb18a6758f454b8727cb347ebfb543056f951
+PersonalizationString = f449339c1eaef6e656325039baaf4bec9e12541777e99b2bf3b3c8077d8f9570f959cc18e50bcc01dafa91f80a8f9d6e
+EntropyInputReseed = 0812e9b471136b0b11dabe902e76f6ef0782faf065506f2d21ef7d4bba85c9536a10dfbfbf0d4fb05c6747e9a632aeba
+AdditionalInputReseed = 56f2783773f8ebcb0428d1252b6a467249cf9a2fabc5ef084a3562ac57665c05f8214eb6a1af29a2ab673fc1a70de177
+AdditionalInput1 = 368c3091d70d55cfb09a97a6c79cae156a45fb1d53a12615f0f1f463be075273a311ad9e414291cd51cf82aa81a2db42
+AdditionalInput2 = 31a6b734e6f9b12eafb2ea23d0d8dfcf74677fd37f83c9e949f4b46df56f5c1e15de91308c43848fb0e12bda36be13fd
+ReturnedBits = c468579291e3906a13ad7475a056eebe940adc2f06d195cc686bc425206eba21717cdfc79fb63f6b0f1b78205d99429b5574630670f9abdac1527ede9efeb0ed
+
+EntropyInput = 614d942269485164739eb19b28ef1630c69d0ef4e9a432bd82240c0760f2fd0812a66eac75f0bd71f185ad06d06cab4e
+PersonalizationString = c25d67676e2938fb261406bd65f1fbe7f992979a655bdaba40fdd8fe788717328cf4fdaa22f386e5341677313baced1f
+EntropyInputReseed = 534dba01adbf78e67cbc5082ab0c0895d22a7c9634483afbb949c09a4638fa28e33b4ad78b024bc639f38f7710ff004f
+AdditionalInputReseed = aa83ad17b8ca4c9826aeba8b34e25e988c3335d653f12749b2195e7343fd66831343203a7f45be2b54c4b2e6d94f6f09
+AdditionalInput1 = 6b8e07fe59f911ce5e342bcec2ea7e3fa89b21b83ff75514a8bf178b3628a883b8282bc4e1fccb63d6db0b0a2d462d5a
+AdditionalInput2 = 56c25835927f85a36a9ad5ce311999976d649b2542426f103b9c4396284d0fb85c62a25206d20bc485f76a63962d2a98
+ReturnedBits = 67c675cd166d68ba4a9ed07ac6ecde44d98f80ca9b6d58dcb2e8cf4a6c92d948b705c448c8240599245ac87674b6beee01f20b93b721eaf01794c59d6630ddab
+
+EntropyInput = 73a0a9e3a187cf980af3970b404c8585d78c4e1c06f88b9110d4b1f27fedfeab5c9458bb5d227de58e703a8d40aecdfa
+PersonalizationString = bef4beac0a3b085c626014d368fa531b42d781873656ec384fb19674f88a9ea4ab349a5a8c0685ab23ec89b4ab35718b
+EntropyInputReseed = 416ef85f8f201b2b00b95f2ed8477c1b61e6043bfc4a075a479da6381413ccb248c667af2e2bbc776af38a61c9e4ef56
+AdditionalInputReseed = 43326592d4d674dec7d7c18f76e1006af18e461000c495c56d25f40b180a6cc512b991cb7a5b8e81ad53a1a3307a2f32
+AdditionalInput1 = f8776c1d1a2600ee34386c293da3831cd0fa37df3ef37ab8d8f84bbdc15595b5e733adb6a86326e8a4dc77cf03c3be97
+AdditionalInput2 = 2b369b921653e1aaf66af65b066f710d6c5da4abd19184ef84956260db343615846edd856f7fa5a1726643203b8a8cd3
+ReturnedBits = be598f181cc3ef73f9dca41bae4e9ab776d84473c16ced605d4e1aaebc58ca1b868bbcd139a1d4e65ca1628e413b7f1d061e569028f1ebbcfebaf279820f0900
+
+EntropyInput = 7cafced429930e197f8e092eb71908986bfafd7f07c5298e6f4f88ed94085ed92f6af768437ff8bdc8f44e17ccbb83e9
+PersonalizationString = c0b435a51c08532beb1264dc51c3271a5120e005ca1ff209031905d370c9509213b90c7e620cf0ad55fdbf15b2ff341f
+EntropyInputReseed = f59efd8d253142a0346310b1467eea0f49f9e039cb0c6954516a5228896cb0edb5e46c863575842cdccf556ac1ba3ede
+AdditionalInputReseed = b64c2dc0573f0d8740a5f934e3ccc2e3bb1dd01a9a50efb516dbbe581566cfade2b521b885295b535aadb05a76b7ccec
+AdditionalInput1 = 418a232934120f0fd34fb4a84e820fb62408921677e971d7f339497362e3eaa1dead14d2cdf1e2f0e3fccbcec3e740b2
+AdditionalInput2 = c4ce8b89a8d99614fc9442bc647f5398ea20c02d5b7eaea6ce26bda4a957b289d8ee4a771ac2ede61aea9a9be5b685cf
+ReturnedBits = 1bed88ce25c4bd7ccc2ac9813c32ee7f128f560971944ce9a0d028c4706875482d3f648e5bc58edfc4e490ff754575501f605d5efc716fcc44bc5c6905a83d93
+
+EntropyInput = 16fa7055914debfde643da6938a927004b2d773f99507c6de1bc661d914bc2d633d3c274fc6239b3e48440c03d808521
+PersonalizationString = e295e16af5d41f8ff3ac89cf3b8bb5bb542f6b3473642cc93448fa3ab78e20677f88dde226955852f07e3f32e0812cbc
+EntropyInputReseed = 0071bcc9e440b177aa6ddcef178e728f49239e58c762a1448168fec7156bedf106f79790cc69616484a48f93ac086882
+AdditionalInputReseed = 0b508ccf331f0dc69e63b548a90970d6a1d5d0e4941a70571ac13dc904ed19e6e0a3a582bd6d979d45934de92987eb53
+AdditionalInput1 = b496749710efa71e6ab4e3ed2f3755fdec00ec51e85bbdb9f62fa5c67fe3882ee91f404ff003e0e162280deb6bf648af
+AdditionalInput2 = 755341c4628a60b7af20e4842b2912d083b5db8bb0b14ddf3cde54f6fa10f1381b0d07e69a87a6f015616bed966edd49
+ReturnedBits = 5fda954f37f7f02e37805c7888f9cf46ae8f3aca9843d0e8fdc7614bc889a20659b3eb2884286ce0e4b7edff9114ee4bd8cfa173b31b2dff3daeddf19fbf88e4
+
+EntropyInput = 4499770617476fe6b1c48a31431a3049f42af931c28b4860fe0dae138e70b5d2f643ff9271934fb1c9d6ccde839fd55f
+PersonalizationString = 164aab76bf813313936e2a022c07fd74908e5790f0bdb92addf029de6e5f7d09b01080a4abc9542ea49fc88545d15334
+EntropyInputReseed = 0d6ec2b81fa56f5b0d0bab648a8b7b686e0b6fefb4a517f8726638a1c9dac7d333ebdd7d71c06db5136b930e5c776ef9
+AdditionalInputReseed = 78088587926aecfa25081cd811f91795c60fc18862eec5a90b0b38e8197684623450cec1b444dd2afbbb1e52ee184f4e
+AdditionalInput1 = 3c32bb43f80bdeceafdbc46a6fd43300bf99f26e8775ff31281e0ab0b3592eabe7eb2ebfe75cc461b2d804edb409b2f6
+AdditionalInput2 = 2ae54d1e993bbcadeef2e8349fb7e64f19e042ba3ab4e9582bfd87c9e188469ff3a9cce3ab914a59dc466962f0fd9a52
+ReturnedBits = b2393143e2f7c86a6bb82b5c40945f949e6eccc05f8ae53cd5c6d8321c01df715a294f2f7871c0e418f047579327db151d3cb0b0d3868ac962012c2b06f594a3
+
+EntropyInput = 7083275a4e52de2a4a96b2bff5e9abd976810ed6bc0ecdaeedaceb90e07eefddfa52ef326e22b508806044199b274027
+PersonalizationString = 3b9fb593266fc548421752a705dfe11de5cf1e1a3f6d17c2a9a879bc9dbe2e254f79e73ddea446994f68b318bfaab979
+EntropyInputReseed = bcbf9b7af08ce504aa7c087d6f22b9e47b40cf7bdc81f332beb9446c33d26bf47460cf70ff1625128ca92f5b0af73a9a
+AdditionalInputReseed = f9c016d2a00c572f8c0c9deaa23db135e738ed704cc637bf4991c125afe7328a6a74e67c0bf365446b583b3a6451c2bc
+AdditionalInput1 = 588eb722d4066ce1e9148d2e7a6d43d1d8b4886bd97f36f24599dcdedb638d2e7cfc4b5ea46a45e1474bc18b21b07f14
+AdditionalInput2 = 1b4e904a6b861201028506075d7d7fecb81158ea3749421d4d4710ba0fcb157b5019dbca199c8302d34745cb0c2330b1
+ReturnedBits = d155941b54ab48dc1866641c034b117d6dd8a7d068d29201105d845315dbc747afd8fb1f9ba5c976c75ff8c7052aff7b342c1489bc0c9f8a7d898b88ed0d5746
+
+EntropyInput = fca0b6e557f51430dd787ab4d33f18d9aec219629d1b839a35caafc825ab55be6a880321be58c16eacb945b7bb7cadb7
+PersonalizationString =
+EntropyInputReseed = 7b684923ae50866f710d3b5b2edf2445593fe66d15f2dc735e2b0c278f1cc9735075dd268b91408ef73d550423545adc
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 29375671407b1a45b9fd8b4f507dda234822d557e48b9a52997b13757e0c2f796c8741f94bc2bd0d8c98e5e25e4cee65e4dd634c98bc3b66fb6279f9468ac841
+
+EntropyInput = f60f7773f21a719e98c10d1963f40690af58c38c815ba6507f768346f8957e4c2e9c94932cb8aec544c1dc7765912f7a
+PersonalizationString =
+EntropyInputReseed = 3a4f75ac9b19c45fba3ead79165ade8ca56d33d0bfb2d9e0bc2e4a9faa2d86a774c737d23a33a860bd4bc42c1571c160
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 10f386267bdb885ddb55fcb506851ef14f598dacf15bc81195e37f3facde8b65291d0355818a75d96d4a6505789729cc2c5d199a232cb9d1173e90da71ccb8ac
+
+EntropyInput = f375d3d9f856f3313fbbb2ecda7972e7cfe2476618005395a365165a2d755a26d04452d4f9ab1b6fb4d4e31356057036
+PersonalizationString =
+EntropyInputReseed = ffb9bb892f95fe3c95cc78990e8d9caba04d613fa5f34899a592bdf5de197098ca4b6efdcbbc237a344c66520c11112e
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = f8f6921d96dfb65f038ca993c017b228a2283b3b8fcb5b22a3d6c0f82d7cf2a68bc721f113bf376b256bf7389f31a1975b3040cdea9e11b83b23cc26ed15a781
+
+EntropyInput = 401dd50c9596e92db41165ba0edd6389773d8096cca1fc596e4a58b78f0ccf721696f2baf2ad874687b5d6b1d960bf15
+PersonalizationString =
+EntropyInputReseed = 8c4df6fc9b35815d9d5a2ddd8a62434c8992ce1c21add1b96fe1e17486b77ae338fc655b327686bba011991b85b2fa0d
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 29b9b2127d14165bbfbd0755a96506b8cbdf9416f37616beeca44d94d52f132118dc5a93a9494b058275788ed20835374181128af62e0d862051115f0399636e
+
+EntropyInput = d3ff8f5590ecc63f1dad8a15a5d245db5138a49d2af8ef8901dfaa3a6aede3b3c8b805dfdae73f622ef608de433c417c
+PersonalizationString =
+EntropyInputReseed = d7908ac9d3b4b7c46600c47f1647ddcc621b71b75530fd9bcfe05e26f82dbfa65a60a9614f0a09d0366419023ed9f4db
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = b83d06fc0e5bd3399d716c7e3cd8029f79da4e03a177ddf4250c400aa4f4f9408333813c9cee371a4d9f4246aa7fe4b20fa936a916b3e1fa73901ce28df567cc
+
+EntropyInput = 114bb346cf39f2b19a0c003e978095b6a5448b739b6bedba1d41053f792d0a34c62eb9ff08c0d161d369e8aea9f68182
+PersonalizationString =
+EntropyInputReseed = 7359d23ff081a776c2c9c3bced8e01b2c2c6dcb412a337066f4cf5c6c34994fc0f6da97012c982b15440ea0d6ac321ff
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 84840c712ba01824f85c23524024c2277ee69fe97eeb4429947ccedb3d29cc20417757625410f4f30a689badab5037668736f8be50f13adb7b8cd2e2b9761f39
+
+EntropyInput = 1d7ae2fedc12d7e746d259fd1786592220d5293d974bd8f0c39529c8417e04de1e44f8074fcb90734a5c648f5fbab787
+PersonalizationString =
+EntropyInputReseed = 8273c6ee3a82131464ee67591319f460ef13303a363167fb7b6c2b5489c7cd3436bb117bfd92a9e451cc3019adbe8fe4
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 05ada0ce82206c9d97f660f33e6b0c22bd263dab58c438f3a900f9b3062915ed2f272ce5110d85a7e554be3595e0ad0c05846fc3f07f35aafd32427f1b96b466
+
+EntropyInput = 10e75fc16aa860cc85b44e1d62bf05dd1954165944f5afcee8b714778f0e2c46e6709cb9ee7dca65d27c58db322d8556
+PersonalizationString =
+EntropyInputReseed = 677c9181aa6c596117255f46b69fbc2d644557bb8cf7275ecf15d258e0559b6a55e316f77c88d4470ef55d9b4d015f9e
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 6dabd2c41d073e32bdc26af05964619450482d74c6a53b5f29e5669b0379de221f31727d530365db2716066bde883e07aa679e8011be1d5013140a7f97d73ffc
+
+EntropyInput = 00e48717e8ea0f203dcc3a60aca98f1af8bbde961311dda24bb8c414512c2698fe085954979d7615bf20a7bcb73ea7a5
+PersonalizationString =
+EntropyInputReseed = 41b3bd282dc0d96abc61dbdd1e3d614b664c9363fd0a5444084f46eb10d8f76c02a0c60cb821706b65335f04c55f24d7
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 216b0bb73fa63040c44b451f8b8dd79d2e6e9b27aa51be43a6319641e55301956dd7feb145a8e5058e83a55445cdb48e50a709d0d2f7f1f34ea1646b66218481
+
+EntropyInput = 52740d9061b0960f627fc8c698b7bbdb80d599bc32b6b8c50745c9bf19415e8ff7ec792d416589322e50ea0142601fd7
+PersonalizationString =
+EntropyInputReseed = bb232ba5a35848d324dfe295697421250469185508cc79fcbc79535d0a43dd4f1640c43251a2b2c290f0ae82e5f4e7bc
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 1c93d4dbd97254eeda5bc25a362db4b8b678afb01700e37df532fd394d9b7955368a286bd2832873bb01ec1cc3093a10c1c223fb0bf20472342707247ca4e3c8
+
+EntropyInput = 00a9489b6eaaa9d781e5b3a6aa7a877980cdcd43f9989da4ded7edca9a7055dbdeb453668e9b2aff3df6279abf2f41d1
+PersonalizationString =
+EntropyInputReseed = 491ad63bbdaf1a3cecc20a94a02354d3f9e05dbab9be9b9fab21b74b44c1d7490331c36bb85325117c9fa98802a58f77
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = ec0e9bf5c3d20cabfeff7948851f5d51ffaee6345d90480e5601ea1cf7dc4d04bda3ea0cee4387cf922c07df820fc82b8d0385a7df530c977797831f6bc36583
+
+EntropyInput = 1694aba5887e90e8621394229c3d58ec20b6fe24896d84397282845041a5519b32a8cba40510d97db6ea33eb934f11c2
+PersonalizationString =
+EntropyInputReseed = 6b01bbcfc83229948ef247817410beca2de237cedd569e47edd0e30d57fb2ab1b7b4e0ebace0916f72660e9d458f1db6
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 8dd46400dae35daa5f894df7a72d6f545abd1b6a56418719c9ef87692decc20e2c7bd92f2ce5acf5a62cd0dbed861a884cc2d30dd2b5227393ce1476a2c4224b
+
+EntropyInput = 43f4708876ba0294d22bd1bfc9a5e5c25069bcc0f46479b041ce1af49bce5cdc2455849bc34e6412c1036921ab430a05
+PersonalizationString =
+EntropyInputReseed = 53f20c82d1c0334845190d28f9f7caea7683ef4c6f76028bd68d1eefa17459a6f241c8f181907c1223c81d5f829751ca
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = dbaed592b10853da9fe816d2c70107ef55b678dbf145b2b37499740d56f188e1d0b7c8613503539a622cc06674bcd10c18f40969273bd3397db8689b7fafcad6
+
+EntropyInput = d3870857b486c2844051e9e5d937b1ff7c8c90a378a9ed766ec5e0a83e4311b83b92a8e8bd591d5b9af537158e34b3d7
+PersonalizationString =
+EntropyInputReseed = f48c355124c34e020fde83532c626766c71b85e3214d37aa63b4f30015969524281873a6ec9e47c2b0a61e23d7823ac1
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 62fe61cc6be713293231979df124258066dd3bc56f44333889783da7fd8075d8be6239bed1becdfbe6bd71352bc77c38d9511be5df7a7dbdc40d7f236d0e8d20
+
+EntropyInput = 68e91e73623fa6a3ce22f424e9db971459dfbe06601ccff96f1726fa18e61d5cdc1df97519c8e7190ab6aabf95bd1ee8
+PersonalizationString =
+EntropyInputReseed = 249b56dcdc4c5c8eaf796c8685a740fd4ea2455c135e0d7b8e50532fd87c95b781c8f3775c213c2714eecef140125b78
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = a15d3d61408ddea3b9753c854c693ca1a91cf49d172160bf15f512f345bb1bda9aa7bc4fcce177fdfebb3fea4cc6404c6024527ea662669a5eb78753822bfdd3
+
+EntropyInput = 791fa5e81f80e8b141e228a0d623436f3bb523d8a03e98b0234705cd8b9d94be9794a2f6ffe029a853a627f9260fbc7e
+PersonalizationString =
+EntropyInputReseed = fe04245537637cef4c8c5cd33ba941d5aa03ca9f1deb586979123521aa811598f81c0c443469b029bad0bb7fb0c99f82
+AdditionalInputReseed = efc127b013c34b70a9f284fd1df3be0f2885d3cabe0667762f0ea807340e29d65cc2c0f962f54357706ca0b6fc1f2e22
+AdditionalInput1 = 6c68a2f1e5955dc83829a7e5acbb9e110287524032f0ee914a783c561a1f444aeae68a35567d443c0c918e38c565067a
+AdditionalInput2 = 8a6825420531f924935cf338d68df99f0f7cfa32eb9d002468e6b2621f0955a82b2c4ac754ba0c8eed24c5d8e90363c6
+ReturnedBits = 658dd97b30a6432690c62322ee933b44dbe54d64644a59d9b944bff47c3dbc1c9f123a53b899d9b86dcfa1ed1d5fbfeeb9033dfdf291f9e843568309464d23d1
+
+EntropyInput = 67938e50e2d690cbd3b6e157f7d5ee7f0d540095c558e0560bef484abd67d7b0985adca78389aa467c63066f5f83053d
+PersonalizationString =
+EntropyInputReseed = 3dbf9aaadd0dc4db5d5e36fa770317c4ec2e573ab90f09dc1027a7ea241a9b23b70848e692ff3117d6519c258d58ea73
+AdditionalInputReseed = 046adc954297659c952885ffe568c0ad2b7b16041658841651b808167d99639f4ea32441848d03e148c4affc4beced13
+AdditionalInput1 = c3622ca849dc7093dcea24a146ae231d8a03f904a50c2187085bb76557b5e5babbb78f502e240c0379f4e6c72eaf3382
+AdditionalInput2 = f43785361012a3b7c6f0864a3cd382800c450be0e2f09c7737f5a4c3a198aaacc7879f9242e18334c94366051aa5f74f
+ReturnedBits = 2e958abbee0a85579b35b08a07e60bea67a472340b78dc3c3f5a2731828c3f4d8aef3fbb6fe622133c1504849dfa8f04621b5b3fe5d9ea64db70931dfdd622e3
+
+EntropyInput = 39c4026c129911586004fb5b48cb3d0eab465d1aed16a47199d7405137ff142829c507a66e7023f938d5cf03646f55c0
+PersonalizationString =
+EntropyInputReseed = 847630083543d0b331ffbddf0599530db94e378fdc172de2781a28f74d9437be2cb45232d9c68923922742dcf2acefd5
+AdditionalInputReseed = fc5a55d828af7ec6e6ce68d660c8fa2b85210167e012316b7c41588052b6d324414db3c477c07ddfb7e0b7fc76c59354
+AdditionalInput1 = 019db190c9b35fb0d35e2a921f2bf3576f1a1ff2c58957dd2ac4c745283ba917eddb5dea4079ef9a43ad0c5ea9fbddc2
+AdditionalInput2 = 51f1493eaf5647c3da74314dffa1f0af279b3b931aa040353331d90ec79d1c01ebd2f201457b7bb096ef80c7c94ef97a
+ReturnedBits = e8e221edb441470c5f0020f916b95b9ea818c828e3d36e67d463ddd135bef91387f569f2f2d7d0d91e4928696ec2fa9f5555bf9dbd022d1797a62f3e0b12926d
+
+EntropyInput = d44d6e6bc742c99460033a1028f51da38284a3a42244903db383cb2ce754df468ed07cfa4096d29532d13414de8101b3
+PersonalizationString =
+EntropyInputReseed = 90c63b624e22be43a599f5c5b066525b3dbcf16ae74baa9c84d0e56a6ba04b713f9d1b345292526fc8e8f6d82f4934d1
+AdditionalInputReseed = 91b21dc23b63992ee46dd09e35adf417bc3692aaa605ae0db0001f9e8b3ca3353da38308de5ad328f1363a334e880e09
+AdditionalInput1 = 969d8070e5a53551cbaa6c86924ff58c720fa4ee5a81f0224b64b0a0a1e4a64a3cdc695222c6f384e0bc5e3df1d76122
+AdditionalInput2 = 1e888983b398d0a5ff8f25b8dc692a8a6215a490b042c26ec1d6cbd0be24e7dbfb3fd910bf22a9fb78156dfa942d0ad8
+ReturnedBits = 0eed7d0b13b08694559d7438a7771c3127bfc0a351cffc1f5b328bdf7f6ffbdec66bfaa3d3f060399099126d4bf588b8c67b9f2ec509cf111befeda7ebfc5ad8
+
+EntropyInput = a526f4714b368303b46f213ca03f431c6d3f7ae0b0c6bae40ace63f27023fd6a8963b740deb4d12e924f8bde93191e1f
+PersonalizationString =
+EntropyInputReseed = b8f1454e8353e23ff3614fd855cbcc178b3c953455e70a981685e47bcee9b1b6d4462a4b1c490703273ee1a733e9a344
+AdditionalInputReseed = 4b51f0af1442cdab2497f35b581796dd5bf76997c3282f842fe288407ec983818e52d18ddc27d5a0ef16141c289b8f44
+AdditionalInput1 = 6c37cd5aa6db94a17ba3980067f25e03f65473b8f2dbe56a0f12452ac27099909e20332b394ab2364d5e803c9b05ceea
+AdditionalInput2 = 162a95c2b77ee5bb3012cf0c1831a7ee2ed3e07a350f3b065577791cef78c1afd49ba11780aaa1c44943d62d0fcd5bc9
+ReturnedBits = df894835e07073ba4f0f75c480f86878d1fbca27f7b4f9a826839d76ef172991df4fcc868b75408eca2a6eafb62f9ca6ad9a9335e363c627dfc8f232cf254a1e
+
+EntropyInput = e7cf1741478a81e4090ce208c5b8300ceb5487e06c83dee08605109cb00cb52d1c3a72187122c965f68c5e7e54a8ea10
+PersonalizationString =
+EntropyInputReseed = 0809aa013110fcd6e703cd5f474036f7ee4cd191c5227cee6c509e86324e7b2f9668bdb40629e51704ed166426be483e
+AdditionalInputReseed = d653eaed493ff4c2791d5f186c442dd48b7ee4666c90426b8293f82130b246f59085fa2b82c2597d907b35cd3f2900e5
+AdditionalInput1 = 4390649973c34e1a368b554d912397f425adb3d96ae79829eb64f3c3fb2756692e6612dbcced4b3cd334bb7880c34cb9
+AdditionalInput2 = b09e0dfd270672ea553790163750d0073fe156799d23be5dcf78d784c7ecb4d4ec054f309c704ba4e153ae3fcc60d3b5
+ReturnedBits = 9e2fb5e669c49f12ab989aae822e129134bf5b1119c69c92dafcf53a7dd1f7055c6b2e57bb59259d2c486e33a2ec41be3fd967997be9b0c7b11cd790f3b30c7c
+
+EntropyInput = 809f1f12374609f0111c347fb88935ac53d473f5f7e093898001e9c4a81ed078cdf5eefa0b166826c632d13b1a0d937c
+PersonalizationString =
+EntropyInputReseed = f2d01828e4ae757d90c36fe5ad183378ac442c07b4741c85cc340c8626f56472f0eac7bf4848fa18efba8d37d1998c4a
+AdditionalInputReseed = 80a346bd1c05f00c08d9e6c10ac0fc386806cc22d62ec9dbc2eb30131ae7d89aa91a67a848d01bb8d9eb8a9326c4cc81
+AdditionalInput1 = 0fc7cb589cbc141111f557d852c5cf47633f4430bafde14725420610f6c22777ca9394d44dc1701aaae0a6f2362789b9
+AdditionalInput2 = ed60a2a96cef442ecb1b0b8311d5470f425fb60cd1ca81d4846be2d45ebbf857cdd58cb22a72578703759fcfe697a3cc
+ReturnedBits = a0a7d16bd83e64afaf0ad5c1378f341a6acefddb15a10566bd231ed7437961c50a47ef8b032389fd8a5273cf926c70b1cebfcfb93176fec64da8810e93eec53c
+
+EntropyInput = b89c724262f8ebe3c29e8c8bf992959e3b7f42a5abf0d336b827f6b68482bf9a75b5f11574affe929bae0cfdf213bd3d
+PersonalizationString =
+EntropyInputReseed = 7a131fe412b25a66d40ecb9ed7c5cd5d0e85c33c72ec7796fd6320f3fdfe9c710996973d7af3af539aebb4e687d16af6
+AdditionalInputReseed = 3a3b2a07c58770ef94cd0fa6348acd060df2fde26e67473d43de7a929b0df7ae359ee3b36a3707d27d2936a56e53f7e0
+AdditionalInput1 = 5f9be21ee124776b931c1884f4760396cd041604803ac8631479e0b0dd900d1866d8b0b441db82bc66d5c0da79b4f8a7
+AdditionalInput2 = 6820aba25b1af7fd7a0879dfdd6ed132ee5d0ba892f75e31ffb0ad0eea6f3ea37a421e06bb7465c3259e59c4a7e07833
+ReturnedBits = 2a44d6854ebe709e264b253ff1e0a7e45e6c996f5ee5c371ece0acc7bcfd5593fc2a0dcd4fad29820ddb9d610557b4e3619009a15c853a5e46f0661b727d41e8
+
+EntropyInput = 2b1fe5b6d42a712ae659aa1b622333920e3b08255ad408803301f8cb9f82b95a691f66922173affbeb9da35d40cf2d1c
+PersonalizationString =
+EntropyInputReseed = 2ff29776ef48c0d20308d07fa0269513866a59db42a1daf8ee75d8f563388cb57cc663ff2570c2fe4a40752531e0c779
+AdditionalInputReseed = a2c6d344decbbefab1764c424001442455c9e87c06d62bee63d6d18b87ced4ece28d6c0fec4140409922915f0744d3ae
+AdditionalInput1 = 01cc142d20a20187c3c72cdfc3002e4da99a09964af9a00d0001f348383373c43fbece5946a9da9e5083321db905e0ef
+AdditionalInput2 = 38a60806c08f0d0affcf1d3045a209cde97c89af7dc7c0bb1e160e4783ce5defd651767406faf65f15b0c5f6ea191a6e
+ReturnedBits = 335dada20ad687460882b64061994b860e74d053f5397e0b700c9db610f9b4650141f25dc24e69ff1eb63612cb2b3b905d2922ac88b091ccce523b1c62cd14f3
+
+EntropyInput = 5453008743d1d5da6acf27e8c36164b2fc13fca4e283bd8734f0f5b27fcbbc4d622a8fa21add0403fb70e15f8d7ad228
+PersonalizationString =
+EntropyInputReseed = d6f8ce10dd87f31b35d2a080cb1ad3482d1b3bf594d5fa7050dccdfe786797508a83b2aee185120f9a4c8393af87c97e
+AdditionalInputReseed = 4113be0717591bec73cbfd3c4c3c5742d20c5e9b48b6ec7000f112cec4693dcfc193bb949dca2fd1ac9d67f08ba71407
+AdditionalInput1 = 87c949f59d225b253ec616a2827c28197fff5105a123d96e8bacdd2883b8cd570f20f6d5d64b3fdd6bc88ee227e28bab
+AdditionalInput2 = 5e8a1aab2cf9724466d298943cbbbcc0f2763929ff7cbfb4215ff67cb54c0581d93c952c82012bd704bf66e76a9b78e6
+ReturnedBits = de38c173137520044713377ce2b4e672ab7f1aae1a88c4a3b78a2adf76d958b5aa6c9345cdeb00c35f099cf05ae85f7affb32aa4e5be43ecc406f71c779e0207
+
+EntropyInput = 1db147affb57d3ee431f1799ecd2a18bc45ad735d1409c9b709e1f2a2b20752d04167d7939d91536769b61c2299b4aeb
+PersonalizationString =
+EntropyInputReseed = 449a7536197b2356380bb442fe26fb846fddea8be76ec6dee463837d2e2b5511830907158d4f84de5bbac1374d1320c8
+AdditionalInputReseed = ce2177555560a5439381e087f5abef9a1bcef28d62d1b5bb801761d9db9a81c6270b9eed793fe5b88365f935419ce485
+AdditionalInput1 = 4d3c0b970f3f337456400731e8ac667ab517343f0bd03260066a73afde92c9d5676a595dd943837e12e9cb5c9ba19bf8
+AdditionalInput2 = e0690ee6a3dab9a0064b9f662465f3bd64ef5817e1576d1a0314cd5310050e9eecce9af2ab25d0bc75d52a7fe5c8b83d
+ReturnedBits = e2b0d8a44e3f8ba7fa4dfebd5345a90996cea8df80cec9a728910d7fc5c094f53268fcee40251f6f47ba66192e3b8f3a627010ea35f111607c44758203c8395f
+
+EntropyInput = a4f060385b0850d47d0c0b0ac0ecda014b1fc6f937c29a07131a069a8e92c2cb6ccf7ec4020e66ffd5437c9e5d4cafce
+PersonalizationString =
+EntropyInputReseed = ef464980f1ce99630cdcbdcc21e8117e592fd7404d8232f6cfbb2c851b93c77a0c594b22b8cdc5b0ae94d448e8218c4f
+AdditionalInputReseed = 4f2f1b1589f613c23cbc066b1cbc89146c4709580a76dace352e9056b911063137d420f20818d10f2c4af5ffe3fbf013
+AdditionalInput1 = a98ed1989a0226f8a2ae30d03bb8270d486800fb7a3f9245d8fa5ee3ef7b7321cc1a7a4bdffb076f67e3cccaaf55af53
+AdditionalInput2 = 2ce165d56b2706b84b8d3d85baf9eb003199bcf8d9b162312182bc94e96fbb236e7a6cd25a1d676898085aad9eab5363
+ReturnedBits = a344fd1c8b3b8b315cc71f7ea08d7f7b672851856cce863f468e22c70f46ff1e6054cbbddbb9111c436df3dff2100b8379cad9bd4495067ab48a0f3a1b7b8013
+
+EntropyInput = 87c9a62efa5b0210148f2129958eb8486e444ab799d86c045262a07ca05f644003b5ce88fa05170f3b653c9b3fc2fbfd
+PersonalizationString =
+EntropyInputReseed = e89f2827fe7b200ca176043527b2ad8b31743495bb61f5fcd59fdd54a529803bd31ed38f51849ea42202d840f5a5d869
+AdditionalInputReseed = 21254ec3b1ad3abfc3c237bc6eac8fb173bbd996d9abcbce9c78dae649ce1c2acd9eae88a2e117aaa7337648377b2db7
+AdditionalInput1 = d813192893266cfdad9b9cd59aba0cc0d07d2ac884877cf9033b08e4e9877e708d2533cdeb604073ca1c921b696355c0
+AdditionalInput2 = fe1e3c460d8802743af6d88b1b2f0aacec8468037835af56e25a8a1cb48f6c3517a9e4d404d30c34186395da1729a67d
+ReturnedBits = 8e6d98a2f864ca795f5750e1404ec22414f8cbf270fd655450422c979597b6ea5df979d213da7e038cab9e2500d4cc8c4dec89bf7783aba6bc3b2bb280f4e194
+
+EntropyInput = d94860047179b75b27bff1657164f49e6da67d265aeb4826feaad524ea87acc5b8895eeee008d067234c46da14726544
+PersonalizationString =
+EntropyInputReseed = c4a34713f67c2f973bdd8f6ed58257aaa1ca049f413937660cc1a90deef075c7253a084d334423d5e8b8199cfebac2dd
+AdditionalInputReseed = cba120eabde18332c47d025be35520e8af7dfd95159910be86cafb747f17a92a5e66774c4cdbd905a2984c40e88fd7a5
+AdditionalInput1 = efa2f6eab2bfcf0527b2056716fb0a45c7c5df00f20caf0ab7c851511445cd78400dfa031856978f4323a377cff0b485
+AdditionalInput2 = 8ae9ecdecf2243b826bfb952c55c2eae59a449420e7bb8c046a5b03f76fda90ce5b13d5a21c74b0d961b2d1cb50df90b
+ReturnedBits = eba9165bc19b8316d6154756f9a8d7aede3aa424df4d425b4b9a1dd9d632f83b9488163b73e0e06a1fbcf9ffef3b5c8f6ba991ec94c57efc06b948f1e0724120
+
+EntropyInput = 2cb0d6e27de04e6a6e95af5c5e4cbf3f99788515a4e086baeaf09416eef5efcf04bd72e66f3b9b0f8cc0875865950e9d
+PersonalizationString =
+EntropyInputReseed = 700d72c6787eee748cf356e052954439bdc41e2c4e51f1ef3b7bf37c219f111e7c21f7072eede617c212cbcf541a33ba
+AdditionalInputReseed = 4594326335f47b935b2b669667cde02449f72b4dfd86d5a7d1aae3cc44b08e9411827066029dfe7d9c9e154ce21467d5
+AdditionalInput1 = ed3f47e59a12b36a42616b338c7a77a18e333d38abb9da4e36914b69f3c3476880705525170a320da26dc402c6afdf49
+AdditionalInput2 = 6e39b249f1b8111ff12fa24f9f2320df2dc8752e1541f556b5cedfff409b6a858490c27e052a63504c7131b438f44356
+ReturnedBits = 650bee69393d5d7793c8a5a40cae79bd470d15fdacab7b51b251f51dc5d3e383d28d808c7f9e018c71eccc80371a9e0267ba4053ec0e4c071d110942c43149c0
+
+EntropyInput = 91e15b57886156d0eae2eda3687cc4b617725647fc3423fb548f180338064ab66898005009c2c9c5f7c420d99e4f351a
+PersonalizationString = 7100bee1f8ca38f4f07b9910b12baece715222663a1d5c1699b5d4022c0e0b1a49c94b898e5318f6861b43a8f1a4a882
+EntropyInputReseed = 25da9700e7988a46b2fb44358fc3b140af96b9f85cfc747978e85afcca0bcc02e807af830b3c0e6960a60bbc2ded891b
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = eaa80c6f590f28cc7b5edbd3d8643a68f7e6de873b0b9d839b0ab96ca248bb4b9234b1c065857d936ce6dd0fc92d6b3cf98f3a29c16bb549f6dea4221226e550
+
+EntropyInput = 6e3b472fea5f25a79c5de859c0ff7e637f4cfac575878bf2016da2db6aff49de4589a59b266d50f5434f3ec4a3f218d3
+PersonalizationString = 7497e76bdd5df3dfecdff61a139bcde7da45d8e88f7bf120ca78ebd1f642b09d6eac78ce16ca05275bfadaa2e13ceaec
+EntropyInputReseed = 2be8a657b7f5dfd99e4c9378c4192e450a48e9152b5a6ed1219428a05a698f4229f549b50f06bdc1085006ec698826f7
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = f8a11ffdc1d3e06780071040f613bbbb40eb3dd47a2e6278779d25ed3356438a44aa4510bd2cd386c745996e156949bc5d7a1f2d8ab79892a605ff2c8a8019cc
+
+EntropyInput = 82f5ddd3a5422d536695190ab21473ff7c14a7f1f1a0cea9025b37bedb056ae9abd71e559e6c5cf0af69e6ed4af39876
+PersonalizationString = 5604279f9d3062f2c66f31148b2c14622469b595d02da1f1ad49a573bbb7a3cd5d50dc4af9d0e0f1bdd7079041b00d46
+EntropyInputReseed = c2ab5c98a6770bedff18baeaaff9c4656e9afa23caf9bfcadd9871c99ab4f933d4ce81d05fd1e58a903add27c3b9930f
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 698db7100c3df535c75587ca2342c70518f3a5ecb67a742f7c835d5913e0ca728ee94923e87fc9d5cc2160f70e699a3287da4265db0edefff8b19ae20e527de2
+
+EntropyInput = 9f71ab8537b7c4793dde60c6fee3d454f0e7065fe6c2c0844ff6cd838ba5ae9e77e87240f470f7251165a3316083083d
+PersonalizationString = 2977d0fdf366ffc139187bf74312451dc0ba0106efbcf23db1468da379edff5d2b06ca017fdb7b1c1d3edc0aa3cde848
+EntropyInputReseed = 122cbf6bc8e2b5dd7ed375e0d54f5f8d9391734fc34808af7367cb486d025822b8aae74de376b47586cdad374f0599e6
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 03de463685037aa94a5b83521a369e8cf7af62ec228e7c9615def0824a8e4711686695e03e339018cf70cea9c9590ac4e95694f09ee7d7d1b70eab65e1a034c1
+
+EntropyInput = ec2cb7fd1687eeb768e0aa90e50237f6f6b69460bb907a26b032f2e72bc20d9ae31c39440fee4637b3b9c609b0793b8a
+PersonalizationString = e36b7f06004829a89b97f840e41a1903ea858cce5d4b5b5c20f72d613b8bf319bf4745343e2c51b4ec0701938ad7ebdb
+EntropyInputReseed = 1ced71aa0db6a7dd04ab977ab33a9ec97de3934b1994516b48b1937777a917ae793d83b3dd50305dd236f277bcab922e
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = b9c83e1ff779bd79d296a5fa5ccad53c87df26ed364bc8b5c9f9a3eea548faa34149b68ca65f6f3947246c93f0bb4e4307e53f8626f176360896608135738f75
+
+EntropyInput = 3762819eb555277d06ed9323ab989cf5101887f594e83e4e6acb79c6e98f414a99a76e6de244e3e60ce0a2d7e8a99aef
+PersonalizationString = dc31a85491585c0e1c6a7fa4094540f77deedd92456e5e58a35f3066206d7ebbd6b9351d4f7e0ae23867c4d6e89e3c50
+EntropyInputReseed = aa86ce8363cec655cf3e617b5c1ff683478b15534c43f2967e64b25f97220d0a550102b9c81a243469d7f6ec3691586f
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 47f678be2f2306902cc4d1c3e612af029ba735105f2d631aa55e774d7127b8d86376724eb67f3f19867d6c57a61a2bc72fd2171df2c3b9e05e62faa8bcf6f5e2
+
+EntropyInput = ae978afd237a85e4de2cd31a18b9b38817d7f91882285c94dfc0905f46e484063e7aab1fde07eb63424d079a92b3c6d8
+PersonalizationString = 48f6c75b8b2dc01864b2ca28833a64a5462a4a3b5162bbf6d9bb48d46e96529b67f8651cd782ba7bbe2b5ff3fd8b204a
+EntropyInputReseed = 5e3d63b519f1ed0ddf0f16df034060e6c653436c79dff1a6e7832007287db394fbca527b57048f0086f8aeeb5c016f70
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = c3a5f9a7f2219e8ede06f2e601b2923e7c6b71c56f029e47d00d1dc1076753f0a725511f57d0f72c8c1c716f4eabcb8f978b23d3be572d8672a3eb58e4db4e54
+
+EntropyInput = 0a57f09c0623673fc5ca4db9816ccb021ffe39e7d83b4448c894ce8f4814903a3d9211819384374a2efb7b2e53f4eb0a
+PersonalizationString = f1ab27d8d7f7a4a4802c0dbae516454e385d5efbb84b652fae49caebc1f28e5cd3de4f7e9ab859d71e9df532ce3ff5d9
+EntropyInputReseed = 1ecfb8019fdfb96ff476337c1ed5b53c58d5101c0bd381a915c3553ee00c52f122b594bb2c6082fbc8b474e0ad870233
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = e3d7d1057450f9d8c67aed69fd4d5a22c5e7a3fd0e67679dcbed90d6c443517fdae20aa013cb9bff3f2806d4731430c427f3d2b2f5f46450af8b045940a459dc
+
+EntropyInput = 425955fdfa0f37f1ef8ff36ca9013520daee7fea30d7810b3fedcec31ba37f38fe510c91aa3a29795e474a851d3a515d
+PersonalizationString = 723d973aeeeb21bdb1450a39903348bf222e86d323dae0435f5eb82df9a0cec56c1ad483f9ebe9d19764ffe25579c6e5
+EntropyInputReseed = 1aa49cc9b8fc0cae63ac667a5fccc77757eec01ba2b6a96547dfbae1f0a78b9accf0d54495475476cba472d50638e718
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 7672606ba0e94b3333432a5b6a3ae1601848c151456be3c98617f5c7377aba1cfabe239573fbbccbf0a63af5b1f67b152e7e84bfd76e5483fd0799d879f1e3bb
+
+EntropyInput = 8bce33cd4324fa53e5ba9779049ec68a58f6ec840d4e23617602a6ca1125aa184f6d6cc3461fd4b73f53213fff2a6dab
+PersonalizationString = 4eec7db6d498ef2d80c0fdabe286b4a7d251748b740a458784c834e3311c8944149db6ae7c4b3ce00982a9058281216b
+EntropyInputReseed = 055aee6640882c700facaa894ee61a487f824ec68c1fc0d8fb10584810f44a5d8266550d9393c9145553c367ca568185
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = a7088e0b15c12b188718855550d04af73278002d632d1a341ab6b3a5700f04f84d3c4ca64972ced43e9f76143ea2074644ceef7f5c8aa5795e8f692074ac95c1
+
+EntropyInput = 09741de47f5377fb94f99a0de876127aad00f88e5989e5eabcec2e75f3cf9e8c7265da02c80261db4dbeea466a80a6f4
+PersonalizationString = b65bc8fd77e2e3e3443d73a30c09dd085c0bd6564ac0ececb4fdab5accb722286ad840286c48221af5abd5551b58e83a
+EntropyInputReseed = 65900106567be790babae0b81f2877a9c1642af3c58282e134cdd3b0920099f936cbbf141502ccb5860ea10bce394c0b
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 1ace19b725a9deb13bcfcc1e4d39b604b26556927f60c367936cbe0e76127d3ddecb73f52ef39883a9def235566d01dd4f734028ce82bc5fb9ca300f3f5dd080
+
+EntropyInput = 5ed4b6e453a31c0b04f960b739f4ac061cb719a70919709bd5dbfea910eb4e4dc34031e0298a12c7d68e65a38e6eaae9
+PersonalizationString = 458d214a18fe1fd2c762c77cb98a5619d7e48aafa83110c8578d1072d577b93e53a13ac700612101b7862ca94eb87ca4
+EntropyInputReseed = aa829f4ea15bec4a9ddd933cf6c47de60f7e2cd172287eb502b9c7beda32661e1ca27be26c1fb2e7a667ca1e0466aad4
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = ef4026144d7dba42bca258a0b0cfe881e621f65e19c267179c0088b7829d9ddfee39fc8f9cdfecf0d451dc7df173d679bc503190795d4be67909acc17bb20470
+
+EntropyInput = 938602d75ea11e8b1eb037381b8e7643b12967aae4982a4b4eed054babc78fe4dbfa832a0b3dde8d2d1ed423d807c13a
+PersonalizationString = c09424e77901b1f021c96124c8b2e8708e3dea339d15d7554dbe19760a99a8c60b2e8f208804eb6f6bef43d5b7db623f
+EntropyInputReseed = ef6364ff1c3d9b0c240ebf62fc52768b748f16581007649ad9ef4b6c72176255508f6e2015aab2f95421ac7a582c6205
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = faa48f2fdbf31ea257e010cc74ef2d50d336b2aafd4fe8b3ce8fcf803a435e57eafa18938e35fe9c3a01d92f2b7b1bbe7e055dc630c701e288c1fded75e5b0e0
+
+EntropyInput = b8f2028ca74f8a0592c99d0ae497438562ce1b7a491fb6db73c4f8cda285a934777b17e472707f2217079b9d8d65562b
+PersonalizationString = 21def8c9fc10cee6fce22401c4ef13b17d33a604aaa70f924136f6635b2e59e0099c778e4cb27b093baef94d5ac10770
+EntropyInputReseed = 80e96e6b971d1436861f85f1b23cd7f47974a06b17570c337d6f5e98ac42d0c30e23f74d78978501cd990c930af4f8e8
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 7720212b0189ce42e969a9bc598a179491d393483fd7456047f81a708076f88d34a71546eafdc3556e312138a33108c91fd8e81a963dd37e03c895b630448698
+
+EntropyInput = d1757e3687b57ab3b16ef6f43ab456e7d2c6cc182c0b8376cf847798a0217707e57bce5cb326cc7d1b5bb36f213cc621
+PersonalizationString = 531b64be5d25937f30bed886f2021855db1b63777febe6695eb4f2a5e3bbfe6ce80fafeb8e7f811e06cb87e520a7036f
+EntropyInputReseed = 350112071b8315afa26fa3d9be6b6dec59ba7fed2387556cdec43ab8def92050d2f0fd34ef0c837c022c337f227b2169
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 47ad3d7ef4e7bc4696d039b6e424669200b5f6c687f813c270483793518adf6698aa40a781208878017bf77afeb2f98794d21578623888eb98135ef0e5121c57
+
+EntropyInput = eed2cf41ef920a298aa71c28c46377392b95cf75182cb47ff2539ac9df5db7b2b14c3c99900cc7389effb719bacb581f
+PersonalizationString = 88cb735f569879f24d958b54d4a5544bd728971ec531f82e02c113b783446afbec857b505e00a1b5c8b2749e1eb19b03
+EntropyInputReseed = f03301f27e7f9519ad947d8b16862b47008bc03e55d2f0ce9bf83232d3b0c816580fa58b5bc3fe6301f2cc8d03c9f85e
+AdditionalInputReseed = ffc23a43f85aef5d29cff5cdf327517777f68c0174220fbc825c70eba3525f579b10dd367d163c740c57db0b6d88b37c
+AdditionalInput1 = c5f108eb450dd628429a321af43a9dfaaec6bef2d1caad89bcd86cc35ca95ed85f796bb3bafb071ad2d708230bf1be84
+AdditionalInput2 = da2a98b2298e3f4f691e91fb6c719d67d3c37a916e50bd2aec09263c8e7616b75619472f4dcfd97be135c09f0b825f0a
+ReturnedBits = 4eb6caaccc317dadc89037642e6216fa3a4832915133e736d6a5c1006139076b4d8bb44b605e1d6bf414e200529d5fd9d95c76a9714fd91d4e56fc7d90d660a3
+
+EntropyInput = 7eee671f998ae5a3a3e1a471eefa109b3b1acca33071ec2071c6b0b79edd100c4ec66db88e0fabcd630d3b1129f5652a
+PersonalizationString = 243297161268c4dd27012e77e9e80ee8aa3cd72e0242e5c0c3d21668344908613a1e4e3b658585eda4de66390580c5fc
+EntropyInputReseed = e7ba06cb5dad2ce73dd07c7939581b1362727ecde7567efbb1483fba1f8cc702d425544ad952f3442de70c8b5cce53fd
+AdditionalInputReseed = 4a2cbea021aee0dbae40d7577783b8a75cfd9d5f31c0463ebe9817c11c6de0dda15424a10455b3f4dc7f2bb1e2b7d928
+AdditionalInput1 = 2df757dc576c6263e70c3c693a0f963ce61472f82f7f4d9c9051e5c443bd63e1870d832d41bb091fe8f01bde07088c93
+AdditionalInput2 = 28eb9a03b4e91d2feb960366e7d8d571e0232573378615325185c0eaa609f5526b06377eac6b4094973d01404adaa42c
+ReturnedBits = d677c5a72c23b589fd15a65516b4a5c3bfe4b003e424c6a9104f4a2337eb36111ed6d15174f497d06b12985429ab01294f508f6987959f784e4fefd73d5a37f5
+
+EntropyInput = 14579ce1a2b1096ff932dc3c6e382965f612cedaeff27e90c96e32f87a26a861565a1d4d16fc8bc351b50bf11886efa4
+PersonalizationString = c359dc157407a57a3eab7b6e9c96b1f0f632d533b2fca8415f43421dd17ffb25370f6d5b647f460d78761d54a510038e
+EntropyInputReseed = 27d3d9450109d02d52f090b509501f2a6d5cca3fecec1b8f2017494dc61480a5b9faae6a3c662290ce80bccb4b3c3a62
+AdditionalInputReseed = 469a5da3a1443d03f92b37d0693ab72f7857c5b83b47cb57c3ab88011a56266e2513c386df7f604fba73c54c2dcb8a9b
+AdditionalInput1 = ff257f91eddde25101b29f4f7753707eee7bfd33c9cc3d7c2ac4f2fa442e9ed87da43e1642d1601cef6f629acdf18f54
+AdditionalInput2 = 84db1fcd484c63e4915bd5680d96b8313cdf82eb1d04c12b1c40d8bbceeb23cbc4d05c638912c7c70b5143fc1eb79970
+ReturnedBits = 2604c2ef6914a33e0ff7f4d4e81da8b5acb74601a59da17d646a77935f15bd3406144c6b987bd8d446969791128bf720342e5a489bf1f5495b92c1df275f77ba
+
+EntropyInput = 83831370dbdbce5f2f08805ecee48a56fef7b85737512258aef97896574e3bded7a876bb70d29d88aadf15f940ff4241
+PersonalizationString = ea51227d7760fff9d860a002f0de373dc9b8ab862272c71d0a6556ab6db99e900b113a792457b8905760e377dd158346
+EntropyInputReseed = 868b21adaaf58a8391794fd259985742169db47c2730eb786ca28f80e3f16a2ebba6bfd00f37814f938000c6fa82af1d
+AdditionalInputReseed = a1a38cf26e0c3f85a042856c7ce9ec2c113b094e5ad5e662254692d2724357c92b177229b8fe25944515dccd469278b1
+AdditionalInput1 = 021af36650e7acc3c5f526abe7243258c5182001d64ce80d4bf0a633725c1dcc38f3f2b706771122bba5026c3dac6040
+AdditionalInput2 = 6bb52da34c8a4528a2585b9f42c04fc4487ff355e3b7a42c37c833ffac636de545aba156f516efa0bba52b9116986f8e
+ReturnedBits = 770cfbdae652c3bcf5096f4a6004a260cf61e84606cfd60ac6719d72eaf463da135dea671c00258e77d49d72c30cb2a5b66f79f33172581d95ade3f7d695cb61
+
+EntropyInput = 3a56e4585b56af93b4a205c30186c58fe9ed185810d9267f734f3990b91e366184e0b46f5f8bc7c364cf8ac5df643cd7
+PersonalizationString = c8725d49ec89b76b9c292cee1bfc22f7a6593c7fd37a9633f0341b68905f16ca25dd096aafd39884a2301cfe178c63b3
+EntropyInputReseed = 3e5a814ee09aaad366c20212d49f186e7e30d7bf7eb470958b1b356b6fdb1114c6ecaa8b18f39e78caa9c29726394241
+AdditionalInputReseed = c17a4fd0371f5050c3ff3579d2e6809a8e5dbe62f2be359f91faff5731031c6c2ad9ea8fdab10561f1fb9cb85dcb9c91
+AdditionalInput1 = b3428ef301e891022eabb4af0592d918ac6ee15de29c12a05097e9f5c0ec7f936ef5331c633a399c3f90aa47f24fd9ad
+AdditionalInput2 = bf0b17e658cb49d2eab681ca348ffc7663570a5596c884d96d1d91d5cb856cc9a72a7cf8c35913525b5e0194c5f83d8d
+ReturnedBits = 9321a8460ad453d346606d0fa88e44e4c0a3a32d43d84d4cbfa7adfe411ed4da44e458c168439279c9acd7287ef4201e7dcb60087aa80d0574cbadec2feb2e41
+
+EntropyInput = 4fe67bec0f343200570be31e93bb93ff5d1a2954d6ee3954fad31f2219e181645d95991eaad95cc203c2974b4f8f9299
+PersonalizationString = 84ebb999114cd10e2f3f9e8b231635cd9a5b1f894e5ae72e886367d1bc65303fa092f8aab9023077fb60e98f1a77beb1
+EntropyInputReseed = dc5ed24212fcf417b2646e2a23ad21363e78f7ea286417830b853f4f69298a260fcd54feec558d3847f16a7139151d42
+AdditionalInputReseed = a48cbba2165242a824b8817c712315f6cc63642549cb86f37ad5121007c5719b558554352d51ba444dea5a58ccdf5f7f
+AdditionalInput1 = 2d0188ea685a72b15555bfdda26107dae14665b2fbd9694eca5aee9f4c0b2122af518115c385b166ee21d63d20d8f280
+AdditionalInput2 = 31056e76fab196d34b794e2890536fd2227a49661b59ac240ccde597e41b1d038cb1be271e18dcfe4a58586532f6c7d0
+ReturnedBits = 512a2c24c7b1709cba34a7ef97cb16032a99282ffd3e80c3072821bbc88d0d4e236c17b99aff7bf590e4dbaaba3cef0bc4796f20117615c97356f4a745d12fa0
+
+EntropyInput = e1f2a326f4f59d685272c47f1a18b76c1e831da6aef5432e363fdc7e1cced7dafacf44b7763e24661bc92a7dce8ef513
+PersonalizationString = d1d0f298539eebc0a45432e40d3f82c0a42da5a9f71986d1e46c0d8f02d0518db5f7d4c9d4b7637c08283737f3d3de53
+EntropyInputReseed = dcdc9836abc8cd434989f337fc1ed1fc88e4b5c67eeae33c1591b956de15710ddaed7d5edb2686637970131dbd8f7ebf
+AdditionalInputReseed = a5b9655d688be8ff55616461b6dc7c8a63fffbe8509269a3bcdcf3d9625b8a1efd7f7e7e196c2df094cc27b6f43d4ce4
+AdditionalInput1 = 87ebddbad4cdc4c73b061e047ac0cfa77b9c01996a16caaef1ea9cd957953777afa781ac005eb5859d88cc878056f1ec
+AdditionalInput2 = 4f3d5b856e154fcc18ba7989f362c5f15c5fcc3d933f3de7e0a76a57561bad2337e7ba2235c4e44c5b8354323f560b02
+ReturnedBits = f5db634b5906f3aa68ef1ab78bdba4ddfbd53cc6043fd3ecc6df2e9c7a47bdf54080a46b689e9e5f96c85fff5b78d12702d0a2053bdf6839ffbb1c92075dd189
+
+EntropyInput = e201faec2d5f4530f1affa1889f1eae9809a8ae7d32a0414dcfddfa373ebf242b8c108cd6ceb555ad312188fb16511b5
+PersonalizationString = 3c33d15c59a59b0b3c39b008c17dbaa2e4137ab473caac6b00fdfbafa73f68f2e244a3151fe129ea47345d1bcbba4407
+EntropyInputReseed = aa3bec504ed8837779903a625dab0f6b6e2508df5c7ae5375a54259a3d7f35a41571668fe27a368d201106519ff401bb
+AdditionalInputReseed = d75bc721d3b2ef788f2ee4cadb7756e061c6ec786f7c8e37888795663098176fc74affa49ffdcb22d03e0bc597dacaef
+AdditionalInput1 = a624db91dc18349aef339678d75640cb5f9868b1bc77f9c40bcffdc7119f512fc9a9a4f53f88c1f2da76777bab87f073
+AdditionalInput2 = 4d947ecc8f47be6ee6fcab952bf3ad0f8fccd87e840ba931cd5a3b4cab650a5d86f84abd83e8866587c66ff93f37ecbc
+ReturnedBits = 7831e953ddccc19d5d31cae32bb63766b3123f3dc7bfd27f0fa49f9a615601a871b57109c2692306663905481f9df46b81a7adbec5ef14cc12fa68bdeff56a12
+
+EntropyInput = aa55939554523129c2ce9fc43182cbcf2ad88bb510a0e64960a4998187cd71e6b35917dea2fd1b1d77ed211b0bf49280
+PersonalizationString = 3f751fcc460760c60a52e2093ab0a8a6502e2f3e63b6ac4f0cf8c4bcf11c054c878c500c7da640333c36705b33e847e9
+EntropyInputReseed = ed4110727a643851e226b7bb0d07d35e54565d726beb6138b538227d94f32145f32aefb7a0a75d2139ccae41c4813dca
+AdditionalInputReseed = bde5690588c7f3a343f741f2b835edbead444859f46c5504feaca048ebff1b3786027760da9c21e5c1cb54369efa4500
+AdditionalInput1 = 2d448f2d9cbe1533e4fd50facce3a199f91d888824a0fecda74b16900da7b125507fca2eb7b39bdfd5a2ed680823278f
+AdditionalInput2 = ad4d127db0e78b80ee18adef40aa78aebe09f202b5e71496d2e0ac8d214c01fa6e98612c03a0741ae0d7b18bb90ba3ef
+ReturnedBits = cfba8daab4c996c125102c46fd1de2afb75d89a3caa83e965215d23291925873d7d53a8181a92fea3347c282da5fb1c0f0018aafbe672b9cd7c7a81ce0ae4956
+
+EntropyInput = 83ffd36b1d8c06a989e98cbe9048d8068550a51a903be288ef26b60641343160abf6adac16e89ab252647ff9e7e9fb00
+PersonalizationString = 49b3780beaddd3d25667c8e3825d49a4211bc9a05c18f8d4ed061be8bf529dbea68193bdbc7adf924e2796805b970f2c
+EntropyInputReseed = 7abcd3b3644fd4040eae481968da7e719533334d43f046e92f40ceaeb47f782bec6fb93ea8b821235a24c07f4e4d2395
+AdditionalInputReseed = 325b2ea7cdf22f969b0eaac570f9f391365a0cf6cf467d5f1eacc5c4f2f42e11753893ef92d906e359554351dbc87055
+AdditionalInput1 = cbf5246702df6d97e2d8e76bad1c928903abec591c3393defe1846bba02a0d7f56c4aa0bed78850f944322ae1de03913
+AdditionalInput2 = 8096f52962cb85ca4d59774634b0ec4dc91656e14c0c6f39f1cf003c04ff4f1d960a0c1e75a2d4dee7acd3938567c76f
+ReturnedBits = 18ba0571ab637e0d0bdb7d8c2e4e4a7b357a82649a1016aa0a1066c891ef54bdcfe39d72d0c4b9c1a8430302a66df9aa88c2d291c5390513478780044537dccf
+
+EntropyInput = c677fd96fef5cd092e02f0653ec726bf9c0e6b079a007e78ab7ce0cf76fef5fda2e96edf7dbeeea7614fc3e5976e3a6d
+PersonalizationString = 5952a661c3802d16e3e2446acc89324b3eab96a632bf72c1d15be71bd1269f0394cf107c28118fb6078227d640414e9d
+EntropyInputReseed = bb24e6a57996f75f02100c4fc88d2f635948d4322a778f05b91af465a9d7f65fe0470f187f6192a63032438da8f344b2
+AdditionalInputReseed = d69535eb84bef4ebc54bebe837512ca736d14851b03aa95a5243ff370ca82256d1a1bb4050fda61e2159769a0eac65ef
+AdditionalInput1 = 3a1b3dfc0cf19ca5f19f0aedbe443b7748a12a104df6659a4612006daaf1a3f567772249596487cc66550cc9a5a7e421
+AdditionalInput2 = cc764000320f3371709e92442badbee12beb7caff2efc730780b3eca22afe43ee70d5ec4c76c091af0896f471651dded
+ReturnedBits = 094d5299cf69ee54624b1808645379667da9d2ccf517644f9be021379b0bbff85f0e661cc4649bfbafe67e20b927b4346e5fa4ab86bf9f1dd5ef75971df8dfba
+
+EntropyInput = 4a07947252aab1a141f93601509b6a5f442f5e0fd455e6d69cf5d582a3961597c1f101a2bd25b3dcbb471ddd7099f843
+PersonalizationString = af96f1ec13d05d57409e9c06fc7c1d3000ed44b354932297629f288de229424ac3b01ec8af7bcab44a5450d7125ba47a
+EntropyInputReseed = 45a2833a536cecc4bb1f36a2efa369c46f471c7080c0d8230da21f61908bb403e11a38efcd7792bb81e1ec64c61a6973
+AdditionalInputReseed = 86a6db8b6f89c92f33c20d9c7f1f35e6eea25f3e62c7a7cefaab071b58e4dc72a996609040233cebc071210136064114
+AdditionalInput1 = 9195352ccf0fa004c3ea45cc3f3635519dc8f5a76f2a600863d8864518cfc7e4adc700af90504e5ceb8ec2f9795ca845
+AdditionalInput2 = 9e3c6656442c70979362b9cbc9760c59587449443f53bf4e8e7a52038f3cd4baa2715749fa9f21469c52761f1bed4fe9
+ReturnedBits = 35d26bf94f67fca762a4f4e7da4cd87d1239d2454b01ddc8f7c5db9449f55c5687c48c6483deccd29110e62421212197659015d7a7f2f48d6ddbff09916b641d
+
+EntropyInput = cd03d0a593cb6003e6009a75689ea7c71d28b7bea6b74b68e93092bc140b37b352ca8b1c396694405f94b0f6fe39a46a
+PersonalizationString = 263d10ef973fc877a3cebf512dc1abe5fd189f1c42b74f071843b6cde7b025bef4266f8f312b42f9258aa74fe0ede089
+EntropyInputReseed = 9a01b25f8d8bf3fdf0673c3d0b5a299b185ff42e80d223166908e4fa09c063a3fe7d335f526d2d7f7aa5fac44dac6d84
+AdditionalInputReseed = e712afbdac4fbd71de6f4ff5ab044baed9c7a04f7bd4bb142dd1d341cfd9c411fa19da5c19bff27d1b6ec283db0de9d1
+AdditionalInput1 = a4f3b9d8b86fa46d8c26f3ead6f8eb47cfa6ca448f1659d6d22542c3dd983ce2f270701c0651b6c0a10779cc6247a81e
+AdditionalInput2 = 1aa96f73fb1a8546dcbc309d3224986e0a4ae3520d2fe84b5495162b1e9d23eb08507206db3669162886ba48f7bf1f29
+ReturnedBits = 09d1eb9bac2b9ed71f6096ebc8d658b26f4a7f52edd49c2ad3bd9d00e57b05bd96496c0d63f53268a8f34cd3c3fd7543846a9bb2d85c377981f6e9b4c1e4406d
+
+EntropyInput = e7108a71402032f8be94fd182887768b5234b867e72dbcb582a2bcd3e480974d9c87809220c9cbf11867e974a7c75fdd
+PersonalizationString = 6924145a851ad22ab73e662117e867cb6a9f0915f22ce83213a7b6cea6d1ade79d67eae31352dcc1874e1e3fb928f0fb
+EntropyInputReseed = 44381fbe2a5f253ab0b37cb7982401e2b6174452ea66673c1262d5984605e5db4fc278e86110fdddabeb6a3916862674
+AdditionalInputReseed = e5d94f809a805d0418c44a84be93d904f24d0a57ebb4924adc7359761ab6d73d5b1702dea17f8c01877ee5f44fb5c5fb
+AdditionalInput1 = 1d971bf8b364379323d6972bf0dc8641a229875921b39738ea8dadbdfa0ad35118169b4a14b0cab605bb18c50265db06
+AdditionalInput2 = ed85705969091f43e323dbccacadf7a3ec7d06d69b2b500e334295a6874e415dcf115b99e22abac78b4adfa10c780695
+ReturnedBits = 663d9ca9850d48dc4d950505b3cb2cc06866d933a8b87bc58914f9b8e959d434064bc60008b57f7f1929637a6ff778bb8828e55631b4ac28522296d65496934c
+
+EntropyInput = 1fc39d0e57522b52d0506817c82422cc7c15dec0d275f8f94a4156c8ec3b698dbede1e15804b822df6433d0afadf1a50
+PersonalizationString = eebd8b078b8004f1617bff5934179f81463f43fee8d043762345bc084da2b7e97011cac6f488e31da5dc00a7af5b97d7
+EntropyInputReseed = 60bfd2529b391204ee817055c8baf5d4a470f43377394640140ec122657787344a9d5d2d65d112ae203fc78e7109872c
+AdditionalInputReseed = 86ff4f5942d3411751ef6375f8c65016d43c132007cc95835b104b44f9733dc5caae17d3da663369bf4ff82adb830443
+AdditionalInput1 = 02a4bfd4a825e4d811770127c6f5a568deff4d7989300a0bd23220a58631e03e138c55b565032b8a7c6f3abdd34a0c30
+AdditionalInput2 = f9775f8fb1b767c4639e2c3fe9f0820e03e28780641ecbf832451baea5e1ef83cf9e078cc325b1fc7a8a14bf07cc4ff5
+ReturnedBits = ba473979f23358b95ff49610a7b91936b7d1da44bf8891cc19ac6ceb9f0241a8c3771a2efb403275bf599aad30b9e4604e90729241763801387ab239ae543625
+
+EntropyInput = 3fa904747034cc3093deaac497e3c143fa4400accfc55885717fa943f43cbad1a89168aa76961e150e2649ec1ed67361
+PersonalizationString =
+EntropyInputReseed = c60c5b415bad715493486b7a123ba6c046089e9549ea8bb22a7ad4108bec98117f751a2e4cc20b02510d2a3d02605b4d
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = ab2d709de881164b6c2149b21eae1517f87561649e0dd9ca5ce551c5bd12fdf7091e081d307123aec5ae7c30afd2a64c8d136ea07f7ec5edb4400b9a64456642
+
+EntropyInput = 0912b0bdba55ffab83d8e932b2c1438003324ecc2e59933d6e20bcca9b5c342c077e75f47e1d3359dc3cb69bece4a1c8
+PersonalizationString =
+EntropyInputReseed = 02e503bd3f3485988d5e0e6af4589fffda797093e6fa77a4a84021269fb8e2b58ef70ee9b60f79455bc9c361b7e43029
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = b16a7e86b1436f13aae41576df303abd131fd45886f02f48ef8e9f570685ffcd0dcc1f5f1d3bedc2de3782290f36bcfd4684d76e3e56a32b7509f67f50dfb14c
+
+EntropyInput = fd5efcfa986060504db921095638cbf70c78b7fdb1b33d77d4a557ef47a365308539844be41603e97a78fa9f5504a498
+PersonalizationString =
+EntropyInputReseed = c99489738767ca8b22022e8ff1aa5aa6289f2a822e4a8c9337ed393db4ff5870b9952af53e88bdaedbbc0026256f9f6d
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 607b455eb30193400251612d1f967afb7a7d0f4eeefd690411b32b560bed69ad745690f98fa58fb0998c063e526d124c4035f565ee9133a86184d6c01350a5d9
+
+EntropyInput = fddf8a151266a550ee2c728fa25dc592c6d55c644ab0d3cd7047248b31e2dfade4acaa8c40fa2cc5b714bed1777b3d3d
+PersonalizationString =
+EntropyInputReseed = 50818e85d856059a8ce29ec9c8c0b854ce04199d128165355dc99c258047ce733a324ead4d334f07aa4cd33e2fb5f277
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 3a4fe07962ac269b4f40cf5ec02150c15b076e8dff3478dfbec9bcc7049eb846b86b2e0dbd2c1e4c387b77c2196ae1df7921ef6655700d9cffcd93df24eee4d0
+
+EntropyInput = 9f9a5202a542525b107bbbf2ad34ed1f9a3d6a27f206695f8def3c2190b037bf332ce3e2dfd65ccf74efaebd518fd345
+PersonalizationString =
+EntropyInputReseed = 7e962cc7cab231cf76c27022c01a796b76cd97748173553314fdb5bb67cf56346e35bbbe47f36f989aa16074975b6b5e
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 4162fb10e25b3754bdfb913a9edd01567e897b2a1b37aea8cb7af069f333a52ae15bd2c897160db034bfb54d53481eac1151064daa3ce88579838efb1d36e077
+
+EntropyInput = 8f5ffa820103b8545c4812ae70cd77f53917daf97e79c1961492ee1f6a72d67f4f9c4bf848a3a0b094182afdaeb83e78
+PersonalizationString =
+EntropyInputReseed = fbb08a78bab992fc76a5702c20ac2765a090d2d4b8be5a312912bb66576bd152e706bf8080d4f239680df91ac2201608
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 811ec725c9a7b3abff962bf7c28b8fb83bbf394e100a56a1e40281e37221e8b03661567cdb2ec57b95bdd5f4ce89adae3d43e3ba4acc46faab26a3d5c7a973a8
+
+EntropyInput = 981d97c7750e5b758d490a768dc449dd6e1221903a7065acb29dd24d63f56442e89dee90a6f476cad8e82a129b5e894a
+PersonalizationString =
+EntropyInputReseed = 62397c5d203afe8d29a2044f21dd8c102bb87d36fd67d5c3c22ad6116fb3f3f862d3cacfe18b851e81b5bb3eb074f970
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 0a58da0e42ac1186ef8e1ce6f851e230edfb91ae3ec09fc374955445afc8fc59713d055180bcd56c3ca51b71eb6edaf43eead80930360d09300e16b551c3015d
+
+EntropyInput = 31d50ce8e925a6838f0834d75ad61c21d29db48a8339f11adb2a29deb460d2a3f6ad86a27bb008c85925c540fc9e3398
+PersonalizationString =
+EntropyInputReseed = 520da253daaf681409a82aaa2fe16d6b10dac5649daf4f1de673d1ed7c6a6b8e45d07752f81775c9d0034545d6535a8e
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 7212da3707f4dea6828a1e7e84ee7bba2b8816c111a7f6643d492bcff5f4ba5b10af6b25edc567a8280dad557c429085f5bce76ecb8f7def376e85ea999e815b
+
+EntropyInput = 1052e52bcffa8d9bcf241662af4b281c81db5baa8a499c1a113255ebedaa2953888d39c80e50cfb477e8a2aeb1b7e432
+PersonalizationString =
+EntropyInputReseed = 23e2d6cc4ea030e334e1a1de4fe71e10ed0affe7aca2b42e97b9149936910b93d950706083ad261d51a17bdfcc7aac23
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = ec6f01e39f26fa63d438f1aa82564d7e0bfcd0c3c4671ef107704cfb6ec32af5259ce14f36049388891dd2d236b2073deace8e55c3cf4b98490a6fa4342e004e
+
+EntropyInput = fc5bdb0953cb88e240bca583eb79a39d61e765683449e15e7e6c3fe4f2e46f023d7c27f35ca9c4288d2f1af9a11699cc
+PersonalizationString =
+EntropyInputReseed = 48f5d652158aa1b63181654aae4fa35e107866b2748147d666141a60287119ef7edf19c2ee527a9610af885400e3f83c
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 2c03106ba0d39d44ff6a45c312c525e99f1f96680face83e12755ec60c22895575a0980b338967e6ca390abf8bc3d4efe24d2fb7ea83c2919f986ec7ebfce52e
+
+EntropyInput = ae2c5d1a8d8b813f40d3e26563fec0e4062093ddb63df4bee7d102c13c1026f3cd0c818e2af5c7dc3d3e3e1fa6d566c2
+PersonalizationString =
+EntropyInputReseed = 6d8d60ef2f87f941b100f3c1214a751b23cf341b30f7f7ebb183050fd0aa5d222e876241840202a9337aff17d702682e
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = b7b9f0bd7954c0e045bed86c3c2e23ce3af17dcc855ec5aa4f04f0929351ae6698bea4f25ecff4f52c2f6d758eeb9412e583914d33e914744d49dafb2740010a
+
+EntropyInput = 730611580fe7a08da679f864654fde5a8d564d68dd41d2a188d79002f8939543fb7dfac8a656760fa0f66dcc2116176c
+PersonalizationString =
+EntropyInputReseed = dac5d0bb45262153d71cd330dff522446816ad5e28e3866626f6e7fe5b6d3170d9442e7261a5ce0299155cae74ea5e08
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 470212b1900fb4b1f49ceaf8c0333faff0d2a79fd5e913d52d66970ab31f64c297b55ee812826ce7ad358fe55e48b896dc4442877a05c2526da0e5188f6fd5ee
+
+EntropyInput = cdd463977bc88b0e660f3cece4fcf4097fc79f1e20dba96c819644c370043ac39d4997ea9f634969a80e6da6d9dd9e9a
+PersonalizationString =
+EntropyInputReseed = c7dbc97c209064a4a663c865e9d4af0da3f709b6c17fdd66a969054856aadfaaa1b97361d5a6d2ed8e68ccb203aba8c9
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 8262e79752c9e3036e00f36c5b3d06ee49555c599193ac35ae2a3a2a6bd07c1967e7c0fb4ebcb14e422f662fe9cef08be746bf27f3ceabb7ff3d7168eba0471b
+
+EntropyInput = f47ce5663ea72ce3f42b00838b0e8e90adf6746d355b5cdbbfc0bb80e335b049ed28011c7c0be7acbede87b57192b1c3
+PersonalizationString =
+EntropyInputReseed = 61cf9447c7c024e0a8ee046355e3924373e79fea7efe1c3c8b1f7bf3aebae246887939894338e304e53d0141b4c22c87
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = d1ac84903a9bbdcdca45bb7cee7a5f49e14a68f0d8467da68adcc22c9d0bb02118b3bb7f2d4e11c698bcf421edca5338adb0a29b291fea9f65a480d45159da95
+
+EntropyInput = e23a7f95c3cf3fddddec66cb16e1fbc38495ebe98b3e14d8f351e58bc457cd38b7975984998ca99e9c2d14b34068c3a4
+PersonalizationString =
+EntropyInputReseed = 36410abe456d7a51948098897ec205f75f22ee09cfcc94ca88fbaff8d159fc779a8e420d11fc1ac09518237bfdb74462
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 3c14a63a9c74dd02051c0147637401649a68452c28af90e9628f1ac87df1d27671397ba34f493997ef634284b74b3b28b2e7d4171eb025e470f39dfd12636a5f
+
+EntropyInput = 696cbd64f07b112155e7fdf5c6f4f305ff0e82f9d91cc012e225f05afe8bce3114347696b63c46ca0308adecc0d6c908
+PersonalizationString =
+EntropyInputReseed = 23f7a55ae9bd6d13e4999b1dedf4c08897c41e12a51991ba40a4f53f19afdf514a77a5808c65abbdbb22cc70c2e41bd9
+AdditionalInputReseed = beb4213efc8b9f23b7e207061beac40e0095e4d7636d97504b16ea972ecea6fc074145d31847441a310ea3d09d2c2e86
+AdditionalInput1 = afe68249563b6dc7abe5a1f691d92f378678721478bd452003a8f72db0262e40c55e9e56561a50916675903a3110ca6e
+AdditionalInput2 = 5f21d784fa3314bd386fe08286c5c903c3f77005425c6331bf903233839aa2306e34077c91dc5783b8b946410b1785fd
+ReturnedBits = 975c38fb3191d3e15a808442a6da6e2727c373aa64a9b16fa469c23cc4c22ff8c1c33949fa6188e319d6d66b0c3caaab7395b38cd54979aa18d505259d8d2352
+
+EntropyInput = e6dafe8ad4626db2374c09e9863d4e68bc5ace27a78f1adb3de72bf69d29161f6f153637eedba35cbfc678b4c47154f7
+PersonalizationString =
+EntropyInputReseed = 59709d21325a5de09be908d330b7101d1746698717ffcb53c31b44c2bd5e5fd2747ab3d131d9004d402870c779a3e307
+AdditionalInputReseed = 882ea58eb50306a7fa6148c415e4022d0a0778987a35dcf0f670cca8ab528fea2e9791e322397312d7cdb6ebf0390d7a
+AdditionalInput1 = 1800ec4678b31320a592d8a7cf8f4ef4f7aba3f557162524ba6963dfb1632cae34e8d9f6a11e46204a3b912aec2a9e54
+AdditionalInput2 = 0fea4f0f327dc8384d51f3601601277eff9da6dedba17789dcf6a0979351ffbf5764a61e5ad34bcb12a2228644348357
+ReturnedBits = a463eb0cc9a7d24f986eab26ef86a542d82969f6ac993b8df0cb74ae1857e717b8bc36297f3fd4b56dcc305483889ee1140f2543b74f3b152adf1ccc2b3f7dbf
+
+EntropyInput = 24a5f6f936a1f433a727ffff1d15cf440dd0781da36ca7918f0eee0c2699ad820488d96cf27ac0689c258d37c7ff343b
+PersonalizationString =
+EntropyInputReseed = da9cacae8a7c86a1bc5598cd1e7e08f25cfd69aa6f931f7b3207ed004203ff7a6a673dde6624fb3f79057975e0767f50
+AdditionalInputReseed = 6954e7a17056b7be8ad3e2b5060b1bd47c5181bf15c561a62e3917cc739bef24c40068a28abdf0f15770ed6c26f40e40
+AdditionalInput1 = 997a08350845e10b259076adc7b60a94091b0ac76f643c432d9cfa700335ed5a6ebc4069f86dcfa1e8b7348eb6a77382
+AdditionalInput2 = 5522a7e0da07955027d9b4f31c434909879ad363ac17a46daeb0a81e6ba2e3820699944758c43ff16bcd5f9858bef9c9
+ReturnedBits = 7f7d10dba2324d251c5554717139a620f5eb788097c14d929329a0dbf02a1d88579cd070faf796d0b689c9ea7c576cf8276b1b2aadf0e560a7acdb3069ec4bec
+
+EntropyInput = 9cefa1ee090dfbfda933ecaede9d864b8d2f1e4176afd5446e6e3e07b8aebdfbf1dfeb5c30afb02c80f6d844a0721e16
+PersonalizationString =
+EntropyInputReseed = 24be2a8e42f170fd93de159775098618f6511f05b677efd246dce58eee5ee9894d681abe5b718f2def41b52fe3347376
+AdditionalInputReseed = 5ec66739bb2d02902cbe54dce7247adcd9a7139a230c7aaf3ebe83dfe47040849f86350ec1f12efcfe31332140b0fb49
+AdditionalInput1 = 82e905cc9fc61f33bd3b76d33132692bb182dce8ffda7b5f9f13ffec9e9eb170de967c4a3bd66dfbe66c38fe2d63454d
+AdditionalInput2 = d65c7ad438b6b27eddc7b6b7497be3f5f3e888b07cdd86fe3d81ac0aa0a2d53197f3bea5968b41ad58701fc435f34cad
+ReturnedBits = ba66e163d35ce7d2d2878fbc9e7b49328eb70a3b06dfe9aa1e9d789fd67aaa563c4692a98655b7ae77042f4605ce99575dcdfa2c96d93d76eff44cfff79f34e8
+
+EntropyInput = 538deee0c59fe71b6c67ea8b0ff5fdc1f3c94abdb1237dafd6e9c986a445429aa098a6bc55519025c36f253ae1cedcce
+PersonalizationString =
+EntropyInputReseed = 9d1639bb40ebf02a270f49205a4f5da3c14583b45d7064f97f552282833e7338fddcee59e91fa8089ea95eb6da493c31
+AdditionalInputReseed = e702bb3d959cc168796a8e210b805e00167d2f4d3282d47235d029597f8a90772e904e8a581999db0ce010b3005790dd
+AdditionalInput1 = 3193b378390351a8396eed93bf1f41d748bc3db178442d7e76f4aae057612861ae27a3cf71b2a1785d96d59ce02e1c6a
+AdditionalInput2 = 238956e0d206d4e992ab9c45877d9953c1e48e76e0fb46d8717a0a6412cc9e9c161894979506694c63c8eb8c5d106767
+ReturnedBits = 7a54f50af3a59293781ae8438c6fb0ffddde2a3300e605545cf302d97b81fc5e495ce382572dc76fc9874cdfb31722822bff15bfedcdce2f70e5f89de5b41c6c
+
+EntropyInput = c087c716567683bc3880be56e322be85f6dfc236d34cc627f7e3cbc0f1ee1f0bbd2aa75bab3f4a96d85cd3d597c4d20b
+PersonalizationString =
+EntropyInputReseed = 4631d87a5e5e8628fdfa55cffcb58667ef4cf8e4b1f5eaf0d5fdb7e2bffcc805b74aa3c0f1ec95fd1ac0a0be1c1f8669
+AdditionalInputReseed = 6be58d5297f9c187ca97ab5b662a295fce4c279bd66f737c70b760dad0db4cd59c277aba7fded780ed878a871fb8650e
+AdditionalInput1 = 654369dcce049648425567279bf08079a9a55b172b609507799aee7d85997075292f8e988ed0ca596598820495346357
+AdditionalInput2 = 761d17aa9eecfdf873f07fc216ca0f785f334e4fdb874ffea87d6009ef47e233cdcf46d3baf6ec645693f2c9cc4b6d2f
+ReturnedBits = e25a8b5918ec0db4dbf7217abbd22694641a9696a0585acb117791ea04e0aedfaa78a24b086b2f7fcbcea2e4e7d8d1ab06a4a483008e19de51aa1ec007bf4957
+
+EntropyInput = 239f0a583c5ea02cd5edb9571a81dd47bf50e614615464522c1e6a053361e782b548db78aa5b7064dde3c13fc40f6099
+PersonalizationString =
+EntropyInputReseed = a8b9f994e207451b8421ff5559f75a4a4fc227bc865b67faf1a05f2e87dd5e059b76d67a14f68451143f3b6e1dd7a4a4
+AdditionalInputReseed = ecc955996b08c3a27d1dd77c6ad2762a0033ac1d5986d590cc087054e6ad3bc68841f334d3d2051c406c5c7687a32bc1
+AdditionalInput1 = ad2055d4304236818520e1a9d086b341768bd9bedc35d3b816576efdbd13aa2d5f3c34d5bdad99344eedf0481493f528
+AdditionalInput2 = 2ad6950cc9335b6cc37e4fee05a3dc6ccf8c72a7e6fef9e9bc7e5a24ab824e7072ed8f0a7513c51c2ca38d562675e3fd
+ReturnedBits = 26c555adbe8f156f5c9eded8397aa3eeae2b43e303ff5f9226f4f59180cb4d562ba2ed4827fc2bd94df6f5c689280f4c7f3cd6f36e406eeddc386db6c474d9b9
+
+EntropyInput = bae4b76ba2691f2b947489b463ad9d954e38dc48c94b8ad117fb0c10e1a9141b54bb49275e3be6c89c6cade6c44a179b
+PersonalizationString =
+EntropyInputReseed = 09b4280c60a3c1116fe92623b5ecd59b2bf148a298b0daad7c85440df94c20eda126bd52363006ccee2ea22ea3e3691a
+AdditionalInputReseed = a8fd5f95e64dd4811b97123d1708e9450a766cad88c39ee063cfce64bab2a17eeea6640abd701a345a588587047db9d1
+AdditionalInput1 = 9bd0c929014b8f036e2bde9935d6f8f93ce6c511400e72a5e20c21eee7eacd6b8f22bb1c12f5392b475503b03bd0bc30
+AdditionalInput2 = c56f4b4b85854d4ec3a10f3ff3e9008f5bcd6d81f8d79357e65f4c7ef1ece3dd7622cb4bf6761f18888cd79f1f8b7aff
+ReturnedBits = 29579a8fe754eeaafc6b620a2e50ceb18392d757f20bcc679ad0ad61441d5448eb15b3acfc972f99b5d0f856091c52174c5d6b2f3906253d9f1a6865aa06c8ae
+
+EntropyInput = 99eb1b06dd877c3132f4f2a78dbd0cbd74f3653af0cd9e45cbd23c2f8b431a68d95b365977225c351b3bc1e93da8e726
+PersonalizationString =
+EntropyInputReseed = fa48fe933527d763cae6605d04cba02b5b4b0ce85122011a28789bee1f10507044a021ccd92460284fbf14486c3397c3
+AdditionalInputReseed = d96d043c93229dcf3a939ee2484ba9f9cdaa3c8488dfc1d371375320be951cc3336da48ea2f5b2c08f6664579160bc01
+AdditionalInput1 = 68dc3b3ceea6f4703f80030481aa81b9ebe8fa5d003734719a042d755c14554af6de547e6beb3d9e8a6e675ed15181a6
+AdditionalInput2 = 95783ace4b7ea450e042d65b7a4df3fa5058d5c9c2eb94fff88fb30cb1b9132bcd07abca6426aac48047e72baaeb2b77
+ReturnedBits = e47c11f7bc387be3fe4b70ec354870a1d735c45637baa13d2740fb4b265e485a6b5b2debad2e35fb5ce877b7c608a7af0e762a7dfe95ee74dbb3eb67b01fa125
+
+EntropyInput = 3a319150f3a66831790654961a617eaab9e520aa43214e2fb7807993c9057e9f89a1a94b9540c849759889d853ae9915
+PersonalizationString =
+EntropyInputReseed = 926844488d834209ed8336f67027424bd38581c07403542e70049980f081ef055f95a20f5a9688a2fa00b213f41fed1e
+AdditionalInputReseed = 37a730e1d3e6c0ebba1cea9dddacd308d95cee6045cf4bbc8f822013942d22fbfc8fb02bfa90dcd0f659a00cac1f3367
+AdditionalInput1 = 11f33a6b9d0e37fefac04c43f5fe1e053dbbf3ddc657fbe1f4cf95f28c62b10f41888a530b083cbf3ca783c864ee76c7
+AdditionalInput2 = ef8370eed1e26d668f8e136ec1159b11bbbfd771bc5bb76a37beafaee87a077140d8a4e40cc6213e0ead81b51471e60c
+ReturnedBits = 455499d161a9e26c8bb1b70de54758d06a41647858a0a68f3d064de623d70c4ff7c92a5dde2938a9768345fec96b4339b3faff2928e200f889f838576fe9e795
+
+EntropyInput = e1a78f0625158be30cfbc27ce1598f1ee8dffd8e9747e9fd0520a372b0e36106b78f221085f6b69d19148adcdd6bbcd0
+PersonalizationString =
+EntropyInputReseed = 0cffe9c0c062f24e8e67965895960cd6d09d35342df5199bf845ac06479545f63ad62ceae27ad73379cc15d100d6c887
+AdditionalInputReseed = 2b82e687ab86690a56e3ae92cf87aff518c27e7b8cc24e77b57ed40bc432259c0b5f0a7950b028f698ad7384be2e1229
+AdditionalInput1 = 464b2ba2823f1fef3ee8a6958ae1fd1589e55d60891e7be6c36c66d26c090bf3d4ec68f91485eb4c9b86894f1dfed962
+AdditionalInput2 = c9039d29517629427da78938835f63b370cd3502fa4f7251e9ca38d0af246285c4abd5e3ae18a3e77efe446475b75e0b
+ReturnedBits = ae710c09cb0f567751ff11e6520603bebc1ffb6c0a1f8515f2bbee1aa9e1cc7f7467256151e1d89a305e0fd582f2df0994710df1341eee987bfbeba19efcb0fc
+
+EntropyInput = 6ee41ac596ed7b3373b541149910ea49a4d3a96cac508ecbfff7468e601d15dc524cd1d736c7fa67e6cd8bf673c4acc4
+PersonalizationString =
+EntropyInputReseed = f5106b8e7eae15729fe79dbcdfc7c9a70bd50193e5eb96234d91e5eff4d339083f1e6a29da9f8e497cf22b8bd66ce608
+AdditionalInputReseed = 22b8e2d1f65b7bf2eecec1e9286949a26e51ff12bb5a4086e0218f41427ef3609c479f2f20717d010b431adb53e1c603
+AdditionalInput1 = af62071a469fc914125bdf0131ed548dd183745deb5e78ba70f5475c3c63d24216a031b83d53eb2d62c947fab1d519dc
+AdditionalInput2 = 8c5db258adb34eebf8d21af1aa63081651b3b4f76c079b075cc56d785505d4c6bb2b75646030902c88085214e5af2e65
+ReturnedBits = 21ddfa8077fefa535453b7aafeb73ca1adf340913afad50512b81568863fac6333fb777a21180976a69c42c389709c0a98dbeea33b74dd22593bdec1cba8696a
+
+EntropyInput = 2eb1b2c3dbb0a601b9701db0f3f634d3455c81528c5569653df92f77434d478561ce8860a1cca685a95c82154c05774a
+PersonalizationString =
+EntropyInputReseed = c3c6411cb7cac3cfaa3ac687d192fb7edfdffc615119e0b3d1076693e72faee5dbb248afcdd7d8e509920e6957fefc55
+AdditionalInputReseed = d83e03b9148d445eca62181692a36622f1d1972a5c988181d03a93f76554e9e7fedaeeb02683d00ac539189bcd0650b5
+AdditionalInput1 = 9e98f715326be4bfec64da9c7d6c584440976dca41c3f2aaa3c59ce3be9c3c958d167b41516fc4c2dbdd0ce7f70154da
+AdditionalInput2 = 24b6d487a69f1fd551f3eee4fcfff0d52fe963b918aad7a66c146f922b851ad4640bac3588b46a7e55c41bcc27f7f112
+ReturnedBits = aa5f42043d1e39c039b6ba8fae240efb2aad26c50dc766b000e64a083cf474051db2ed497f3db68f9ea6a2961a3ee17be58129de443c0878678a021de0d23e18
+
+EntropyInput = 48a77352e7024eda47bf94ebff6cb61c787e1e4afa223c254f1fdc8b710b27b44c2e8dbd321d12a6f5459ed49566761b
+PersonalizationString =
+EntropyInputReseed = 4cec0ab21a20c8192c1297cf6488094e779323cd78e17f05fcf0db637293fb81c8f23525e67baefec952c34ea23a7a6f
+AdditionalInputReseed = f7ef5f553bd34d53159b8a438b9ae41947ab4f452f8ecfa61bc09c7d974b53936a14b500bb90e8e9d3d5cf7341a60da0
+AdditionalInput1 = 5ec1773485779c3d6229f89dc6c16099e7561ad6b9823659c1bfe39576a46fe3be9127cbc4e78782fb09db281b76bd1c
+AdditionalInput2 = 53991f7e6ee6e71b0450ae2e9ae7c2130c890a167bd8b35e1f5f8bcaf99bf1d6cb1b359bf6ebe93a32fbbab581139fb8
+ReturnedBits = 697b34f542778621d1621137571571610ac54c2e325267c1224388dba9952bcf0984f6228002b8e1fead000a69767b953c7622620355066f788a796f0aded662
+
+EntropyInput = a28d23155b97250a9ba13c23f2e91cbd3994ee8997d305b1b57b2d911755c62584dbe238348d75fd9abe4a06ae78b59a
+PersonalizationString =
+EntropyInputReseed = 4b64fce21664dd54d0532ce92958d276d4cadfe534940a4cafcff711c3758d23ce1c141663083b6f2a477b9f25b70f22
+AdditionalInputReseed = aeea3d5569b13ec42c1f624673665ded1f7d5dce6e7157954f7c513e179a92d4e4bc72278ab8616206fb5b7fa1d35a8c
+AdditionalInput1 = aff406d3d514ec118c9a8f470db34922b8bb262f78c1ee6ecbc647eaa2c0e4d7fd33d81b3c9067ee4c57dd36d4023860
+AdditionalInput2 = 50d8e7887df0785c331a381b6f11057ed720abaece80b7f8358386fabf5da24a912b8f1563301fbcd7ad240c03a5e444
+ReturnedBits = be0045c0bee70daf5a57e5b449fde2e9320a0e0d429950ec3b8ec14ca2acdd7ca2a365bebf11f45f356c34f7e52a8c39ac2e141815134bab3b79ce3dc1d2a44f
+
+EntropyInput = a3687375129c9886ea48a2f49be328dd2bcf46689a59de69a929dcb01e6b79ac96f98dded9e13811c25c55597bbd3f8b
+PersonalizationString = da7c742b408deb1b026ec5dfeb00dd075f48069c185e5d355b09eff88fccf289ef045226c2e2991e20b0976433994c0d
+EntropyInputReseed = 40ca114f31a545b929c4225d0d2199743a5df36a8361892d5cdf35218eed6354a65caf04d861f61475625b215ac6383c
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 47a4521dd45c7b72e39b7bb6be14bfb4029f33ea87bf11f1841e01d3372d7a0c6d1289e0ec60599c28c40f382f7dce33cf81575520bff5580087f3010880bdbc
+
+EntropyInput = dce0fd6c4acff8f509f0deab6906ecd92216d26e24f80750613f19a0571683a6808165e334b9128f8b0caa365dd9254c
+PersonalizationString = 550d79ef8033168cfeed3158c828b88a09e99b62ed10ac65b3353454774137bbbb3d05da17628238b7200b6b5765f9d8
+EntropyInputReseed = 738c00378b798a8ae8202febd23b0349fdb1b27d0dac458a017a56b394033818f9aa5067cff49af5e03e266c65fcfb5d
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 6f06b1f8736a25639033526a84b1215cfef49b1da048f403fa7b34a147c65469ac396f20dd6892980451daeba1b87c3d471f32f2d09b4f340c3e35fbfc1b9969
+
+EntropyInput = 181c55914e457253d466a562211632eb164c832b6177f6141e46fa9f2c883159fe2331f9f3367f30cd2d8ba1e8935055
+PersonalizationString = 154b2afe462af65b12dbe287265fa5a6c256c00d9b7e4c3e2208cb696a7361e9bfb67c8ad4e8a062f9d1d4bc4a083b47
+EntropyInputReseed = 03f7fbb8fa8e99d735dfd0641265db188962a6d7238cc87ac6250f1a53897d0741b1b017340cba4267c510a812b22a94
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 0e8d007497033901b3be460d6c545b820f51035ba33a4726deed2dcd2405e3106a8c79de929f79ee92a55e2e65c0dd63b82bcd19a0859921531e063a07dd0f8c
+
+EntropyInput = 1fa741e73b3b75e9977eec90205c34dc57b8cfc170840792e0daf70f3a1189b17b689923c8487c26846595148775a8a9
+PersonalizationString = d59732b5a15dcf62c865b52fabce9306b2c156888f8430f816d07a2c15f215e7e96089945c71a60d11260cf2999a9bf7
+EntropyInputReseed = e2aa12842d2d5dadcbbc1501172447e00862630414cdb22117dce2cd3deefc0da218ae267496664e3b7601b4d6e7ffa0
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 9d63f1584b41c0a3393b88f144f25e74496f38a62dc4c870b8a285fa08196c2d65f9d92efcdedb4a4151897d7998d498a062c4533dffa5701c78dd5746864f42
+
+EntropyInput = 1cd1a07393d6fb0e28d120a579d49c6278ce5f08a952cba86c58ce712c94488ea80585b8049109caf79179c8ee307ba7
+PersonalizationString = cf7dc609b10ca13dd9ff5eebf46c7b877730ba200126d466847a79e85e0985ce86ec4d102fe514d3256950d069b40a43
+EntropyInputReseed = a2a5fe3407510eb82dc9cbc3a4811f9c92832b6995b678411baede9deab68c5d7b1213c139f2e01439d76853d0496477
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 14382bdc4e430b2c896c2c597d2fe85f524e908ab23539158cfdef481a69409181f0594fe6c54db7a052b001c4cb03d6a707b59239e7d5f1c6e08aa625740c2d
+
+EntropyInput = 14f5c77d7fc64b04d3c73268bf936e6c075b3269462dc6185884421331b7a840fbc7c3c31e269b2bfc8cbca53f854c98
+PersonalizationString = e4b396ca9ff4e407900284084aef7aa479ead22aa672565d81010f1d4a70283676bdc20cba71f8f0ab8d1e024a0d2e66
+EntropyInputReseed = b632afd8481f67352d534e240cfa4f5e7405707df5ba17a41cfa17c574b7097558b08c361c6f0465c7351bc2cb96d7d3
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = ddbf4c5dc322202718d0b48a16f18c14fceeb9d178e0fb038b0ae6b01d6b0d6dd06649e8189726f12b50f7ec53f250ec18078da67b56fd7ba8cdb3cad1a602ec
+
+EntropyInput = 45329bc74685c7b29a1e9bb9e6c19eacf9a1ecd168be3b5a2e2ff437b5e6cdd56e89a4b2b8b6abb52713a48a51ccb302
+PersonalizationString = d6b1955d30db953a4009c7664b96aef47cc30d33db74986b171eb199c39225e0ebd25c7abacc06ed6c27921c2f9d7e10
+EntropyInputReseed = 6e5c464cc465801887c57291d47475ac481c98d033a8963053f2f614e995d1435a4b2d5249cbf83f620d74370d48c581
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 96c6583b98f2d75c9b6c87aaa788ca6dd9da10b02732001b55ab1ce7323cb4d60c6059e1ed95c0561302d2ce4381bfae8c2b7c49183ab72b42f80b7ad1587b75
+
+EntropyInput = 633ad6f4cf503c71746c19ba663d33c44b117f5fe182904059f19ea93a8695cf8d919da9e26f5885305294ea251f8118
+PersonalizationString = 2cb14794de9ed71b4c72ab22190a18581c1ce5dc4f29690bd5825faf8f067b11a06590dcd7476fffaf89c97d86b42d96
+EntropyInputReseed = 55c49d46f10d0854a804bbf2cc69914195af227afc5ea2b235f49d7558f74d0269c4fa96e9e1623cc85813eea228eb43
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 471ff70df171535368f196bb266100dbe1bc3f2b1ce1e2d6055f40976762188abdcfacb52b8080bd241b88feff2e1c1674a1b7c44a9f6028c9fd6a412fc44318
+
+EntropyInput = 751e977d7758c7502528bbce7ada64c1ba335a339d9485fa91c65d4e6697eefa46ebd3834d80db42bdf950f6e006a55e
+PersonalizationString = 5b42eb479187fac0972e5828f27a5f73daec306e06aa649f5d5ba53bc1a6484c2ca35bed946fa1a43ed34065579e3fc0
+EntropyInputReseed = d55d4a2fc2964ba03e0a303abab5dd8f38102606f00192923aa314de9fa40f62a4a5d0d162e7174ec5ec6e4d2b24f0ff
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 3bb47edc5be1049228022c593bdd6c84c66796b5ceaaba1d9198a47a4c35cf18e26e33bf4642e9cc2d918a6b6f957d183a561afd595f38b78de054c477632691
+
+EntropyInput = 0b51135d3da2432fcf11dda087f7d16fa5eba2eba0e1648d20d9e9454c20bfe7cf4520564539d6af4c508a3eff21a07d
+PersonalizationString = 1f167def62fd06158b63e46f6270012ca98f5bee3f53465ec75460e6f1461c40a17e06f9a198a589b176c51beb129541
+EntropyInputReseed = edd8a470ef55fe2168ce5559a6b49b70f8c103afbca8abff760cf753dc54b9daddc0109d33f73b5cb41ac35ad17497fe
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 7f3730cd13399922476499cd42a4759ac212d28601a3497b22333ebcc678f6d805f66cd1b982bcbe9f4b3638487189045efe55ba19064c9f075dec9e55320098
+
+EntropyInput = 27d1b659d83006bdb21f96e92b92802a56cb96d80319528b243d1aa5dbb26abf66ba9b6035e0d9f174623ad033df2ba1
+PersonalizationString = e7535703c11048c4fd1931526b2dcc5f6f26aa97247ea8bb1831dcd7c3f5a4d65bddd50f4fa3593afd30586e863b9006
+EntropyInputReseed = 5ca1908ae5277c17f1b2ffc4016e7b1c81bfb23eb0fa9b1fbabac1f58de6969157c069451d88cd41183ae6bf9b092466
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 3d4e16cce16ab16e813afe2020bdfe9f48f251e6934f2db3d3d2d520390d78d2ea84e3de56e38f444fce89baa1c212ae15973ba1e9f5db1aec06ec4e4b56f644
+
+EntropyInput = d57127112c44d1f4e94c0c785f5c66f9234a805910f8845c20865a79031b74edf0c8f110333c398fd32f0ee10a5a7a2a
+PersonalizationString = d1ca7e7e0740391c4a951570ee0560e038bbc2f520753f058ed969e1bd0fd6d5a2a1b24fdee5e3739ea2eeb1240f3e65
+EntropyInputReseed = 2a319061611e70df56516572af290512b3dc1bee0a0faf62dfbae03f2624895e53d89fd0b880c97d82b4aec0883828a3
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 55ac408cea1fe3b1bad3e5127e42fcc8489c19166a86bab212bf067b8b05820999899f422f7b375b595bebbc786a94ec14e3e3149c9df167ecdc635db5bcfbbb
+
+EntropyInput = 672aaf340238381ba8d31beb22bdc263e8018cfb9402aba769e440af29efe27fa79bcc91cccbae53106a64d65c07505b
+PersonalizationString = 654fb58b7cb249610461a41cce27402142603ff38795ec6b1a98666dbf9538ebe1564013037451bd337e8142db56767b
+EntropyInputReseed = 3a4f731de829f0029fa99b2499122ab7b4b15999930ba370417c8753966e40273f3d02a2b16a3ba5f49ba2bfa0c1f600
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = b66496d411c2b2993e6e47f15115e158c937279968c7d7d9efc0a6b12de66600d09308eebb4ca318a38e49f0912361f5f886f7ff21ee54ff112f8302cb1ad63f
+
+EntropyInput = f3be4e377015301079d180ca280454e34f6064040e359bdf0983a09939429d5262e6e5d86664fe929445fe34abd9794d
+PersonalizationString = 2aa1e491952232d335c6737f478871f5bf07f967b86f10a0103cfa2c31ef5f5ad2e4db4824cb0ac3c29ada3ab028cb96
+EntropyInputReseed = 9a6be29c4411d7de2e9321b0d8c1ee06d7998a1934ece5345ed3fb4969a68112c0051ede82a19afd76c419e469603679
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 3c58550151aa02fc5598eff921d2a0636345955bb03e6c8a39e7c9a95655de297c6199c0f9e6c5e2280e9e83e85306958d5d37d70bd80091f0c51f96ed74d420
+
+EntropyInput = ec975b46294711a8ac5b1d19b60a6981bb0675c5e202fae93fb7ca8adfbc2907db923c786c403fc514f0dc46b002fdfd
+PersonalizationString = cfbbe01cda290c89b2841f37952cfc1d9a4222fb425e9453de307ba9f82bc57382684484801ed68b6151fc7dbb7a17ba
+EntropyInputReseed = dc9c22b1006462af08615eca5998ea81a81411be226a241c38d480e7ae0ab5bb34721f0ab9226633d655675ffd953420
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = e544668dbca5b35bb59ab04945649cead8d822a1d8ce125e3ae5db8b23e3bcc05bf6921ce95b85766b92c13c59ae83d908471e03e020fdeb59e5cea817a48802
+
+EntropyInput = ed64cf25e9ca81e5572ebccbf892c8ac9d88c256b7ddd3f7f477579f80ea8fec7c452159b1a6ac9c59767504c0573b29
+PersonalizationString = f19cf2f821440adfa1f7f634a26925dc63e29b7993f7860558afc4d7c61f0d83145cdb13102e513edddfcf48bef17464
+EntropyInputReseed = d91c7a31dc11edf5c778bb1bc92067b6df2b5b5e90c04df5172562bbd38937ad62715c287651ce8ad4bf4c80b14c8c1e
+AdditionalInputReseed = 02bac94171c112c3774769148f137e6b72fd4bf9a74464cd24a7dfc6f75cab82a15e3847afe86999d0f665577bba6c20
+AdditionalInput1 = ffb738e975f48c5a5a7d8a63c418abb0604efe3cecac611bdf292e2ab47a4d33099ebdcb0d6c89c5849c1ed9693c435e
+AdditionalInput2 = 459f3d979eda0f8f8c273768df1f92344abfba4eaedf00356f02461e449da18843a44b08a46413dd3a1eb1ab5bd146ec
+ReturnedBits = 2a6a38fb6575f55cddb774ef51ca9db72e729065d102e866877798651f1850cf3be808f6378f860fcde6fc631b955fa07b5b7f5dd1ad1d1f32837ffa07311383
+
+EntropyInput = c4a815682b8ec783976c7aecfb71201e5c25ab4d2099ff7f0800a91efdbd884659258b1db9a10d518b0e11285efb9866
+PersonalizationString = 6d3b2347a61b373504d8557acd1b86e8c49d3c1c2f9759264a73f964d19bbeb7d5490bd04864733f9fd6c140d0475d9a
+EntropyInputReseed = f76c5bfbedfe08a00a7274ed2a70ccd79df3a62a1c3bbd89ea4ef8505b95410eb677369d2633cf6c964305c3a3e8f62b
+AdditionalInputReseed = c819d5ec126f00df73ef40c4ca1d1de8b6e9388b1bef50835bbe880ae4a0f201f2febfdd4167bb47bf24b782e07bdc1b
+AdditionalInput1 = 89770a03e8ec7a8c39d4a185f5a457a91fdb149fefc9e7daf041fef3e232e8101741d86cabc0af59ab8c3e2cc3f71a9f
+AdditionalInput2 = 6e243b506b470cf3209ec2f44f505cc74ff7a0146d94f1b4b0e6419bb419c4c1634a82fcd622da522b5d27c161846683
+ReturnedBits = 4b6bef575a555218469c8f7934565ee8232cdb511e25e4cfe4bede0de0254ac8005c0615854d5aad5305e0cd06b61d276973907741b4b1e4b44ef975468b2dc9
+
+EntropyInput = 3ecd19f79b77942ef82c120b5d6b3e7a84262298d18d35140b559236e8d465394339e7937b60bf96d75b150b997be706
+PersonalizationString = a2501964f9b233384fa2839ee5950738f0a39d5eb92b9f978c22cf02371444b3118f0d6d2e369708942e63e0e40061cc
+EntropyInputReseed = ab5eac9506384ad8ae49b1112eeb9a2483768ee6b3f0c2231e4565545baa94d5d02bc28a3eb335eea33cc100e2e4a0d6
+AdditionalInputReseed = 425eb96af35fb2fe786993f0b4db3395fe08fd002d8e294bd6d24250917c92fe455686b5a29c44910a85e3a36cd7b07c
+AdditionalInput1 = 18da79904acf7c74b2bb48e2f1730038bac5df654815fac888826cffc8581e963457e26e906c86b6cb862133240f49e4
+AdditionalInput2 = 3eb1ab2af18cadaeab7b8e5ca454adc55e67eed68eb860adec3b9abcafdabb3befe0229a611698873add422e596c8400
+ReturnedBits = e54b610804a2f9412fa154b885faba9bddc1f4e37e714a501992b0b89328926bc50217a7f47b140d41dffad74e343e917291ba5b89dcf00070a159fe222a688b
+
+EntropyInput = ac59f26284b8e802e1afa6bb7a2f979159d2c3ab903b62ec9014c12adb3d1f1262a435fc16bfd3014812eef8a451c4e3
+PersonalizationString = 5d498123556a0526c6aafdc33616cda01eda9d8fd42da7da4be9877f0b404310de76dc48b544438caecf25632978261a
+EntropyInputReseed = d565bff03c617497acb58fbe012497cdbf6ec277b22e1c21e65aea0f684962747075bd2c4a1b184ce423f1a5ee9e762f
+AdditionalInputReseed = b95710000d08552fff162fdff905c3682490be388adaedabade8824b38bb4729127b26f49686c74c3e83d2f37ee670bf
+AdditionalInput1 = d5c301976a5ce6349fa29b30d5ed761d9fb2e5e9f7624b613a198b40cc107ecfb3d7721131ea19b401751d85fb11be90
+AdditionalInput2 = 86a00e4ca6e2c1932df0248c31ccb2ab8d5fdd991a2db7cd27e824b2107ff00bf46e5df93d41d578e61236aa4f7b0274
+ReturnedBits = db29ecefa87169fd87b533ddea1ec00f50d288e7fff4729349a812dd20b192969d1c3f3b8711fdd0d26812dfbca6a919089be283bbfc9466f00e1d1a6394fb72
+
+EntropyInput = beef8f0ed9d77161dcb7b2da5f033e546e7c1d3d4c4ed5a423e9a6e70697edc842235a08f9f68f27907c9736f4efc4c6
+PersonalizationString = 2d5edcd634501c4b1d1236cf9f864193cf2ce7a7457e6b9aebfbc8b6685b79bc81b94304640ec0afa701f6db06854a62
+EntropyInputReseed = e53e04423771fedf9ece3fdf04ee8b66766c979f7ea3aae258eb9472e1aa99b817847fc022f6bb0ca28c0d6e6c6381a5
+AdditionalInputReseed = 387fedd127600d3b9a1e40d47b61aa0725b8829b8177ee6651086d1501878d59793bee23ae217203c2e2565d83b8d625
+AdditionalInput1 = 94c343014fff90b668d7bfd0d72dfde1adffef715957e0aeabfaa9f37cb85f5d0108dff094a064bc6fac052564f2615d
+AdditionalInput2 = 4663ff1f64bbc351b1646fcf1caeeff5a2d5796ce7bdbc393c1df62ca0445fa30dd00f7385569b9e9bf6490260b23432
+ReturnedBits = 06d60487a5317b289e68a171a0097ed4a30d6991c5e8f5af2e882c1109ea3e362a6c115d1ffea069a09f501bd6f03c66e8afd52a1147fecb216336e2382e1805
+
+EntropyInput = a8157b1dd29f1ed95a70922accbb14e683a10d5d22ca2311948d4ef091c37338d6965a08f942e33730e636dc04ade118
+PersonalizationString = 15069fbb16c0d9cac671c9ef238c5e8966f9f262758d9a7cb0c196d937c3c5a79067b9e64e74d306321ad58dda6d2ba8
+EntropyInputReseed = cbd6f2599416702c1815fa8270b54905998330e8b2dba6f9d234b65176dbfc8579fb899aeb4abb7a9d19d3268d7ca1c8
+AdditionalInputReseed = 5c960852e05b9dee8ab4b49481def6036734b39cb9bc99366c5c55a5d2ea1279eadf73d3105784736a30d8d05dd59ae5
+AdditionalInput1 = 7569e6db52e1478e3cbed54171a416ef69b6e6dc9b88fb3f52c95e0b682d44bf5da27f63929d4ec467bb32aa1c1dbf4c
+AdditionalInput2 = b3b9ae19c36ece8623fa47aa820f7c94bf20664fea1e544c45cb55695b21b39c62e851f7a3e9174e662d8e979a16f119
+ReturnedBits = 0e4594b734e7fa15ff6c08032de7ce3ddc47ef3a020b76b3c95fda71499def818af8d625bb81eb89257d28dc68dc4c9550e35c090a49cff16a65948ea2057497
+
+EntropyInput = 2e28e458a1d335f74a1fb2e22ea5be7783f78c721e7e687bba6ab9a5c93e4114b425ba74978c2e68b498fb53a760d4e0
+PersonalizationString = 89cd5a82953f8839b61350a8684e928c7df74493562b5c7c4b2f2f3eef74ce5db88c2bc3f0e5ed03fa1bea84014c3f9a
+EntropyInputReseed = c16a676937240e0523c5664fe37da9243b6e915042007c5ac5af4c334519a5195dd6419d0e1fcc86c9b96a272211accd
+AdditionalInputReseed = c392df2a338e1681a04dd162860ddb3b2d55566ba4e514a371fc31a356b9b5d44f71a3949abbfbc4b3337939e2a91dd6
+AdditionalInput1 = 0342c122b88473b951a27ba4544bc30a1044cfa522aff34ea127c01950a076edd97a4a2e0f1933a743ae7b9a17cc7ebd
+AdditionalInput2 = 21398020e37205c96cc5956eb62f284b15ea5e73c2c65df70fddeecca79b857b298aa21f67fb2042a0b18ab6ca9369b6
+ReturnedBits = 6cd82dacda43cc6638bf6b17a56351c00c580f5ab0f5b652c90f3e77a63753d783751a4c29afe8286e48f3e573d5fa50b5125b4c71892e7f09781e8b9c0f45f7
+
+EntropyInput = cb05e1ee85ac6e9f6e2089d135c7d43a6bb1581b7373366be86019fcbf9278b784e0ed786661430730e6b02041035ee0
+PersonalizationString = 19a4f5ce1e9a9f8a5a1618b235490ff22fc7b3a8116d144359676a4386063b1bd02309130b8d6c8a4ba3b412f36a488b
+EntropyInputReseed = ecc29402fbfb7e8194b1f4452973cf27488619d3ecc9ad6c25ece75bd597e0e866cb53324ba5f9b78fafe5698c560ae9
+AdditionalInputReseed = f754c60d68ce5fcdc7df8cde147af6d3191ba47f6a02926deea2e5fc5588b0c28d580652438e18c7b8d57837e805f439
+AdditionalInput1 = c709cad8785e54f3dea0ddd44a46384a1e594abf9d9db7eba013153cb9c77737011fd139197cf967f515445cc082e5e8
+AdditionalInput2 = 2d95868285ebd3124e8d40d5ba0f53d5311ade0f707f225fc47a0a5f0e7948878eb8ab985dac3d3a378b2cf9155239c6
+ReturnedBits = 34516422c33315f6a52c131965e305e697488f0104ddb71936c27dc6012a6c4181338979c238d99820f4fbbc0bb12f54ed391a31d74a4f1c899caeb5fa25de3e
+
+EntropyInput = 855ab54214dc0a64f6699f4f3fc1bf1ba64cbce42d322b86b427d8864e8f86ef85435578fa2032ce7c6b2da4044c789f
+PersonalizationString = 7b7125859daae96449a3997b4997113017775e6d48767e2c89baf98e77d18917343f722b410c62fb694c2e5d24a25909
+EntropyInputReseed = dacfd66033c75f3d875a23be63198a6724fb1430b2c3b88d7be8a983a318d064b80c6398f1ec351685945557ccad8471
+AdditionalInputReseed = 1a1ca1dd4fa30f5850d7bc7da7d84a8e160eba1bb8d7c71fdc0bf0e04d99953f30bc51c0f4720aad3d359638c13551ac
+AdditionalInput1 = 934b52e86c938f09c00562ac219347cea8b4892776bf1b460b3d07e4af2c13c6458be10807b5a6cba2ce0067d3949948
+AdditionalInput2 = 2d991038c3c86a633d42c17db0ad47ac453719fec3e319888b777eb03d433dd306e3870a32972ef92e0e05b7efe6e554
+ReturnedBits = f622de890ea30789574ef1bdbe47b011e8ca5380c7c86c8fe82ac0831a003b20af8f39339697600ac475ff97f40736339ae34da7fa42180d444afe8ffd486296
+
+EntropyInput = 554a4dbd10bd99ccaf1e950eacc038ef518262c9d3c30eaf421bee22e78356f6c345822adb5889acd960dbc622e1307b
+PersonalizationString = eb10ac136ed6bc9101818bbc1e27f6f4453e9088cf5aa4a89db933ea00c8ce2155fc060938da0aa068ddfb4e44b9ae8e
+EntropyInputReseed = 5dcad80c27492f34f68743bb07691b352f537f022a1b63d96a91da391ddc530809d874ae118876985ad2dca917ad8b6d
+AdditionalInputReseed = 63242c7ef2235812056ed15cbf68be9173dbe11ac733131ec7e392da9d275be2591c95f3d8f671ab21507474a59eca18
+AdditionalInput1 = 2586a1af832376b526679cce9d0dc575108d64cbf540167ea321d14ec672e4e9d981f9f3b37a52b0bd42b66669cce140
+AdditionalInput2 = 6bc0888746c12f945812d5fa382b252c4e5c894a8f65add71e9c9d0ffd5b22f537c440870f0a0b70faa51af771db849e
+ReturnedBits = ce627ee4c9f2096166af58ec0329218469120f7f303f7d12b5d9b0eef35c664865fe85170fbbf51060aad0e6f7f64fba86fd4c71ee57bb07b9613a858611c8e3
+
+EntropyInput = d199bbd51ceba0323ac491ff145208eff3fb45f17bd499d00c79b5cd429286ad9e33d10059223489acbc2796880407ee
+PersonalizationString = 670d1083e6e0a83b8ac6f258a6004aed9b9117b6f9902b4fa8a14fc5580f3e9d40413c72c8ce8d7c53628495ce2924f4
+EntropyInputReseed = d6a33a4fba1e8839bc5fca6c7ba6317177c5c9a2986b03978c9a43a82f6b1f6cee443e762728399376dd866d8a99ba60
+AdditionalInputReseed = 6fada66ccea9e95277ce1de35fcb5d1b42ea35a00eb588abd4062c2316566d0ef6ae9fe3b4e49dd1d86f07c9695505fc
+AdditionalInput1 = 2d78cb131661c55aeed68c225e97107ac666c84ccaa7770c498ea9edaf38e5c3e241a54fa93105effcf864dd0d74e313
+AdditionalInput2 = 06b16d026aca610af5e084f7589f8c2966f8ceceed4d2d560ed6aa5294503587c899b0e2ef0f222df0e7abbe89371282
+ReturnedBits = d4f0441b303a6327c7fb75113ee6746cfff5d2fedf63e8c8de8e2af0f6a5948a12a94ca92e08be8eb9bf5da8fd4b45efadc9327f8e3a458b0a3b74dade4a3359
+
+EntropyInput = ee953ecefab555913aefbff24a588bcc380660759e1891f68e602ef7b090bd33026c2e346f67d34151b6e69a40d6d8d5
+PersonalizationString = e077d42dfe697620f21a9f8ad5eae6c87589d9c1c37d30dddef2ab81cfbae9797500795ce5a00d79b3518feecb1ed8eb
+EntropyInputReseed = 4ee2c46cd99e8b5d8fab2f0d27200e2992f15acbe2f13a8f405877edf4ff7eb2373ccaf402fa8adf97e806f55fde210c
+AdditionalInputReseed = 944a1ee031967bd9d352606f970a3e522f03b9385d7351887e7482c262ee884bdab3c7cfd0259075931033c4bc199f80
+AdditionalInput1 = c8fd4759c1277051b6841ae71efcadc4f0978c42266d1fd4872b0051a48845b8dfc5d2aaba692e08fe5f9181f0cddd85
+AdditionalInput2 = 2de6be848de7a03befd8fab5228f2354b58762fd42438cdb7ce550ef0637ee30d7aa13ed01a790acd42feb84adc8fa09
+ReturnedBits = a8ed5bd83c15ecdb7df0f6ed186fb899c98a154fee0475916fe11089d48f21740f7ceaa83fc53f91c6b03b167b697cf09053509f100f6998c950ecc634f266ee
+
+EntropyInput = 0a34b82b54645f46e74e4161498e75f5fe35531738b9ee002eecb3fd83c217b1e0f958897a3e8800d8c5882189cf2f95
+PersonalizationString = 9a251b28cdfd57fa1f58a00ed423d521d6e0a4036e5a549abd81e53f1793cfa3162ceccf010049a5c9dd5550ff3fdd80
+EntropyInputReseed = 9e4b5d5ec7032c09de00c7faf6515b05e57646092a3df2083ed06b61f9632aa70285a43ab0b569fa429684dfd29bc405
+AdditionalInputReseed = fd44060a04df78e555b9456fbc840a5f4a29d0edb3596b793c39f1a7d7ecd7b755f698672eeeef14f42825540aa4558c
+AdditionalInput1 = dd065094e40c6cece19ba12aee2d37c615a789edbecac70255d2606aba6fffeeae98272285cbb375e7bb4d0b8c8b8cff
+AdditionalInput2 = b45166e7f755571c72d406e73a4ae6b3d37541177410abf2faef93d30b4c679cc9b346f1006b24cfc467e378f176296d
+ReturnedBits = d7ddecf1cf61841e65e650843eb157e2cbfc099fae94365ab950794f911a8f8b227cf73489fd7831bf410fab026d90ed9d031206a759b12c49a958402363ed7d
+
+EntropyInput = b5809957b179e55b2bfe55f48d24f1fe8156a36df7a9ed5feca01c7aea019be774820933b7ec5e56913d96eb672fc065
+PersonalizationString = a15d7ee83b1157b9a5198d201efc466082072430c484375aefc857ec235f988cfb2873aa6d4331f810a0c388358bb52f
+EntropyInputReseed = d989c2e2c35a89ca3142844d8a9bc09df2b1bc525dec29e4538afa6a7cae5aff97f96d970311226069ed8768679d2d1f
+AdditionalInputReseed = 577f1f4818bd6e4fe0afcd8348b9f374c98eecf4ba4af55c3d17ede2a64bbfee6703ffe68bdfd23a78c0cd79a63eccca
+AdditionalInput1 = dd6b7e68e80c0bf351e50e4efc66151e0843df821d11f5c2aecdade8289d7a5175d487a8dd24813c6bf97cf73aa14f33
+AdditionalInput2 = 3a29c7bcd43879034ff04a9b1927d38dcc176fdbb58e9cc23e00a14cf56fb26c32a338344ea97aaf410107801393f077
+ReturnedBits = fe26309dcc58cdb641cda53fe4433c25067919e55525a4a26c742830dae22c1be3e7e96f6fa502a6cabf6c79f3438db80d580c26e675f939a95183272cc816c9
+
+EntropyInput = a19f8cfa223ad1b25d109d901a1061e8fb0237598690654c83f1271ca7db6a0c8a0e093b7e80314fa68014397c12edea
+PersonalizationString = ef6b17ca95a74a72f1035006c0b99406f6e2e7dcc90892d0f31ed0aba7fa3694459cd3de632fef04afdc31fa326e424a
+EntropyInputReseed = 1296227fec4c2bac914416dd33e30dcf3e964d64d2ea6c9dd397e83c1c2dd173bceac904df233098ff7b5319e89b748b
+AdditionalInputReseed = a4fa86d5d2dd1368a93bdf19e4071ecf2d4fc3cbed04f544fdb96183ea5a55b9c293636fe098e2710d952a511a36a66d
+AdditionalInput1 = bd203cdd94307bab1a53734a3a451f0b038614892186b26877b2c1c8492b03986e2ec4aeeb09d2e906e78c1c234fa675
+AdditionalInput2 = 631cf0317b713d07ce74f7b05ff4e7a158c769993d357325f8e9d16b25076bc9b0febbbd66bf23fbc9c27286dc1663e7
+ReturnedBits = 401176185d33ef08d0b65a5b853d57583250dd2efaf44ca0f987b45f89eafeb52d2f4346bf9b9d0b7dd4f7126e7d89dd32f53b737cef79ab5dd0794fb8a4c89d
+
+EntropyInput = f52b9e211605277c7720c9a6e252846e54d9f1ce442ed891c58dba70c58a8a3b59bbac22fa78dc2683be964a7b3349f3
+PersonalizationString =
+EntropyInputReseed = a16ae58c900fd2c89445d6b1775b4ed879b918a577622687e5e76685f05d04265058286a1a42794abe44ca798e32eda1
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 5d2544951b74e09b8601c19c99301784938c595b4db3b2df474b10caad9e4930e1f0107662408ec374ddee05d84521e3e9ea7d2114f03f9a9a92ada6253cc3e5
+
+EntropyInput = cf1de61cffd8ed4e6ebe7246ef185557039792ebcb75081ba3f47fe4ee442b733274f42024d24d2e19940d88abcffe40
+PersonalizationString =
+EntropyInputReseed = a54d64421dab046606e167c862e557a4d4a8d5b4e86f2b269f8336af20d33d5ac531229279049e404c74956b753747b0
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 692165d99365ee683b7148f7050a0abf2c3693b77725d2babea71fb7165bf7498e03ea8200e5c50fbc6bbcdc77499f5421385a09bbc6923827a328ee491431e6
+
+EntropyInput = bdf7429260ef6fc8a3817368fb72ca1bcc0574bd5361d6f30431187bec83c52c667f12fee192c2fd911b6f9deee38f30
+PersonalizationString =
+EntropyInputReseed = b6698f9646312ccab30344f8b5e835aa47abd83bf1c40c3ec48834eba68e50baf52e4177a215dc90f9e8761562befbac
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 7db86c35f0a694aaca6c097b1816424d1833eec200d18a1ef6cfc49ab5ff444e3bb6064ff1cb6b1d63ddab2a2b8c18a11c4ccc3c419e106a03ff57c907f7a769
+
+EntropyInput = f1c71c385ef4c9b155de46a8852ad896223372ef8db06c1a5ac4c87a561331e9232996b548a7e797e34dfc0a0639834a
+PersonalizationString =
+EntropyInputReseed = 4c275fc8ce30104b6b4e4c16e21199d3cbbbf7393c054c89cb9c3b85e5af5ab25a26502309202e8d78c1d30740973d0a
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = c7a92dfd519488b5f4aacc42d704146c7219f33ff3b930d4fed22827ef7df287e71e0c72cadd8fae20ff0e058308f488fc451c3bec0d85488d2b81f2ecd32e2f
+
+EntropyInput = 29a100a29a002c98f3f5e8170d731cc3fd2d8fdb4a3c6879057f88f96ff7f66f085bb2d30957aa0db78a4ed247a939c9
+PersonalizationString =
+EntropyInputReseed = 5e98af56d5066c99f185015eb8e36cc435690e965fea9d2eca10bff147c18a2c06755d7e0ceb9c2203d6d48ee53ec0c4
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 9245cb558f4dd7dd7cb448fc1310cf58cbd18ea6d9c58953e3a82221cb49a9a5afd02dfcc86fc42584fb9cc1e23c2483bbc61a4b146b1c7193705bfa50fd67a0
+
+EntropyInput = a8070ce6e769ff82e90b9ae0ae91420ef1c4618937fe006d179981ffce04afeb7f98820912512ae48d7e3cd2be80da46
+PersonalizationString =
+EntropyInputReseed = 3b14197c3eaf4f3c7fd1d75caccffca207083dab30cf31e014056174083ae2bf3ca83195fde7d2ed47a4bc77e90b4204
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = bdc7462f1bcd82e405022a5ee58345effd90e49a8f15bc1cb1f7f567ab26dc0577cea1a9c7e463a81acdbf62906b2565e8bcb16e195030aef3d2cd60fa987a60
+
+EntropyInput = 4c0d4989e284ffe38f1a0458186e007876daf40c2ee755ecccb09cb0db7f497f9b3a80ba78426b049c0cf7766e1bd129
+PersonalizationString =
+EntropyInputReseed = f4cb5700145e3370011f5d1b0c104ec36f1240ab5871226ce4de0e3862d9432c749e6f04b5708cdf24c0caf4919e1520
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = a936e1179ba75b2f3fab6903ec1161c87b6e1244852fb061324299645105bf5e38b67c5941200ea5e6ef2962ecccfe0516e20314f83ee5815a925d7026965e00
+
+EntropyInput = 621663b9aa2f9f7ff61e8db0d99007ea9819b50ad4876439d66fdfc54bf174fa740fd6e1d2292b1195b37d584a7b4606
+PersonalizationString =
+EntropyInputReseed = f2473fd74186f13d6d599bf232680f4dae2e8ce69dafd2dd2a6b2b2b13dd0b2f6dc8cd436136215efb27bdd530f92810
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 9bbe30868c8d86d008c4f1bf18052c73a5c36c062c0557f6ee4176bcf308b77411421cef0c4c24a740ca31a4921a86944da2b54d9d29c2d3b53ad17bfa9c808c
+
+EntropyInput = 3e9c7aa2bb18213933c7c6f22323bc29bb94aed24fa2faa7caa572c86c109f2247de3173479893fea325dc12c8363244
+PersonalizationString =
+EntropyInputReseed = 4356acee8a2f6d5bae662d5ed8957bae47de31a9061cd95e8e567b74e58680622986142fd299bf15a5076a07365bfe00
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 95a85a176afad06e245c50e596641e15fd5d9dfa02428bf8ddb2a449106ee0f928155343a6ea69dcede14a711c0c74b0ab232db7f4e67114514a2fbe34a1ce38
+
+EntropyInput = fa3ccdae461578a289eddb413cc87a89dc67648cd52445563a7b3b47a87c89337503271511c75035d939bc50098ed1cf
+PersonalizationString =
+EntropyInputReseed = 357a52867450cadedefcc93b2e730034a643b9fdd099b9849e815a7437dbe33e19b6a2826fa7ffb5d7b9e51222484e44
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = d097062ee806dce8b24cdb36a17e7c387d4f781339ce87cbb89164af15eed22089f83ae0a371d3662eab2bddca6ba0595db163326d971a363dffef053b357fcf
+
+EntropyInput = d54e0e096bffa6121eeca0f81532eaa0d3d1d98361883ccd516ab0dccf7b0bfaa1b43839a1484d15d2706296e2ad8036
+PersonalizationString =
+EntropyInputReseed = 43276e93b3fc7cfb4962d7b6465096affd5c1fe1228fbeccb32e93c2704624ab7d4d88f80f04b81d2e4482df6d4f94be
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 54d28fe068be42e880fe2f0d60a52f9f9e6ab1d22f1161ea55892732e19252e48aec600a95af17ceed15aaf1c993726e1ab02d8215184ce8de00c138a79f672c
+
+EntropyInput = 055eda658019be5847baaad87fe290c37c050be4dbef1b07083449c9c84dfd6df4b667ea92883be5e71637a72418c5b9
+PersonalizationString =
+EntropyInputReseed = c8da537fdc88c0202c6d58d3f7fc0f005ef5a5b351758265a529c55067cf0dd3d3308e7a5c43b683eebff01fb91347a7
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = d918e205318696621a8671a8f42236a5230830bb61feb7146d22d8b89d29715a5ac1774537aa9a50e5709914d13342d768fe86a9bcef353c30ac88aa16ae1969
+
+EntropyInput = 09a1d28857224e96d7b22cab8f185438c0e8764788582a79ede70d78b2287a9aea829e25406172a908dc5a15fb8a8e20
+PersonalizationString =
+EntropyInputReseed = 26859027ff5b5097f41e66b52f3689dd829f139bf5ed79a5c4052795d1b8676d0bb7019a551dd59a65ac0298e71c1c1f
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = e4da2f0af600c78665268882ea07ed6322d7369d04148a7cd7847952ed7e6a894e3f1f4c2d4d768f5a7fd40332dabdd88afb2384573afbb6d79e0b3c3e8d4f9a
+
+EntropyInput = a4446788f243691cda9ad6920e4430f9469e58e837b801cebe0f8d5c518fac535051f3ebd3579e1fcb908dc989a790e2
+PersonalizationString =
+EntropyInputReseed = c5bbc33a3abbe355f38dc8f030540bd7e423bc42c526ea766d9f10d1613b0028b55b99efa574d509fde92a1ec3678683
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = a131b551c8f31d4b4a9e33b0e54f7c6f142d126da738d79d31176cf5ae7c040c235f2ca0fd7a69077c096ac300f7445985f2ed39cd22e2cf8d146665f6b81e9e
+
+EntropyInput = 91fa80b727040295b850119e9fb7e4cce4551ae234f29616af15572557d1555de0424ac3928e39ca0ee3978d956f3258
+PersonalizationString =
+EntropyInputReseed = 9937f776ddae1dd4a6ed76cc1795d450e14d1e462c30a9e1a85334b3ca148451b94e00055b3ed227f0a2fc247db4db6d
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = e659a7de7a1b1b15a56170a1d6334dec91b6fffc47fb7ae1f2b3af03cbc25f7bec0cb6afadb76af9d36216825ee0e13aa3915bc515325c27270858654175a81d
+
+EntropyInput = 20a8e7e47108cd4f283e5b169855bda83899516e51825bb52248ba8c405da44964502c9fc74da0e2ad4ca1f493134243
+PersonalizationString =
+EntropyInputReseed = 98ba67c7e057a5a328bc9b223796b36947b1fca1ab6b20c1dd25142e949df27e8122c8a6792d8a1156a60b1170a3b5c4
+AdditionalInputReseed = 648fa229f5ea25ee6c7453ed577c70f755a2cb90f852b72b282d30bedebaf74af461a2a8a3456e653e7de9ef3740bc44
+AdditionalInput1 = daf5b64ba409b524c211a300465c631bd900453221023a41927b3d144da0131d89f74c0f18b029994ce84ec9b3684293
+AdditionalInput2 = 6138156ccc58e759d762fb5db2c0926ade760ff531582f1bd8ef430f7f7ab623f82082ad58c2d629340945546bf94e2d
+ReturnedBits = db51c68e5dc6dc500dafa4d07836749df4fc54d0c8e78a3a01ad3162c2438d8aa1698c4ab6b448c3ebd37d23fae3c9ba6aad0912cd15475e9478d4793617a3ce
+
+EntropyInput = a781015e066eaee18f30135e518b87cebbb79c5f0afaa4ab21bb5ab808f09ffd8ccd2ad02606f8cdab95bf897e2bbb1b
+PersonalizationString =
+EntropyInputReseed = 287e14ff5446a2eefd023f208bc8f583c80ddf84fa88e0a55c5a41414ffd1a7297d41017b3a37ef1290aed629e74376e
+AdditionalInputReseed = a7a3d011fb2d7494e023d5de0c32642e0ebb765e0ce5e79dab2dcb7637480ba6110d7a07a3ad7c130139048f80a1c16b
+AdditionalInput1 = 1786eb125d51cfff9164449ba2bacf9a216f4c45a685c07502bf074ce4a61a6ac640e2c1836f2e204598d51428839269
+AdditionalInput2 = d2fee3f2e3a00ee4bc3dbcd19c313cf74d5d34ab6219407efa16db64f726cdaa68692f8edd2abc871b08a33d2a9c922d
+ReturnedBits = 94b2f16610cb7e300bd1bea6b4c3a8d671f2b87ef419d758dfd0217a3d3e462b5e3f5ec054d0934d701748d70fc891c487f715c881416a87240371e9532848fe
+
+EntropyInput = e744b498e9a6f2f1844fd234e024d4fce34cac87bc7137b207cd29c910c77fb949e2a78a397fb03e665544091385cdc5
+PersonalizationString =
+EntropyInputReseed = 807df385e0b02526303ae24426cf4ca77df319c64a145cdbc86540422cca77edc5727190719b5b22743c44524357e1a5
+AdditionalInputReseed = b0cfa699d908b03f80b5352f5f926013bb54fa95724239f32b9facf94e80d0c636124ce042d7a2af62f55ca7a320fc83
+AdditionalInput1 = a45ef12dc13ed4f86ebb70811346173ca4709d6d229bbb815c6d5538366701aee390e1e72dcc7b064f524a2537e1b420
+AdditionalInput2 = f80f9eedc0c0636477985006b3baee45a0f08c365b1cacfc9d6498417c3d51bfdddfa819b7a896f569b113ac9bfff844
+ReturnedBits = 12f570a2d2a341e5b34bfc98d1c72361b8454fe55727a6a36d7716c8cbab2ca785d310065fcf882de21a7bb5749ee8afd367aabff898a31621e06ec5135f04e8
+
+EntropyInput = 3c2d811b1e8d2f1351d35a4dff670fccb227fa44caccc0d0b71c1654ae09601927f271ab0c9683ad5faf4a3c3b80beb3
+PersonalizationString =
+EntropyInputReseed = bfd0a13b0e2bb9040bafff295d0b08c451715ef0f9e30db50c38a135c56ad9f58724bfaf268006f557969f1433b63426
+AdditionalInputReseed = 9bca5a77a81bf97d699fbee6cb2222c47bbefcd81b6e6c693b72ace0f4668e5ef8d3afa825b21419f501a6f7e39c3fc1
+AdditionalInput1 = 4b9a7eb941dfbef05df206354386a3c3b136a9de21ea307a96d83bdfd1c2cca8bdfd608d3765880f0eb05d6f88136821
+AdditionalInput2 = c211fa5ecadcac40fee7533aba6ef65f93a2276ec1023951c674dfeacad39ac0d3736fb6d916e9d46e6caa7857538f02
+ReturnedBits = 673fded4f9428dd5fcc16e8dd14c69cfbcc1a6ab5a4cd47679ba12d96e4a069d292268c5ad6c431c7e911998b419dd0e9997755940e6aae0768a86b7fbf557da
+
+EntropyInput = 2b3fce2c05533fa1349a7544a080d1eff84d78008c69e41462c659ec3c139313dc3ef23178c57646ce0e4cf6c3465e22
+PersonalizationString =
+EntropyInputReseed = 736c35c46e6c8acfe301ec58070c548c5530fd8494f9c586f451a132c70a9115fa2842f164e5c10a0ae528ee209a4f32
+AdditionalInputReseed = 03c028dfc095eb49b4ae76576ee7fc56b76a1baf14cf30a83d65d4c97140008a06f03c1ca33c4b93d24c366c922cd9bd
+AdditionalInput1 = bf7d34c4cc7bed84559ede042ab39911022a5988350c55c382cc8d78dca657fc163aba716b4feefd2dd3a1eb883bd0ed
+AdditionalInput2 = d3b7aea7fe27a1687662792f8a2a62487500b273fbdfae74214478891d3e061870615d9cc03f0073c72748b448bb7f82
+ReturnedBits = d95e14ec1870b8f6e9eb9ef6ccc0d6be943fed07c4cb960919e82cbadb92b43f114811765be1aad748f7361515a965dc8e4ac233fa02465361212403c80d3f67
+
+EntropyInput = 81b0b1ecfd3c1920022c8a73b77465a798bc4c29b448d88353054434abbd21c285c4269e8621c7fcae1849e3d34f93e2
+PersonalizationString =
+EntropyInputReseed = fb807fd0622a626f2c8f36496715a890944d501c4b4022b48736347a3018b0aa0f6157ee6018da87139555a5cccbe679
+AdditionalInputReseed = 271f482a812e679a2cc875450822b9caf4d6db61f3d20263e19047656348c7b0539ee34287911a0bf6a7a27e637adbbb
+AdditionalInput1 = cda474067d78a394319705a6174823a29b1bcccb93e4f1c03277001f4c52fe7c65e46da14b32a5183b07570db8c91d4a
+AdditionalInput2 = cdb048f3607f31ff5aab419d69f8cd2569886282b259fbd49a7cdd8e7d861fc6624d3f55b4aeafbb8542ebce1cd87618
+ReturnedBits = 4c0e553ada4e6fe6f1d3dd84a991856b551fe72098e3a008a753716afe0628861cd83ce2e0ea645b24b8408360f6d9e11003ee203e01fb26aa4afe21ccfd0391
+
+EntropyInput = b52dcfa7f85a0383266590b58fc2d19525aecd9d226fcad4cf9e15c3751198c4feb93559db7dd8ac67a0c6b8d37170c8
+PersonalizationString =
+EntropyInputReseed = 40d6413ddb8624d98373341a46391351d848c9d8e80668d023e73544ccd3f0bd341145a5d1c1a0c7d409b83d5aa396b9
+AdditionalInputReseed = 04e340bab1e1e18e96b5ef84f9cf3e40b58737d9a9d0f8a448cda6affaf46fcb4c25100e5de0f6d8d4b872e3de77ab77
+AdditionalInput1 = 0a70b0b0d9b3f1b196f92c68e7926297873e98973b2eee4f2a48c34c9a10a47da066d4faf4a3f0a80ea3f34dc29bcf67
+AdditionalInput2 = 179b17e306c29e4600506dedeb941509f76e528d886462c5ee71f7fea9e2bedbb9aa3107cba55a484e3675f775f72863
+ReturnedBits = f390b947e7837c91fcb9774b1dfd4dda305965a8a5bc06d6a1082d97a9050d13ae4333bead8e8907b57c6df0ba658abb35fdfd595b6d68dd4b0693758e186a65
+
+EntropyInput = c337a3e78d7d2e11c849870006f2e76e7fee30ec076d377bdc879f2583241e3b3b7b863dd9c2e1379aed93f2f8dae522
+PersonalizationString =
+EntropyInputReseed = ad410791ad781f70d6bb8b883d1724f6cecb3245141f789c1a8a9a1d45706493baab5b2b3d1cbe5d2ba41e4123e05b95
+AdditionalInputReseed = 13d425b36bcd17801b077e71b00ae3c90e8b6bf9b520c006f68cbc238e5a9592227013276e559a72e1b952f61e8a4c62
+AdditionalInput1 = 9c49419e869018268c9db5fcc0f7a935d17cb9ff04ea4d56a6555cebb89a6f4cd0d1eb832342c42264dbae1d335225b3
+AdditionalInput2 = ee2049b4c36292a451aaaa87e7f7eb918e8e0a492ebe71fc3b24499f921a23d2a01b7bd8e75851c892ccf124cc298876
+ReturnedBits = fa1ac7ad59924d7ab57c0186def694645805f895f6b045dde12933371f9601c6c9133205093445620d2acfeab44b133bf93f27e5daaf7453e98e6e477813d3ca
+
+EntropyInput = 7cd68d979a01244c08eac6bd20c076919918dbc7f09ef502727dbf50bbf25762f6c06e0e6c55455f542891572cc5d75e
+PersonalizationString =
+EntropyInputReseed = a0de6b1d841631d370c35ed229769eeab425e144ce5bbe98505af5381fed45aab711afa059624d05f0f732fce3997e71
+AdditionalInputReseed = 92c27d005fc497886958085ae5a243fe28cc6d3142b3817b201a067e45f6b85b8a7d67d2b57bea167cc7b53153f96456
+AdditionalInput1 = 502ba386881fa8167c9ac144275630e7cb6b83f0b09dbca29b60f434b663af1f3c73dc50e64eeaa86aa66cb7aba365e9
+AdditionalInput2 = 1d737c092bc0867d935c0a869539476358f3cde932d07d949b26cc190d450fa7595f162b29c9c96e9a84239173c93942
+ReturnedBits = 979cb9eb1e30e40085f07c23c20f349381fff833d3868ad98d36c7f8961ce73bb3dc995136eb472e4bff71fa1c2938a78cbbde6427f2110fb6d64c6d3277cadd
+
+EntropyInput = 1387d53ea472d70198698ea597b146b5b4010334d141f745436cd4c1e0f612b20e668a0a7a6c8e7dd6e47c0c0f02d45a
+PersonalizationString =
+EntropyInputReseed = a79e5d181f955a4640f15e7bb5a32788f5415deab98c09524f630ba73459a5f70504626702054b3bcad37739dec33bb1
+AdditionalInputReseed = 1f6abaa424bade0d26198544aed64eff7a372d16ade19c8fdde4d8338ded29bb107660492e0bfbbd0eec7679a69184f9
+AdditionalInput1 = c1ca5cd0fb1b6a3f468f9d9efeab54641836aefaa4f6f2f6d8cfca3ead7f736fb2a04bb17a9d64f2d1e8fb12ef06917b
+AdditionalInput2 = 5dc9499690cb78fbf3df333026ab0477d800eefe9973dc5f33c463474b84465a9556c8abbdde3f7e86be57f7368e6d63
+ReturnedBits = 5cef6ec53c22448b5280ade051dbbe332398a8581c9f41885872a5dc54ea95df6c82fa8c10c2f3e1f0dfd788e4616b97389603a700098029d07dc6ee8c38dd41
+
+EntropyInput = 30ccdea131c468d1c180bd536899f6a550d25c31cee10ce0f82859158b5ffd3ee771e4502d24b5e269b527ba6d2ec587
+PersonalizationString =
+EntropyInputReseed = 4bbe5fe0d0cf2668d1d2c69671e38c3213e59c74ed06c8fe5a534ee83a37f549f1a683d995b60785be7135638082f706
+AdditionalInputReseed = 4471092a771a150bcde99005cb676cdff4d5b478ccdd53b619e19dfd4bec325fe98f72d0320a36a64db40b53558d1379
+AdditionalInput1 = 7d159895ecc245e4912df0a21775347e1c1a16601bc7f0a15a7592a4e57c2d6b9fedae13653906316cca0d15e1a5eb65
+AdditionalInput2 = 5ebae32449546ecce203fcb58feb403e7bf84594a7fdcbe9767bdae6cb090da38b9fd2bda4b1015831479d830423652c
+ReturnedBits = 9bb50d63fafbc26565e1d6d2147d99e5acb0a6237e23a1bda06db8ed35a5de9db1042060cd46e4420d401633c3331a6cfd62dd20d4ae8fc1500f7e28dd2ec406
+
+EntropyInput = 94b635e206c621c41d39e504837af38757b9e04747d157f9515278214ff2499caed155c6cd5cbe333bd7fd3b952168eb
+PersonalizationString =
+EntropyInputReseed = d3c59c86fdf1c0e64c68734b0e79183cb69654e3ea884b9275b16e5134ba88ec683cada5c7e0b844cf5665520d21d495
+AdditionalInputReseed = 3e0b17a83a2e99e3319b5e33d029af66169b83214074f6220784edf665eb3b2282a022ff3ba1727b0be98dc3a4abb7ce
+AdditionalInput1 = f6c288428deb32de2fdf95c85222c5a920d62dee1321c6b3264004917ae76517005beb3ebfbeabceca844fe789e3dc1b
+AdditionalInput2 = c08a896fc0bae05a44ca97071ecc0b71754687b079bb950d7f7b9d3dcf205704268d0fa2f9b0343065c89aa85909a760
+ReturnedBits = 575a0dc1790b09fd562d88afba385a20c127adc4594823eb59cc08282187fcae14c8c783492b8df173fcc61089c08d0e421b6d7d15b0c00a771e9dac8bb6bff9
+
+EntropyInput = 3840a4aec352a641a9fac77bb265031f807c26a54a561d5f8a27533452c357f2b451fb93872f4a03d827fdc179573db9
+PersonalizationString =
+EntropyInputReseed = d55d27768ae2beeb6801a1b1d440c981c603df06fbe9bdee32fe97a4b204417856486b4a340f16c02f67245c2923dbc2
+AdditionalInputReseed = 08aed0dff1e14c4f1190e913549a95370057c79f9ab2005e1d9d01a3ba1f0f4378cabdca0b379322b28696df4a2dd503
+AdditionalInput1 = c962128b63be959410f99867cfce8ef78bedfd4aa3fc6bbe92ace950f66a9dc18235908ccf189e5840f58460348fd5a3
+AdditionalInput2 = 04c115c2871165e9213590c15c03451c728bb6e281918a37cee350d59e06266d65ff8ceea5f9b3c5793b1c6645fb86d4
+ReturnedBits = a8561d30e2fb9eaa7e3081385c82b3ba5afe9918595d55afc4402e886a6c2fe0a004b0d9ad2b7b2ae3ff75af3961e690d7ec94847dc32e2c4a896851e6dd0670
+
+EntropyInput = 07f0e0d4b9cb7d6ddbde41c3f2eb3425682276850dfa1afff6390a58d0471fd756d0ddee3b079e0ddb59b525ca45beae
+PersonalizationString =
+EntropyInputReseed = 055cd020ddd6f53295bc199a637021c01f27e323e65d7bef36ece3fb4e11a917fd41e73aef00ac38bd2b4075236adb7a
+AdditionalInputReseed = 748cbd4b23f1e73bc178b090a88a706ef4237fd70cb6bb2f05ba890686fdb9863ed40a883189719c12df6071bdfd65ed
+AdditionalInput1 = 43171a090219891ac2dedec623b72209be58f6ca367de9e23fe71c439d5c66d2fb5c3c9b6da5fee4e7f5e0737d217f2f
+AdditionalInput2 = d53ac118a6c1b81946eed05ccc6ffaf993464072b86b6895f734b664f68264bb351a824e0752d1b19161f71ccfcf93fc
+ReturnedBits = bdfea38e7ff37ed47d7a450ada63be5fa26eb1fe80325e57a3cd391bdaf074022bee4a0f6c806cf3b3648a4edd68226376a955668281eb3e0eddfba02dfecae8
+
+EntropyInput = 54d6fccc173c92e939bfaaabbf0b67b362e5e28ef19bb22804dc4d0830784c6534376db0fb57953de71da483947f2f86
+PersonalizationString =
+EntropyInputReseed = a97de59624f18f7a94a6d48129e1988de1248b1ba6c81ecd3882daf0313343d5bb74e162e2e463a6c1e5def389e24e10
+AdditionalInputReseed = 86050f8c9a0df812e6c44d83ea9c9ffc479534a6c4087e912a63092e189cc16ec048931eb7af6460d67cc274154ee914
+AdditionalInput1 = 54dd28543c859fd4dc1e4f0a44ec9aa2b758d51379c0a9c758053567939db6a906320d83693a0a591fe99c3e24d1293d
+AdditionalInput2 = 3803a58e41fb766847b9f568ecd7f1993091c4689fcf70f754d345ec7a3f45d1fecbfcc52cd60b47b5a486acb155e213
+ReturnedBits = 3cfb2eda22c4f01893b4760b785d330cb771938ed6f2f929030fe625780fb91fc2f9952409b99f011cb5e7e0b4a7d461be80e94e91111ace0604a7a41719f3b3
+
+EntropyInput = b5e2af38591a9743e5d3e458848a3998536d3b625e1694be847f95c3bfbda267f08624be4bb6aa496e1b596be523e7c4
+PersonalizationString = 0a9a59e7605c0e12fae317bb004aecf1427bda4dca7718801895c38179fd36cd922634c3789a99b9d9c556fe50a41de4
+EntropyInputReseed = 942ee972a599f346be15299d347823028469fc883c5e45479e9243df8710d1dc5c3073031e62f605f297479c5bcff993
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 1f818218f06c9833f084c2b0ecd058d377b2d08c2943f4d24d2b5d7cad2ba49697dc3ad8d6c5c5af6372f02c1868756ca7b39b548cbf0d2bc5da2d11ed5c8f7f
+
+EntropyInput = 60e9823004e29524138c8f8661657d1f04ccc418c5e2c677d26078bee024e7169063b147b7e09946468f4b9e34819748
+PersonalizationString = 13aa6b6ca5e94d0f2a5b3f505f8eb3aac22fc393715cde101963ec87206912607d74a11f3c09a55afa18c5cc8ae11917
+EntropyInputReseed = 4a16f67d280b34628597c6953ab5af3902b91b05c2c0c7c95366b99c7e6a9c30e876d1e3c634bd0377dc969ea119247d
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 1b809bde832e7ab5f37273d7f1ccb4d7bbb1a11053cc72271c44f4d21a3efb9a06a54813911dc99ed01611f75757677ba892719cb6ce9dde262290453e4f00c3
+
+EntropyInput = f4d2dbd7c0f52189e329415d9690c8615663c86f5c097529e68c9a7eca0ad0bc2eaecf911887622204ca9edc1eae410d
+PersonalizationString = 9962caa35f06bc276a2361e4029b1bf02184024c52cbbff2d8fd1eebfaa231ab4913680c2fca1afdd22979241a291db2
+EntropyInputReseed = 4307ea695c2ad7d80b36476a5e3527ca13ff8fdd7c5cc712bb0a4071c008fd5adeff70e5de94390f58e1fe884b4196eb
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = d9d0def9800dde19e12405b920a680602715cc91c74088f4197b2c1d60f0b33d34cd05016fcb699139402cf4fd5b7fa2d3d744ad5675ec061adbfc9379a4cadb
+
+EntropyInput = d442895e5f7b2a33de8cabe30ea2aaca3bd413e62f6514d0e6509aba81aa58f9fc7fa9deb5b10dc275df6383fc549024
+PersonalizationString = e432be1ea04e11e5ef9d39892bbd38ae2ea8991438181a3428348530ec377fb0d8a83fbfe0fb34ec0eb1e694d91a5da2
+EntropyInputReseed = b5c6201ad5059ff661c27367c560029f06cb936c970a744ea1aca464b903c06988b4800046208cf36594d06ca3977735
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 8edbafd551fd28ea37190c6a99b54831894ac54c934d01b6fc3e43484c87cd78195472ab3044ec99cc1974be04e90c233e02c837bc5eaf427a0fc0fd38d35f5e
+
+EntropyInput = e11e6a3f6a33e020cf04965aa42994dd9c6d30cdec758a2e02ca014a6c48d5b65fc03a0c2554a0303fd6085df78d54de
+PersonalizationString = 5a4cad89f2d9b40db9cfe12d45ed7f4c63e765e26c84ae3ce5fac844fe6b03a738890f21fbb7f2d09a56e0252f52c599
+EntropyInputReseed = b8961521b678c4e2737c6c62a319510190fee14b793adb0b4fe113ca9bf8c86d28366df0fe5f36131b7dc1b0637a7046
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 1404fbbe62e03463c435c2b675f76dbd22af1b2fce2b6e949e2df9efb8a3ffe738c3f78f9c852a3cb1f413122d4276d185f1599ee6cb7f218c23b1a9c9e0e80c
+
+EntropyInput = 0430e11d664ad3cf63ee3ebdf55c27e7b3deb7fbe7a974e40e89437b7ffd30c23ae3e0045a53681b828991a6904886fa
+PersonalizationString = ec0ff952dd6926a4e858e813c489c9cd13cdbcc3092ecb30054af78c2974f3e8a19a2d13e822def7fa66dc777b072d2e
+EntropyInputReseed = 3a02e381d379c9de624eb53a8baed2d9fe00a5e0d0bfba5b8d75436ec72c5636b0900b52500cb244088c97754510dd8a
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 851689ef8cd60800e550c69a9f1adec31d75208ff4b3950aa0fd8b49656a54ceeff9250752b564cc8e923975db08eb0479b15d2ad77ec9331f89d7e7621851e9
+
+EntropyInput = 55488d3883e37a2fd116af224ba4fbf5448969ac05e556bb8772306dcaea5184be73df5545c256c177038d9b7248924a
+PersonalizationString = 5f01f66a7e6987f9018197096404e74e29a9285731c3586af4f30ed5f1488e6ca61af49c46b800a64ae0c459b8fff57a
+EntropyInputReseed = 6f412c138b0014b8bc93c28e287a61111beaa8bf0bc187a3401022083ba3d8c01b8798daacbd8dfdb1a6ffc22bf052ff
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 194251ba611a8c567e1a1b1ee5f94984e2b1bd4758a68817536b1c21aea3035517ca2b6f61a00186d3ee3c7230fc393a8d4000524b508543125198c9e8464bd4
+
+EntropyInput = 909058c537b86e3480396e1799fa9bdbb4273b7123d6ba3d79c85b9871952368631c85c9b3d17e75e3e6b23bfad66658
+PersonalizationString = d02448c06118ec9a2b0cc686114afdba9b3041e4b92ab97964cb6d30f0bf8c13e2b71d6a043e646d413444056964ff7a
+EntropyInputReseed = 96919c4aef8d3181dc518437969109a50ad6e761c8693061ffa71c45bc12bd9686d78441598ed454183e5de12d9d235a
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 7b97740bebdd216d43603440d0a399f836f580cc8d1329cd653c5a7ac787366d980d7ad5b736b867325680e2f8fa7135308e73e185d47623a3fc4683557bee8e
+
+EntropyInput = 2bdb7d32eb81db9d9cf1e4bdc4e02de277f74efdec241b2f287bc82362be4533e4151758bd737d575a226840fe48d837
+PersonalizationString = ad07fa56a9c365bf4f16aa9033f71b4cf210d7d83ccfa7485d4cca105aa01462450613a7a9e2600a1872b292c0e6f4b3
+EntropyInputReseed = 0729f2a2f84ea902cb6e84a8fa6aa40e24c64a1b67a060dd47a117cc854d5ca006bad5218e64005b1bcb8880a0207d7c
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 58f56e078b05ae565668009ec2715b9a6f14531c2b965b7ceabb4478cce2db9bbc861e70d0f80373ebf3f0fa8a2e90ea6366b025a141d9c7bdfaeda109cabb90
+
+EntropyInput = 5e42e2375fc572e14f86309c7246a17eeaa5b72ce05387b042673e75b5540669627aaa8f4306d3050930f8b0dc727d55
+PersonalizationString = 90b2480969b1bf805a2c8c751bd76229caf5b67bf055f4a519badcb8e88eb0058f672f6cd07eed9d406c1709f93a8a4c
+EntropyInputReseed = 61b4fc67fcce7d68c4ac4c5f54ea8cfa9667f58375fdc474a0d7640ac538d6cbe2517ec0997dec62669c1985b84c4578
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 9605d5380160c754e43ed8caa5b5bd2d9cd954ea0c1c10eb02c649b0aa8463badaf35a9ef4b2341b1a16d413224fe803fe997d8ba4fc58ea5254b4d28d116e3f
+
+EntropyInput = 3a51edf5f690b0824a0ab3b874b38472dc7279af5f54875a4973355c1f37a988e67c26c6daf28ea43e700174fae54d2e
+PersonalizationString = fca8e0f6e2ab70685cc0ca05a6fba7e666870c9863ace0a5d5011a287e9276c072bb810bf3cd8653d2b5c8345df22cfa
+EntropyInputReseed = 7d0803607d7ad2bfdabcd85fa26532a09a15ec34e7a459cd2e39b94526a0909493f2a6b1cb5bdec6c8a8e229ac69d591
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 21b93551a12757b43f384192d24ee64eb599779c2988a00be92e31de79862343ce1aa9cc074de62d4383848bb5261ccb8d73a2f7ba914cbefad8f092a8dbf9db
+
+EntropyInput = dab7a3aa53f85273a90015d32fb3993fabd8244f12357f04f2ac16fcccd353c5e2d1c7028eff322a8b808634dbc683b8
+PersonalizationString = b74d00ce346d1ab729d543d82c3317f4dd3c6f6fee39d474e39b79d6c1e0e15ff2421df20f0267729eed341a8d068d67
+EntropyInputReseed = 4da794ec635dbd72ca897c4a5c3a4b08ee0bdfed89fc6e52b695f32f8ac5b978c1edd4b0432b77a20fb9125032530457
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 2238adc11363a4b033ed403cca9916293de654a20bfa29f63e1458240bba6212ff91c50a3fd027533f45240ce312d75d335faa2eba68778ce987d78e0dbe8cdc
+
+EntropyInput = 56b2a2bc4ccd942f9b7394215dbb642b8d3637bf43fe9d4429f8eee1297689e18a7d65ff1aed2aa5729d0d7b3c255741
+PersonalizationString = 8faee0acde0e51aa62fca5ae4c1e131e928ed1dcc183d0057e34054556e52d2dcc609b3f24304eb8fb6d8a28d1b51fb1
+EntropyInputReseed = 810b746ac71445d29fec21341f868fa83f77b4f26abaf60af457ca7a37b239ca7a71cf287cecbf2cc14654cdf7ae3ed2
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 0bd21c8de7b455c229942c5d64765c2e6d7043359e065324338dc74b21a8bc163110d9a71db871a1aa2ea1f38737d01a398b7c9bd7612a5dd1c0657c21ede8e1
+
+EntropyInput = 8912b0ee4e8dca39701f1066e68fdfaab1bfe5e76638c079121c7a833b4c380e4fb986a3a6051ee0d11c6afe85397eae
+PersonalizationString = b3f96e51882eefcbec184ef9a4297d5d5bb0a00e8735b863305659d52d0e9d69c1c8f2894b3bce84bd994b7a4da1a752
+EntropyInputReseed = 935aa45b8ab830f6db7b41e0ee8145540c594dc4c50efcdfa07fbe9158162d77a5d3dde9282d4a0f63c3cf5cbbb39a4a
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 2e1996d9e332ef870172ea5980e0382014bf016005ed5ab4689663cd019409fde4ee4c8026a0fd19079fcbdbffd12c213561dfcebb66e247a9f3ce1eafa9f4bb
+
+EntropyInput = de1e4da1b1755d0a9d4e8c9d4271d0e21c1e4730ebd431676ef5753e9e4d877937c78936a6f0e0a9e5e84d87f1ac8fea
+PersonalizationString = e7a492e06f2079eb6428f4d39fb18aa0ece5d1edc5f2e1403737bf6a1334ff7f46ccb57690ed5b06e07b1090efde505d
+EntropyInputReseed = 17837fdc7d5600fa487fa07331c4db6e3d65d522537aae0715a5936f5cb81953965fdda82e5f2b0a1f20dc8beb76beca
+AdditionalInputReseed =
+AdditionalInput1 =
+AdditionalInput2 =
+ReturnedBits = 2cf0d9cfb60234b23086dc1649e6fa99c4104de9853d19508105535c960468777a936543f6b31ed0d3c52d135671a23d3ea08fb7f29c9dcb3f151163587c39db
+
+EntropyInput = fa207b20ecb0c64851516ee83ed33caaf871315d781eb04be4abde3bef91a3c1f837cbe5fb9494f4865386fe53e85f5f
+PersonalizationString = 136c23eda52225168b3617107af57467d1661a5e3ff30fd14048202c535dfb681e8eb5ccc4353a919d0149df94abb1d3
+EntropyInputReseed = 3fa812a3f8d90425381117a9360b7a3fc67e3405e5a2b584dc7e8668da098461b3035c0458fed25e293a5a676640cfe3
+AdditionalInputReseed = 814793c9a4d6e27ae4b661017f994a7960bec9b3ef9390ecb266a93acb091445c9368f942d51bdb01b94be1fc3f89cdd
+AdditionalInput1 = 1f764ef9d091e635f9e919746683d2d6e9e02d04756b1c3ba8861531f88ee89c60aa3482f9a1fcf60293cdf5b64328b9
+AdditionalInput2 = 3553e3ca834e2c25caa1f143d5958259a491d83af4ef4170b3bc2fe36d256a355689d84b8114bc993dc3bb3a925f13ae
+ReturnedBits = 507628cba7e3fffaf4935713f32c09c3047e90588302c038add821b24b76047c72d43df031018030cc0a4a53e7c8b08b033f0077b100ae7839543cff96348c99
+
+EntropyInput = 36eb608b1c34c0f1e36a3bfdaea896cf81a2bb49b7c0069eb4fb65129fe6377104ba906a91c76fc7d83d4d233e73b53e
+PersonalizationString = a1594ddca40b36619863ba2b1047fd8edd35703028a93c833b74b49ee7598b6e7f891886cdcf60a678800a478a019c49
+EntropyInputReseed = 914e91af79ff82a0ce0b73fa76b76fde2e4a96e9de164819e5f26b36e54eeb0cfde0ad9288983e6225a7342925ac40ff
+AdditionalInputReseed = c6dbf4d673850dc2c8f3e92c90f57251b4edfae96082ec3a76ff24077af4c1f9964f51a1413f58429e0a70ff0879980d
+AdditionalInput1 = e8d17ebfd26bb473aa508af659546b004f816a3ee1b0d058757d40c5b4c45b85e9b56eda243821cea4fcb6a9eb6afcd7
+AdditionalInput2 = a85f5d8015f01416bbfe83a0dbe37eb37dc8e90be3aa72363aaf1fb6612a7d1d2b835149400cbee62d53313c67abf3f9
+ReturnedBits = 89127b8b99e1e42fd71897698f22833409cb67496c33973c838b57089e9375b1a3f628fe60e6b05a4b97417d68418adb0131fc882b73232a013e04bb040544f0
+
+EntropyInput = aead9c1f4f338493b46332635e812ff97a9c16f7df09f3570b5fb532de883bf4f3eeaa277bc5ec14fb6bea842cdbee88
+PersonalizationString = 426fe9acfc02f8183f0ee8bbedd8cb6460677184a8cc4233d6208c38a7f37bc576473a60ed3e9335b7f9e25f481b15cc
+EntropyInputReseed = 57a258439dd972b6d5770aace377784bf78595cd230e16e4b1055591c29d3a7c32cba6a835346d70d380c84be2db99d0
+AdditionalInputReseed = 508deca25785f11961ad77ce62be806aeaed80b720c7d3a97d3f314724af76aadb3bf1047c2f3a7cafd2dd469626416f
+AdditionalInput1 = 4b93760cfcd27270eebe3cb8891b25142151c43562f09df81aaa60f0cf0728246aec580177fe32aea1e64c3303e1717c
+AdditionalInput2 = 2f58d036173efcf40766bf41735e6d06ffa97e79bec138e05ec0f55fbc44c7922342a10b2295da7ba5b91a3c42936cb0
+ReturnedBits = 89bfd07eb00c324626b4089464f1a2f4175a065abbde950a3b5852f53169c6a64fa42f17412520a5262d64a7ba13e85c52aad707f46bcb81a44efb2234d26d9e
+
+EntropyInput = 272cb79c574fa7941da817bc5b9614c003ec0be30cdd384792291b98c8811d3423e11679647f887f426e025f0960a770
+PersonalizationString = b7989b2532d46dec8a6022b26874437bc8176fd219948cb995cb003064eacf1271ef17269a07d2c2ae99f3f830878a37
+EntropyInputReseed = 78af0b8b0eb3cabd919cafd06b1fabfdcb63fe29f5b68e67530b396200887d92419e3c839b8b1dc43c6507026f1f851e
+AdditionalInputReseed = 857848c62203307b39728acf11ac8462302d3a41d186778b3f112a86270252f058fbe5767496e47662186b8d0817de02
+AdditionalInput1 = 9a08df0de742fd2e2d55121a58b700dfbff250a4881b02fc3b8952b48ecd4d034d6e7c757cdf91bf7c31dfaf70b1da22
+AdditionalInput2 = 3bf0e4f1291a8bc272cc985878335882c75831510f27963c7c01a879c60c5b67a9a14a656a746a80a091adf6ffb1adf6
+ReturnedBits = 69361d61f4cf5ed489888934f320a9acc5383e719f09a1e30b6029bf71d4b4cb54859798ace2d8ee5e681d4acb223b9c119dab2dd07e6db3f7f844c2b46b9c47
+
+EntropyInput = 6f45b55ac62d5ffd452d36b1e4b18cc6abd6ad93e87558b79fbe99b4f4a962b74bad00821019bd126d6f9dd73912acf7
+PersonalizationString = 913a783046baefe428346085fd640caa1874d4aa6974832cacc5b51e78514bcfedd174606bef1721df7a1194a0ccd1e3
+EntropyInputReseed = d9e19ce3197004ab3a4bf995a481149b6d8e59a3970161cb0d3917374c0c86bb5e9bc509bd01b6796fa1e77e5fdddb16
+AdditionalInputReseed = fd31068c90614e04463acdf856b034293a079a816f1c5f3de63b870a9876f7397d2f93bd3f6776b56a78f7178e1fbb87
+AdditionalInput1 = 068e3791b91adb820b27c45a5d8544eed3133486a7d2d0bc503d8abad8b7093f3df214f1e0ac4ff2d347c760b2a605d5
+AdditionalInput2 = 6c55927a349d321d1a2141aeccc3543e9726ffcf3d8fdfe1aed63c61972a213c12ea65d648e476268611e9b08486a648
+ReturnedBits = 552b4c4035d964b5eb26e3036445793df67b7321d36e8d2362fe284503b587c961a33b816b40b93d4b006769177c6593c553b6e669076f25a3e2a7214156c249
+
+EntropyInput = 8d492df46257a62e717302992682e28494f84d0f3237c16439efbbd16a94b3356eb7f7c2a0206892045a0d7d36d69f03
+PersonalizationString = b915f3311feadf6676df2389baacccdafc74cf200ed7b99167b33dafa875ce4aac1a61ce54972ec54f9b0901a3b050ee
+EntropyInputReseed = 2e345fe3a471c5066b20f4aaeaaf73921426ac1bc0509e93671535a8fbc016f5967403d6d13b4760491bf973c47a8ed5
+AdditionalInputReseed = 2e8f1f01a7664890feef93152f7b7f05032b4c70c58b5f261ef0a9c2aef23f2a14ee57c3d3465af24289b1c850e52ef8
+AdditionalInput1 = f8c218c996284f757c491cba025fd84cc701f9f83a16f03c314712c2354fee39214ed5994ab24641826bc15ed1bb5f61
+AdditionalInput2 = 146c53dc4af90f26d8c85822810d9bde2949495c23ca2c7c13ceee8221cbe8105491d560e0044c8d50d7e365da41890b
+ReturnedBits = b19dd18494235abdcb3b4e99c9355d19d543c7fb7e1048d63d9e25abcc12dcb31549cec2818667713ad1dc35142072ca8daa511927aca71303493e500503be8b
+
+EntropyInput = 2a595f08947d0056ed19ecc8a547867834c125cf1740230a1325b93bf29951cbedcaa6a8f5cbe69801fb9a197ad576c6
+PersonalizationString = c0fb9dbea13863dfbfdb2c0dd864887413794a07a4dd228836f0f6afab901496486a2d508a3f4b784d83382629cddbc1
+EntropyInputReseed = a3ddfc3aefc94dcaf656f4d8eef0065a6d233a76e0a4c26e2d8bbb86459c9e4a173ff8cbec85ebc14712640741427668
+AdditionalInputReseed = d4eb9b12fc2a6fc75a69701c8b5ece02e47f813effb705dbdef0294e38907f5aadf40bdbcc067d0ebc0bf3661a2e0990
+AdditionalInput1 = d3c4bf4f8a3f61413fe1953523ba83bc02ae6d7eea1c8ba288f8e06f0d0276e61667a410f90548d283c4f1ae79483961
+AdditionalInput2 = e6fc29680eef141e1372e17729c9f4407b3f7a57057be1081ce46c78693334bf56867791072d9d18a7b4835bf251712d
+ReturnedBits = 08475bfb8e621e12e212f4960e737023f7a3de3b204b6ffeeb929f424ca78c6ae2e0d726237915e5e244616713e88a39df302208e3a324f5444213b70b2e9c09
+
+EntropyInput = 3d5332b91dcaad893df504c7c675b69890b28055dfd3ec7d0ba56990dcda175096ff8f8f9f9ecd6dddeb96b829b98c3e
+PersonalizationString = 34753432b3c6bedc4d2296dffce8a66591b400867f7edf10cee447046f5f767036da9f3f4a02f7b8cba7bdd4365c1fef
+EntropyInputReseed = 1a69af0ff696f9a2fe0fddd26ccf6fae215faf91804461928c884eec13b1dd1501862a738373454e1b449c6026cebceb
+AdditionalInputReseed = dc47e104175f3c9812feed9e143da5cd7e553e3423db5bc8be3b652f577100267ff795804aaf42c3991589e7688a977b
+AdditionalInput1 = e64c0cad3dfc0bf0eba3317cf37b7779b91bf3de3e0ba36d3e16feb0014286596edd364c197847e8732925f971294dfa
+AdditionalInput2 = 1ff3a6bdb7e319a86b35d062cf017ed270c6b5511bc3d63083272e76bf4db9d90e836f18d98f1f79c2e91eeb0bc635e2
+ReturnedBits = fdef7e67c3d19f5f74784bdc64d2c23d0a3f027846da2b2afba940fdc2f066d89b63d27e55d3d0a88bddb97e29676894ec8a18268e4bc27d181a867c5a80fe2c
+
+EntropyInput = 156c8c0f44f4a8f17044957b572ed16d54b73a9510d2b260a036ad6ef223f45e124c4ae9dae0fdf5684792da0ff5ea0a
+PersonalizationString = 1472f56d5498564a5b53d2eae27103f41f565d7873b37c37c30472075f1d84d69a8d68c92636ae06aa61678358cc47d4
+EntropyInputReseed = 6bc2bfd44f72982b23b6d22c85f7d601d5941ebe6e9ee9d06a8efe652539ec00b1136adbc4e43aaab76c3ad6a57a267e
+AdditionalInputReseed = a83b1547fadb97e491ef0bdb8b0d006ab16638fdb211613051f0f57586c146882f1062b7f71a8c15bb27200fa83ffcaf
+AdditionalInput1 = ac188da8a895e0807bab61b1ebd73acbe43f99f375c7d29174f675e1667237cedf1d41fc50da277a0db21ee2891a5abf
+AdditionalInput2 = adf9a30b6cd9dac23f193f66df9d606a5765b96cc42c099530c53c26a6d6bcf0779ae060d188e1cc5bdab6c312892267
+ReturnedBits = fcc79828bf2c9d3d799d7a0e83583c70aeb156e25df0b2fde030c2775c9986c8054e848128ba38ff5e5b0b1e5b72f9e41726b960008408f5152b1a47072fbdf7
+
+EntropyInput = 5e0dd8e37aa23d0fe79efcb8e5538ee90ffb5733decc83f7677488c4f64c2e0d2a918968a5c7351de9360f23fe606a4a
+PersonalizationString = 5161b794e4a13371b320ae4b2b6b698e4df507402a7582555598089dd9484358d37f891294948512e4198a79de8ca3d9
+EntropyInputReseed = 850ffb89bc23562f3ea03947c1afa7309a0ccdc0b714bc94ff45d66884b74fba0bffce97887f2efc178388f36f0ea95e
+AdditionalInputReseed = 50f605cb940f573c4ef3ddff8caa9a3f544f40fdf583b82cd79338523d896f72f86be1f9bb37d9aca02a2856f713c812
+AdditionalInput1 = da7bcf6810a6b3820548065edbec0fa2fd4bc03e5d50666f98a8bea6b744e04aafa0714582f11b6608852c45ee51df6b
+AdditionalInput2 = 4e9c0c770699656217a0b2dbb466a0fcb0cdb5d4a4a05da40fa2eb546f2f0f28aea575a0bdf6e89352d519db44f47dc5
+ReturnedBits = 40ec0e8e3e54cd4fd78f5e006bf3134c378ba619ccf9e7530c79217da631458b5f9135bc8b0d6f2e742c53b58d0ebc18263f9d2ef37a2fa0fb086d2193857863
+
+EntropyInput = 219a364ad362fd8a1d69c1284fd64cc9ec05e6bfbdd133ac9170594b5d95946d3dda2ebcc58deeace86f9dca5ad99c18
+PersonalizationString = b0b27b03fc65effe4610e61916f2e9bd252d47efcc08b84aa505b1befd3a7e9295ca764ac88f099bbecc28301f0f298e
+EntropyInputReseed = 1bccdb4b2ce863fbee104d7a56f2cd88a44a088392883a6db30e6fc7bf5611759c71d53a61fe62b6314d7426e510a722
+AdditionalInputReseed = a06eab3b05eb3649a01be82a356030effdbf45fd71f49b1862ecf33fdb28a7191a34f104b9eda1da4ba48daf9da381b6
+AdditionalInput1 = 88b17e13e02a7e9a3f8263946fae0b6a9052692c3c5cbe858369c4d0b198b9c6a8f4c87ff5e6b2835a7944b911266aa9
+AdditionalInput2 = 828222c8a275427a5f8a963d0d65e92f6170d5089c9a162429c093a28dd69f71135342f16b3baea9a4764e2cc3762267
+ReturnedBits = a739f9fee9a40049e42b00b381a1f663877abb776ec655e3a7870bd94bea1a25d3c6d380eced435e498044daf78b349bc1868e4bff6257cf2711ed08e2357201
+
+EntropyInput = f8513c2f6e46f75fce3671ccb3c69158583a873b0dda83d8b1cd548f4e5efd75642f2c23cf8792d51023f31d795f6f5b
+PersonalizationString = e94f7212257885511b15a873d0158fa5ea648846afbcf9d62a7abc4e6909dd43c671fa18bc289f47e2301e9aa69c3e88
+EntropyInputReseed = 487b9c1866ffdaaf6760cdee3df5a930196d30b0ac8db780656577ddfc1ff3508c451ef2b0b478a2cf0c73027597b2ae
+AdditionalInputReseed = 7387b59f8c78e79d36edacbb428fd515ef9e58086059bf7fd642053b0f5706cfe86eb3c35ca0b6f02e5d1304e476e3cf
+AdditionalInput1 = bafc59ef40e59d8c28851212e1c357cce0d06f02c69d14585170ca8eb18396a331d635cf0651319842cee2f7c87285c2
+AdditionalInput2 = 82d905ba69b6c45ca28107beb6698a152631ab48614235f6a9f12e019f66bf326151d9ee84e0cd42b6566dbffb46ec35
+ReturnedBits = 163f48d09f3e9ebf9f8647766a0b2e189a2f3a21a5a4e31c8a4f3bd138cc50030ac8bea1c4d9e9aa0b67f34926239fbcedfd1992da165b941cf03b56737737b2
+
+EntropyInput = 0a8f092764d473d48215e947ea8a32b5da8ea86d8ed0d83bce31b1b5a21e7c5f1af2186a39caf9afa61644caef02ef9b
+PersonalizationString = 84637faba756917b0f44ba2e0e26546f5239782e4d9f952ee251367081629e71c20a7459995a7563810daeab74220664
+EntropyInputReseed = eacaded3d89a63b94a5c14c3087306e670fc4ee7d56cafef4c5aa7d553ca89ed34418056a44f5447e2b07dd541ac4645
+AdditionalInputReseed = 104a1541313fc4be9d34bced288c1c1b6fa793e9096f8be5673a2c6825dabef91fd88e45a061b2d897f9b5e8a8ae0ad3
+AdditionalInput1 = e30c9d8aba0bd5dc63d911897e4dcadbeacc3ed9392d8e361b356e02a81d65bdab91f7e9f8dd2b2bf9af0da5100e77d4
+AdditionalInput2 = 2bed42b8c05461ba2756a5f38393d5538d20eb9cf1c06775e7fef7284341f61ccd34b0148d1e870c1992dfd065560ed6
+ReturnedBits = 855a6af3e6dddf194ceaafcef6f7ee91f489a61a73b759d41be4d5298510b9902f5b78b1162cba417684519634b578afda9802bd782f04b3a25106f3586ad8a4
+
+EntropyInput = ed63e3b88a2f0d6a40b7b36a06cd8d40ec10158ab6c4f8dabdb879e45d22db573320d2641bfd7db31eb6bbf4c6330b9f
+PersonalizationString = f82a5ee81f349a69dfa6a6e53b406bb560cb0339f61b3886237023ae4582b9725b8774a8044ec5134ebd4d7606f18188
+EntropyInputReseed = 7104522c2a69bec7e010d9670d7ab92dd817ac7ff05d63ab0e12d431d4c9aef4d715421c1fb5d05d3aecba36859a6038
+AdditionalInputReseed = 3b83034ea440604d0b7d04857623e9adc0eb9aad4a45b2079863eed3d72e65abf67d255673e769a2e2584eea59f1ebaa
+AdditionalInput1 = 8678e4f831887e96a27c3a8ce0963f4b34bbca25791b06526cb6c55624c33d98a0356be624238cecacba3535e872c4c7
+AdditionalInput2 = ec3452ea2722984bbe6a5b7c22ad58df37a854abc8630b9e21bcd0469eb207e5f44e044f5f666920dd55e81a393500de
+ReturnedBits = c340765fe7a3479bef2d7d59e321066f8ad0db53aed4c517bf8339566bf877d53921e6de2650d0080529004a5fd32124ce8e58a040e2d55656b37d9ea827cb91
+
+EntropyInput = 882ed05487dce4b4f9e58ec4f2da1fa5d8ebb4ef9fcbf7b0a0e15c4dccb8e19788f86dcf2885e71a20cbd9ac10a6648e
+PersonalizationString = 05f5bc41687ea1e4c34a69944fbae283cfee4c42b1bbd78fddb0973d0fca948539b6843658b67c30b73191b9a0bf2921
+EntropyInputReseed = ca1603d4c8711404c7bdc12c7c75b2943a4b042ea1d2eb54506a6876952157caf3b152dc75f27f2213645a141577e8ba
+AdditionalInputReseed = 83cda53380888d53515e58154f89d5528ab69f31fbcfca34988cf03c4cae5f60aa6291f32d99ab2a726b6e08d2502cf5
+AdditionalInput1 = 5bf5ca9f964edd91e8ef491fd3cd32faf9cb9d1993d8221914d1751fb0d4252a5ca950e213f088050900b2bd74f5e336
+AdditionalInput2 = dba28dc1d8d615651547867d4ef42519045ee16378143685101da47a27b55498078e8a8f4854052f7cc6f5b02e571ae8
+ReturnedBits = 01f11971835819c1148aa079eea09fd5b1aa3ac6ba557ae3317b1a33f4505174cf9d7e940821c9b0e5527a1d3e186a7a83f187c62d3223cf5964ff9526d8484c
diff --git a/src/crypto/rand/forkunsafe.c b/src/crypto/rand/forkunsafe.c
new file mode 100644
index 0000000..e9badc9
--- /dev/null
+++ b/src/crypto/rand/forkunsafe.c
@@ -0,0 +1,44 @@
+/* Copyright (c) 2017, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <openssl/rand.h>
+
+#include <stdlib.h>
+
+#include "internal.h"
+
+
+/* g_buffering_enabled is true if fork-unsafe buffering has been enabled. */
+static int g_buffering_enabled = 0;
+
+/* g_lock protects |g_buffering_enabled|. */
+static struct CRYPTO_STATIC_MUTEX g_lock = CRYPTO_STATIC_MUTEX_INIT;
+
+void RAND_enable_fork_unsafe_buffering(int fd) {
+  /* We no longer support setting the file-descriptor with this function. */
+  if (fd != -1) {
+    abort();
+  }
+
+  CRYPTO_STATIC_MUTEX_lock_write(&g_lock);
+  g_buffering_enabled = 1;
+  CRYPTO_STATIC_MUTEX_unlock_write(&g_lock);
+}
+
+int rand_fork_unsafe_buffering_enabled(void) {
+  CRYPTO_STATIC_MUTEX_lock_read(&g_lock);
+  const int ret = g_buffering_enabled;
+  CRYPTO_STATIC_MUTEX_unlock_read(&g_lock);
+  return ret;
+}
diff --git a/src/crypto/rand/internal.h b/src/crypto/rand/internal.h
index dcff3aa..58ffaaa 100644
--- a/src/crypto/rand/internal.h
+++ b/src/crypto/rand/internal.h
@@ -15,15 +15,75 @@
 #ifndef OPENSSL_HEADER_CRYPTO_RAND_INTERNAL_H
 #define OPENSSL_HEADER_CRYPTO_RAND_INTERNAL_H
 
+#include <openssl/aes.h>
+
+#include "../internal.h"
+#include "../modes/internal.h"
+
 #if defined(__cplusplus)
 extern "C" {
 #endif
 
 
+/* RAND_bytes_with_additional_data samples from the RNG after mixing 32 bytes
+ * from |user_additional_data| in. */
+void RAND_bytes_with_additional_data(uint8_t *out, size_t out_len,
+                                     const uint8_t user_additional_data[32]);
+
 /* CRYPTO_sysrand fills |len| bytes at |buf| with entropy from the operating
  * system. */
 void CRYPTO_sysrand(uint8_t *buf, size_t len);
 
+/* rand_fork_unsafe_buffering_enabled returns whether fork-unsafe buffering has
+ * been enabled via |RAND_enable_fork_unsafe_buffering|. */
+int rand_fork_unsafe_buffering_enabled(void);
+
+/* CTR_DRBG_STATE contains the state of a CTR_DRBG based on AES-256. See SP
+ * 800-90Ar1. */
+typedef struct {
+  alignas(16) AES_KEY ks;
+  block128_f block;
+  ctr128_f ctr;
+  union {
+    uint8_t bytes[16];
+    uint32_t words[4];
+  } counter;
+  uint64_t reseed_counter;
+} CTR_DRBG_STATE;
+
+/* See SP 800-90Ar1, table 3. */
+#define CTR_DRBG_ENTROPY_LEN 48
+#define CTR_DRBG_MAX_GENERATE_LENGTH 65536
+
+/* CTR_DRBG_init initialises |*drbg| given |CTR_DRBG_ENTROPY_LEN| bytes of
+ * entropy in |entropy| and, optionally, a personalization string up to
+ * |CTR_DRBG_ENTROPY_LEN| bytes in length. It returns one on success and zero
+ * on error. */
+OPENSSL_EXPORT int CTR_DRBG_init(CTR_DRBG_STATE *drbg,
+                                 const uint8_t entropy[CTR_DRBG_ENTROPY_LEN],
+                                 const uint8_t *personalization,
+                                 size_t personalization_len);
+
+/* CTR_DRBG_reseed reseeds |drbg| given |CTR_DRBG_ENTROPY_LEN| bytes of entropy
+ * in |entropy| and, optionally, up to |CTR_DRBG_ENTROPY_LEN| bytes of
+ * additional data. It returns one on success or zero on error. */
+OPENSSL_EXPORT int CTR_DRBG_reseed(CTR_DRBG_STATE *drbg,
+                                   const uint8_t entropy[CTR_DRBG_ENTROPY_LEN],
+                                   const uint8_t *additional_data,
+                                   size_t additional_data_len);
+
+/* CTR_DRBG_generate processes to up |CTR_DRBG_ENTROPY_LEN| bytes of additional
+ * data (if any) and then writes |out_len| random bytes to |out|, where
+ * |out_len| <= |CTR_DRBG_MAX_GENERATE_LENGTH|. It returns one on success or
+ * zero on error. */
+OPENSSL_EXPORT int CTR_DRBG_generate(CTR_DRBG_STATE *drbg, uint8_t *out,
+                                     size_t out_len,
+                                     const uint8_t *additional_data,
+                                     size_t additional_data_len);
+
+/* CTR_DRBG_clear zeroises the state of |drbg|. */
+OPENSSL_EXPORT void CTR_DRBG_clear(CTR_DRBG_STATE *drbg);
+
 
 #if defined(__cplusplus)
 }  /* extern C */
diff --git a/src/crypto/rand/rand.c b/src/crypto/rand/rand.c
index 51da6ba..028979a 100644
--- a/src/crypto/rand/rand.c
+++ b/src/crypto/rand/rand.c
@@ -34,41 +34,43 @@
  * In addition, the hardware may provide a low-latency RNG. Intel's rdrand
  * instruction is the canonical example of this. When a hardware RNG is
  * available we don't need to worry about an RNG failure arising from fork()ing
- * the process or moving a VM, so we can keep thread-local RNG state and XOR
- * the hardware entropy in.
+ * the process or moving a VM, so we can keep thread-local RNG state and use it
+ * as an additional-data input to CTR-DRBG.
  *
  * (We assume that the OS entropy is safe from fork()ing and VM duplication.
  * This might be a bit of a leap of faith, esp on Windows, but there's nothing
  * that we can do about it.) */
 
-/* rand_thread_state contains the per-thread state for the RNG. This is only
- * used if the system has support for a hardware RNG. */
+/* kReseedInterval is the number of generate calls made to CTR-DRBG before
+ * reseeding. */
+static const unsigned kReseedInterval = 4096;
+
+/* CRNGT_BLOCK_SIZE is the number of bytes in a “block” for the purposes of the
+ * continuous random number generator test in FIPS 140-2, section 4.9.2. */
+#define CRNGT_BLOCK_SIZE 16
+
+/* rand_thread_state contains the per-thread state for the RNG. */
 struct rand_thread_state {
-  uint8_t key[32];
-  uint64_t calls_used;
-  size_t bytes_used;
-  uint8_t partial_block[64];
-  unsigned partial_block_used;
+  CTR_DRBG_STATE drbg;
+  /* calls is the number of generate calls made on |drbg| since it was last
+   * (re)seeded. This is bound by |kReseedInterval|. */
+  unsigned calls;
+  /* last_block contains the previous block from |CRYPTO_sysrand|. */
+  uint8_t last_block[CRNGT_BLOCK_SIZE];
+  /* last_block_valid is non-zero iff |last_block| contains data from
+   * |CRYPTO_sysrand|. */
+  int last_block_valid;
 };
 
-/* kMaxCallsPerRefresh is the maximum number of |RAND_bytes| calls that we'll
- * serve before reading a new key from the operating system. This only applies
- * if we have a hardware RNG. */
-static const unsigned kMaxCallsPerRefresh = 1024;
-
-/* kMaxBytesPerRefresh is the maximum number of bytes that we'll return from
- * |RAND_bytes| before reading a new key from the operating system. This only
- * applies if we have a hardware RNG. */
-static const uint64_t kMaxBytesPerRefresh = 1024 * 1024;
-
 /* rand_thread_state_free frees a |rand_thread_state|. This is called when a
  * thread exits. */
-static void rand_thread_state_free(void *state) {
-  if (state == NULL) {
+static void rand_thread_state_free(void *state_in) {
+  if (state_in == NULL) {
     return;
   }
 
-  OPENSSL_cleanse(state, sizeof(struct rand_thread_state));
+  struct rand_thread_state *state = state_in;
+  CTR_DRBG_clear(&state->drbg);
   OPENSSL_free(state);
 }
 
@@ -115,77 +117,144 @@
 
 #endif
 
-int RAND_bytes(uint8_t *buf, size_t len) {
-  if (len == 0) {
-    return 1;
+#if defined(BORINGSSL_FIPS)
+
+static void rand_get_seed(struct rand_thread_state *state,
+                          uint8_t seed[CTR_DRBG_ENTROPY_LEN]) {
+  if (!state->last_block_valid) {
+    CRYPTO_sysrand(state->last_block, sizeof(state->last_block));
+    state->last_block_valid = 1;
   }
 
-  if (!hwrand(buf, len)) {
-    /* Without a hardware RNG to save us from address-space duplication, the OS
-     * entropy is used directly. */
-    CRYPTO_sysrand(buf, len);
-    return 1;
+  /* We overread from /dev/urandom by a factor of 10 and XOR to whiten. */
+#define FIPS_OVERREAD 10
+  uint8_t entropy[CTR_DRBG_ENTROPY_LEN * FIPS_OVERREAD];
+  CRYPTO_sysrand(entropy, sizeof(entropy));
+
+  /* See FIPS 140-2, section 4.9.2. This is the “continuous random number
+   * generator test” which causes the program to randomly abort. Hopefully the
+   * rate of failure is small enough not to be a problem in practice. */
+  if (CRYPTO_memcmp(state->last_block, entropy, CRNGT_BLOCK_SIZE) == 0) {
+    abort();
   }
 
+  for (size_t i = CRNGT_BLOCK_SIZE; i < sizeof(entropy);
+       i += CRNGT_BLOCK_SIZE) {
+    if (CRYPTO_memcmp(entropy + i - CRNGT_BLOCK_SIZE, entropy + i,
+                      CRNGT_BLOCK_SIZE) == 0) {
+      abort();
+    }
+  }
+  OPENSSL_memcpy(state->last_block,
+                 entropy + sizeof(entropy) - CRNGT_BLOCK_SIZE,
+                 CRNGT_BLOCK_SIZE);
+
+  OPENSSL_memcpy(seed, entropy, CTR_DRBG_ENTROPY_LEN);
+
+  for (size_t i = 1; i < FIPS_OVERREAD; i++) {
+    for (size_t j = 0; j < CTR_DRBG_ENTROPY_LEN; j++) {
+      seed[j] ^= entropy[CTR_DRBG_ENTROPY_LEN * i + j];
+    }
+  }
+}
+
+#else
+
+static void rand_get_seed(struct rand_thread_state *state,
+                          uint8_t seed[CTR_DRBG_ENTROPY_LEN]) {
+  /* If not in FIPS mode, we don't overread from the system entropy source. */
+  CRYPTO_sysrand(seed, CTR_DRBG_ENTROPY_LEN);
+}
+
+#endif
+
+void RAND_bytes_with_additional_data(uint8_t *out, size_t out_len,
+                                     const uint8_t user_additional_data[32]) {
+  if (out_len == 0) {
+    return;
+  }
+
+  struct rand_thread_state stack_state;
   struct rand_thread_state *state =
       CRYPTO_get_thread_local(OPENSSL_THREAD_LOCAL_RAND);
+
   if (state == NULL) {
     state = OPENSSL_malloc(sizeof(struct rand_thread_state));
     if (state == NULL ||
         !CRYPTO_set_thread_local(OPENSSL_THREAD_LOCAL_RAND, state,
                                  rand_thread_state_free)) {
-      CRYPTO_sysrand(buf, len);
-      return 1;
+      /* If the system is out of memory, use an ephemeral state on the
+       * stack. */
+      state = &stack_state;
     }
 
-    OPENSSL_memset(state->partial_block, 0, sizeof(state->partial_block));
-    state->calls_used = kMaxCallsPerRefresh;
+    state->last_block_valid = 0;
+    uint8_t seed[CTR_DRBG_ENTROPY_LEN];
+    rand_get_seed(state, seed);
+    if (!CTR_DRBG_init(&state->drbg, seed, NULL, 0)) {
+      abort();
+    }
+    state->calls = 0;
   }
 
-  if (state->calls_used >= kMaxCallsPerRefresh ||
-      state->bytes_used >= kMaxBytesPerRefresh) {
-    CRYPTO_sysrand(state->key, sizeof(state->key));
-    state->calls_used = 0;
-    state->bytes_used = 0;
-    state->partial_block_used = sizeof(state->partial_block);
+  if (state->calls >= kReseedInterval) {
+    uint8_t seed[CTR_DRBG_ENTROPY_LEN];
+    rand_get_seed(state, seed);
+    if (!CTR_DRBG_reseed(&state->drbg, seed, NULL, 0)) {
+      abort();
+    }
+    state->calls = 0;
   }
 
-  if (len >= sizeof(state->partial_block)) {
-    size_t remaining = len;
-    while (remaining > 0) {
-      /* kMaxBytesPerCall is only 2GB, while ChaCha can handle 256GB. But this
-       * is sufficient and easier on 32-bit. */
-      static const size_t kMaxBytesPerCall = 0x80000000;
-      size_t todo = remaining;
-      if (todo > kMaxBytesPerCall) {
-        todo = kMaxBytesPerCall;
-      }
-      uint8_t nonce[12];
-      OPENSSL_memset(nonce, 0, 4);
-      OPENSSL_memcpy(nonce + 4, &state->calls_used, sizeof(state->calls_used));
-      CRYPTO_chacha_20(buf, buf, todo, state->key, nonce, 0);
-      buf += todo;
-      remaining -= todo;
-      state->calls_used++;
+  /* Additional data is mixed into every CTR-DRBG call to protect, as best we
+   * can, against forks & VM clones. We do not over-read this information and
+   * don't reseed with it so, from the point of view of FIPS, this doesn't
+   * provide “prediction resistance”. But, in practice, it does. */
+  uint8_t additional_data[32];
+  if (!hwrand(additional_data, sizeof(additional_data))) {
+    /* Without a hardware RNG to save us from address-space duplication, the OS
+     * entropy is used. This can be expensive (one read per |RAND_bytes| call)
+     * and so can be disabled by applications that we have ensured don't fork
+     * and aren't at risk of VM cloning. */
+    if (!rand_fork_unsafe_buffering_enabled()) {
+      CRYPTO_sysrand(additional_data, sizeof(additional_data));
+    } else {
+      OPENSSL_memset(additional_data, 0, sizeof(additional_data));
     }
-  } else {
-    if (sizeof(state->partial_block) - state->partial_block_used < len) {
-      uint8_t nonce[12];
-      OPENSSL_memset(nonce, 0, 4);
-      OPENSSL_memcpy(nonce + 4, &state->calls_used, sizeof(state->calls_used));
-      CRYPTO_chacha_20(state->partial_block, state->partial_block,
-                       sizeof(state->partial_block), state->key, nonce, 0);
-      state->partial_block_used = 0;
-    }
-
-    unsigned i;
-    for (i = 0; i < len; i++) {
-      buf[i] ^= state->partial_block[state->partial_block_used++];
-    }
-    state->calls_used++;
   }
-  state->bytes_used += len;
 
+  for (size_t i = 0; i < sizeof(additional_data); i++) {
+    additional_data[i] ^= user_additional_data[i];
+  }
+
+  int first_call = 1;
+  while (out_len > 0) {
+    size_t todo = out_len;
+    if (todo > CTR_DRBG_MAX_GENERATE_LENGTH) {
+      todo = CTR_DRBG_MAX_GENERATE_LENGTH;
+    }
+
+    if (!CTR_DRBG_generate(&state->drbg, out, todo, additional_data,
+                           first_call ? sizeof(additional_data) : 0)) {
+      abort();
+    }
+
+    out += todo;
+    out_len -= todo;
+    state->calls++;
+    first_call = 0;
+  }
+
+  if (state == &stack_state) {
+    CTR_DRBG_clear(&state->drbg);
+  }
+
+  return;
+}
+
+int RAND_bytes(uint8_t *out, size_t out_len) {
+  static const uint8_t kZeroAdditionalData[32] = {0};
+  RAND_bytes_with_additional_data(out, out_len, kZeroAdditionalData);
   return 1;
 }
 
diff --git a/src/crypto/rand/urandom.c b/src/crypto/rand/urandom.c
index 23bdcf4..f3aab44 100644
--- a/src/crypto/rand/urandom.c
+++ b/src/crypto/rand/urandom.c
@@ -29,6 +29,8 @@
 #include <unistd.h>
 
 #if defined(OPENSSL_LINUX)
+#include <linux/random.h>
+#include <sys/ioctl.h>
 #include <sys/syscall.h>
 #endif
 
@@ -76,18 +78,6 @@
 
 #endif  /* OPENSSL_LINUX */
 
-/* This file implements a PRNG by reading from /dev/urandom, optionally with a
- * buffer, which is unsafe across |fork|. */
-
-#define BUF_SIZE 4096
-
-/* rand_buffer contains unused, random bytes, some of which may have been
- * consumed already. */
-struct rand_buffer {
-  size_t used;
-  uint8_t rand[BUF_SIZE];
-};
-
 /* requested_lock is used to protect the |*_requested| variables. */
 static struct CRYPTO_STATIC_MUTEX requested_lock = CRYPTO_STATIC_MUTEX_INIT;
 
@@ -102,14 +92,6 @@
 /* urandom_fd is a file descriptor to /dev/urandom. It's protected by |once|. */
 static int urandom_fd = -2 /* kUnset */;
 
-/* urandom_buffering_requested is set by |RAND_enable_fork_unsafe_buffering|.
- * It's protected by |requested_lock|. */
-static int urandom_buffering_requested = 0;
-
-/* urandom_buffering controls whether buffering is enabled (1) or not (0). This
- * is protected by |once|. */
-static int urandom_buffering = 0;
-
 static CRYPTO_once_t once = CRYPTO_ONCE_INIT;
 
 /* init_once initializes the state of this module to values previously
@@ -118,7 +100,6 @@
  * once. */
 static void init_once(void) {
   CRYPTO_STATIC_MUTEX_lock_read(&requested_lock);
-  urandom_buffering = urandom_buffering_requested;
   int fd = urandom_fd_requested;
   CRYPTO_STATIC_MUTEX_unlock_read(&requested_lock);
 
@@ -157,6 +138,38 @@
     abort();
   }
 
+#if defined(BORINGSSL_FIPS)
+  /* In FIPS mode we ensure that the kernel has sufficient entropy before
+   * continuing. This is automatically handled by getrandom, which requires
+   * that the entropy pool has been initialised, but for urandom we have to
+   * poll. */
+  int first_iteration = 1;
+  for (;;) {
+    int entropy_bits;
+    if (ioctl(fd, RNDGETENTCNT, &entropy_bits)) {
+      fprintf(stderr,
+              "RNDGETENTCNT on /dev/urandom failed. We cannot continue in this "
+              "case when in FIPS mode.\n");
+      abort();
+    }
+
+    static const int kBitsNeeded = 256;
+    if (entropy_bits >= kBitsNeeded) {
+      break;
+    }
+
+    if (first_iteration) {
+      fprintf(stderr,
+              "The kernel entropy pool contains too few bits: have %d, want "
+              "%d. This process is built in FIPS mode and will block until "
+              "sufficient entropy is available.\n", entropy_bits, kBitsNeeded);
+    }
+    first_iteration = 0;
+
+    usleep(250000);
+  }
+#endif
+
   int flags = fcntl(fd, F_GETFD);
   if (flags == -1) {
     /* Native Client doesn't implement |fcntl|. */
@@ -190,56 +203,6 @@
   }
 }
 
-void RAND_enable_fork_unsafe_buffering(int fd) {
-  if (fd >= 0) {
-    fd = dup(fd);
-    if (fd < 0) {
-      abort();
-    }
-  } else {
-    fd = kUnset;
-  }
-
-  CRYPTO_STATIC_MUTEX_lock_write(&requested_lock);
-  urandom_buffering_requested = 1;
-  urandom_fd_requested = fd;
-  CRYPTO_STATIC_MUTEX_unlock_write(&requested_lock);
-
-  CRYPTO_once(&once, init_once);
-  if (urandom_buffering != 1) {
-    abort();  // Already initialized
-  }
-
-  if (fd >= 0) {
-    if (urandom_fd == kHaveGetrandom) {
-      close(fd);
-    } else if (urandom_fd != fd) {
-      abort();  // Already initialized.
-    }
-  }
-}
-
-static struct rand_buffer *get_thread_local_buffer(void) {
-  struct rand_buffer *buf =
-      CRYPTO_get_thread_local(OPENSSL_THREAD_LOCAL_URANDOM_BUF);
-  if (buf != NULL) {
-    return buf;
-  }
-
-  buf = OPENSSL_malloc(sizeof(struct rand_buffer));
-  if (buf == NULL) {
-    return NULL;
-  }
-  buf->used = BUF_SIZE;  /* To trigger a |fill_with_entropy| on first use. */
-  if (!CRYPTO_set_thread_local(OPENSSL_THREAD_LOCAL_URANDOM_BUF, buf,
-                               OPENSSL_free)) {
-    OPENSSL_free(buf);
-    return NULL;
-  }
-
-  return buf;
-}
-
 #if defined(USE_SYS_getrandom) && defined(__has_feature)
 #if __has_feature(memory_sanitizer)
 void __msan_unpoison(void *, size_t);
@@ -287,30 +250,6 @@
   return 1;
 }
 
-/* read_from_buffer reads |requested| random bytes from the buffer into |out|,
- * refilling it if necessary to satisfy the request. */
-static void read_from_buffer(struct rand_buffer *buf,
-                             uint8_t *out, size_t requested) {
-  size_t remaining = BUF_SIZE - buf->used;
-
-  while (requested > remaining) {
-    OPENSSL_memcpy(out, &buf->rand[buf->used], remaining);
-    buf->used += remaining;
-    out += remaining;
-    requested -= remaining;
-
-    if (!fill_with_entropy(buf->rand, BUF_SIZE)) {
-      abort();
-      return;
-    }
-    buf->used = 0;
-    remaining = BUF_SIZE;
-  }
-
-  OPENSSL_memcpy(out, &buf->rand[buf->used], requested);
-  buf->used += requested;
-}
-
 /* CRYPTO_sysrand puts |requested| random bytes into |out|. */
 void CRYPTO_sysrand(uint8_t *out, size_t requested) {
   if (requested == 0) {
@@ -318,13 +257,6 @@
   }
 
   CRYPTO_once(&once, init_once);
-  if (urandom_buffering && requested < BUF_SIZE) {
-    struct rand_buffer *buf = get_thread_local_buffer();
-    if (buf != NULL) {
-      read_from_buffer(buf, out, requested);
-      return;
-    }
-  }
 
   if (!fill_with_entropy(out, requested)) {
     abort();
diff --git a/src/crypto/rsa/internal.h b/src/crypto/rsa/internal.h
index b865a0a..29202b6 100644
--- a/src/crypto/rsa/internal.h
+++ b/src/crypto/rsa/internal.h
@@ -59,6 +59,8 @@
 
 #include <openssl/base.h>
 
+#include <openssl/bn.h>
+
 
 #if defined(__cplusplus)
 extern "C" {
@@ -79,14 +81,9 @@
                         const uint8_t *in, size_t in_len, int padding);
 int rsa_default_private_transform(RSA *rsa, uint8_t *out, const uint8_t *in,
                                   size_t len);
-int rsa_default_multi_prime_keygen(RSA *rsa, int bits, int num_primes,
-                                   BIGNUM *e_value, BN_GENCB *cb);
 int rsa_default_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb);
 
 
-#define RSA_PKCS1_PADDING_SIZE 11
-
-
 BN_BLINDING *BN_BLINDING_new(void);
 void BN_BLINDING_free(BN_BLINDING *b);
 int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, const BIGNUM *e,
@@ -120,24 +117,18 @@
                           size_t len);
 
 
-/* RSA_additional_prime contains information about the third, forth etc prime
- * in a multi-prime RSA key. */
-typedef struct RSA_additional_prime_st {
-  BIGNUM *prime;
-  /* exp is d^{prime-1} mod prime */
-  BIGNUM *exp;
-  /* coeff is such that r×coeff ≡ 1 mod prime. */
-  BIGNUM *coeff;
+/* The following utility functions are exported for test purposes. */
 
-  /* Values below here are not in the ASN.1 serialisation. */
+extern const BN_ULONG kBoringSSLRSASqrtTwo[];
+extern const size_t kBoringSSLRSASqrtTwoLen;
 
-  /* r is the product of all primes (including p and q) prior to this one. */
-  BIGNUM *r;
-  /* mont is a |BN_MONT_CTX| modulo |prime|. */
-  BN_MONT_CTX *mont;
-} RSA_additional_prime;
+/* rsa_less_than_words returns one if |a| < |b| and zero otherwise, where |a|
+ * and |b| both are |len| words long. It runs in constant time. */
+int rsa_less_than_words(const BN_ULONG *a, const BN_ULONG *b, size_t len);
 
-void RSA_additional_prime_free(RSA_additional_prime *ap);
+/* rsa_greater_than_pow2 returns one if |b| is greater than 2^|n| and zero
+ * otherwise. */
+int rsa_greater_than_pow2(const BIGNUM *b, int n);
 
 
 #if defined(__cplusplus)
diff --git a/src/crypto/rsa/padding.c b/src/crypto/rsa/padding.c
index dee44dd..787f248 100644
--- a/src/crypto/rsa/padding.c
+++ b/src/crypto/rsa/padding.c
@@ -69,7 +69,8 @@
 #include "internal.h"
 #include "../internal.h"
 
-/* TODO(fork): don't the check functions have to be constant time? */
+
+#define RSA_PKCS1_PADDING_SIZE 11
 
 int RSA_padding_add_PKCS1_type_1(uint8_t *to, size_t to_len,
                                  const uint8_t *from, size_t from_len) {
@@ -80,7 +81,7 @@
   }
 
   if (from_len > to_len - RSA_PKCS1_PADDING_SIZE) {
-    OPENSSL_PUT_ERROR(RSA, RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
+    OPENSSL_PUT_ERROR(RSA, RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY);
     return 0;
   }
 
diff --git a/src/crypto/rsa/rsa.c b/src/crypto/rsa/rsa.c
index 6d56238..1b62d03 100644
--- a/src/crypto/rsa/rsa.c
+++ b/src/crypto/rsa/rsa.c
@@ -69,6 +69,7 @@
 
 #include "internal.h"
 #include "../internal.h"
+#include "../bn/internal.h"
 
 
 static CRYPTO_EX_DATA_CLASS g_ex_data_class = CRYPTO_EX_DATA_CLASS_INIT;
@@ -109,19 +110,6 @@
   return rsa;
 }
 
-void RSA_additional_prime_free(RSA_additional_prime *ap) {
-  if (ap == NULL) {
-    return;
-  }
-
-  BN_clear_free(ap->prime);
-  BN_clear_free(ap->exp);
-  BN_clear_free(ap->coeff);
-  BN_clear_free(ap->r);
-  BN_MONT_CTX_free(ap->mont);
-  OPENSSL_free(ap);
-}
-
 void RSA_free(RSA *rsa) {
   unsigned u;
 
@@ -156,10 +144,6 @@
   }
   OPENSSL_free(rsa->blindings);
   OPENSSL_free(rsa->blindings_inuse);
-  if (rsa->additional_primes != NULL) {
-    sk_RSA_additional_prime_pop_free(rsa->additional_primes,
-                                     RSA_additional_prime_free);
-  }
   CRYPTO_MUTEX_cleanup(&rsa->lock);
   OPENSSL_free(rsa);
 }
@@ -213,15 +197,6 @@
   return rsa_default_keygen(rsa, bits, e_value, cb);
 }
 
-int RSA_generate_multi_prime_key(RSA *rsa, int bits, int num_primes,
-                                 BIGNUM *e_value, BN_GENCB *cb) {
-  if (rsa->meth->multi_prime_keygen) {
-    return rsa->meth->multi_prime_keygen(rsa, bits, num_primes, e_value, cb);
-  }
-
-  return rsa_default_multi_prime_keygen(rsa, bits, num_primes, e_value, cb);
-}
-
 int RSA_encrypt(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
                 const uint8_t *in, size_t in_len, int padding) {
   if (rsa->meth->encrypt) {
@@ -467,23 +442,16 @@
   }
 
   if (!RSA_add_pkcs1_prefix(&signed_msg, &signed_msg_len,
-                            &signed_msg_is_alloced, hash_nid, in, in_len)) {
-    return 0;
+                            &signed_msg_is_alloced, hash_nid, in, in_len) ||
+      !RSA_sign_raw(rsa, &size_t_out_len, out, rsa_size, signed_msg,
+                    signed_msg_len, RSA_PKCS1_PADDING)) {
+    goto err;
   }
 
-  if (rsa_size < RSA_PKCS1_PADDING_SIZE ||
-      signed_msg_len > rsa_size - RSA_PKCS1_PADDING_SIZE) {
-    OPENSSL_PUT_ERROR(RSA, RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY);
-    goto finish;
-  }
+  *out_len = size_t_out_len;
+  ret = 1;
 
-  if (RSA_sign_raw(rsa, &size_t_out_len, out, rsa_size, signed_msg,
-                   signed_msg_len, RSA_PKCS1_PADDING)) {
-    *out_len = size_t_out_len;
-    ret = 1;
-  }
-
-finish:
+err:
   if (signed_msg_is_alloced) {
     OPENSSL_free(signed_msg);
   }
@@ -525,6 +493,8 @@
     goto out;
   }
 
+  /* Check that no other information follows the hash value (FIPS 186-4 Section
+   * 5.5) and it matches the expected hash. */
   if (len != signed_msg_len || OPENSSL_memcmp(buf, signed_msg, len) != 0) {
     OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_SIGNATURE);
     goto out;
@@ -597,23 +567,6 @@
     goto out;
   }
 
-  size_t num_additional_primes = 0;
-  if (key->additional_primes != NULL) {
-    num_additional_primes = sk_RSA_additional_prime_num(key->additional_primes);
-  }
-
-  for (size_t i = 0; i < num_additional_primes; i++) {
-    const RSA_additional_prime *ap =
-        sk_RSA_additional_prime_value(key->additional_primes, i);
-    if (!BN_mul(&n, &n, ap->prime, ctx) ||
-        !BN_sub(&pm1, ap->prime, BN_value_one()) ||
-        !BN_mul(&lcm, &lcm, &pm1, ctx) ||
-        !BN_gcd(&gcd, &gcd, &pm1, ctx)) {
-      OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
-      goto out;
-    }
-  }
-
   if (!BN_div(&lcm, NULL, &lcm, &gcd, ctx) ||
       !BN_gcd(&gcd, &pm1, &qm1, ctx) ||
       /* de = d*e mod lcm(prime-1, for all primes). */
@@ -639,7 +592,7 @@
     goto out;
   }
 
-  if (has_crt_values && num_additional_primes == 0) {
+  if (has_crt_values) {
     if (/* dmp1 = d mod (p-1) */
         !BN_mod(&dmp1, key->d, &pm1, ctx) ||
         /* dmq1 = d mod (q-1) */
@@ -676,6 +629,88 @@
   return ok;
 }
 
+
+/* This is the product of the 132 smallest odd primes, from 3 to 751. */
+static const BN_ULONG kSmallFactorsLimbs[] = {
+    TOBN(0xc4309333, 0x3ef4e3e1), TOBN(0x71161eb6, 0xcd2d655f),
+    TOBN(0x95e2238c, 0x0bf94862), TOBN(0x3eb233d3, 0x24f7912b),
+    TOBN(0x6b55514b, 0xbf26c483), TOBN(0x0a84d817, 0x5a144871),
+    TOBN(0x77d12fee, 0x9b82210a), TOBN(0xdb5b93c2, 0x97f050b3),
+    TOBN(0x4acad6b9, 0x4d6c026b), TOBN(0xeb7751f3, 0x54aec893),
+    TOBN(0xdba53368, 0x36bc85c4), TOBN(0xd85a1b28, 0x7f5ec78e),
+    TOBN(0x2eb072d8, 0x6b322244), TOBN(0xbba51112, 0x5e2b3aea),
+    TOBN(0x36ed1a6c, 0x0e2486bf), TOBN(0x5f270460, 0xec0c5727),
+    0x000017b1
+};
+static const BIGNUM kSmallFactors = STATIC_BIGNUM(kSmallFactorsLimbs);
+
+int RSA_check_fips(RSA *key) {
+  if (RSA_is_opaque(key)) {
+    /* Opaque keys can't be checked. */
+    OPENSSL_PUT_ERROR(RSA, RSA_R_PUBLIC_KEY_VALIDATION_FAILED);
+    return 0;
+  }
+
+  if (!RSA_check_key(key)) {
+    return 0;
+  }
+
+  BN_CTX *ctx = BN_CTX_new();
+  if (ctx == NULL) {
+    OPENSSL_PUT_ERROR(RSA, ERR_R_MALLOC_FAILURE);
+    return 0;
+  }
+
+  BIGNUM small_gcd;
+  BN_init(&small_gcd);
+
+  int ret = 1;
+
+  /* Perform partial public key validation of RSA keys (SP 800-89 5.3.3). */
+  /* TODO(svaldez): Check that n is composite and not a power of a prime using
+   * extended Miller-Rabin. */
+  if (BN_num_bits(key->e) < 16 ||
+      BN_num_bits(key->e) > 256 ||
+      !BN_is_odd(key->n) ||
+      !BN_is_odd(key->e) ||
+      !BN_gcd(&small_gcd, key->n, &kSmallFactors, ctx) ||
+      !BN_is_one(&small_gcd)) {
+    OPENSSL_PUT_ERROR(RSA, RSA_R_PUBLIC_KEY_VALIDATION_FAILED);
+    ret = 0;
+  }
+
+  BN_free(&small_gcd);
+  BN_CTX_free(ctx);
+
+  if (!ret || key->d == NULL || key->p == NULL) {
+    /* On a failure or on only a public key, there's nothing else can be
+     * checked. */
+    return ret;
+  }
+
+  /* FIPS pairwise consistency test (FIPS 140-2 4.9.2). Per FIPS 140-2 IG,
+   * section 9.9, it is not known whether |rsa| will be used for signing or
+   * encryption, so either pair-wise consistency self-test is acceptable. We
+   * perform a signing test. */
+  uint8_t data[32] = {0};
+  unsigned sig_len = RSA_size(key);
+  uint8_t *sig = OPENSSL_malloc(sig_len);
+  if (sig == NULL) {
+    OPENSSL_PUT_ERROR(RSA, ERR_R_MALLOC_FAILURE);
+    return 0;
+  }
+
+  if (!RSA_sign(NID_sha256, data, sizeof(data), sig, &sig_len, key) ||
+      !RSA_verify(NID_sha256, data, sizeof(data), sig, sig_len, key)) {
+    OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
+    ret = 0;
+  }
+
+  OPENSSL_free(sig);
+
+  return ret;
+}
+
 int RSA_recover_crt_params(RSA *rsa) {
   BN_CTX *ctx;
   BIGNUM *totient, *rem, *multiple, *p_plus_q, *p_minus_q;
@@ -691,11 +726,6 @@
     return 0;
   }
 
-  if (rsa->additional_primes != NULL) {
-    OPENSSL_PUT_ERROR(RSA, RSA_R_CANNOT_RECOVER_MULTI_PRIME_KEY);
-    return 0;
-  }
-
   /* This uses the algorithm from section 9B of the RSA paper:
    * http://people.csail.mit.edu/rivest/Rsapaper.pdf */
 
diff --git a/src/crypto/rsa/rsa_asn1.c b/src/crypto/rsa/rsa_asn1.c
index 88b1dfb..d6e28ad 100644
--- a/src/crypto/rsa/rsa_asn1.c
+++ b/src/crypto/rsa/rsa_asn1.c
@@ -169,36 +169,9 @@
   return 1;
 }
 
-/* kVersionTwoPrime and kVersionMulti are the supported values of the version
- * field of an RSAPrivateKey structure (RFC 3447). */
+/* kVersionTwoPrime is the value of the version field for a two-prime
+ * RSAPrivateKey structure (RFC 3447). */
 static const uint64_t kVersionTwoPrime = 0;
-static const uint64_t kVersionMulti = 1;
-
-/* rsa_parse_additional_prime parses a DER-encoded OtherPrimeInfo from |cbs| and
- * advances |cbs|. It returns a newly-allocated |RSA_additional_prime| on
- * success or NULL on error. The |r| and |mont| fields of the result are set to
- * NULL. */
-static RSA_additional_prime *rsa_parse_additional_prime(CBS *cbs) {
-  RSA_additional_prime *ret = OPENSSL_malloc(sizeof(RSA_additional_prime));
-  if (ret == NULL) {
-    OPENSSL_PUT_ERROR(RSA, ERR_R_MALLOC_FAILURE);
-    return 0;
-  }
-  OPENSSL_memset(ret, 0, sizeof(RSA_additional_prime));
-
-  CBS child;
-  if (!CBS_get_asn1(cbs, &child, CBS_ASN1_SEQUENCE) ||
-      !parse_integer(&child, &ret->prime) ||
-      !parse_integer(&child, &ret->exp) ||
-      !parse_integer(&child, &ret->coeff) ||
-      CBS_len(&child) != 0) {
-    OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_ENCODING);
-    RSA_additional_prime_free(ret);
-    return NULL;
-  }
-
-  return ret;
-}
 
 RSA *RSA_parse_private_key(CBS *cbs) {
   BN_CTX *ctx = NULL;
@@ -216,7 +189,7 @@
     goto err;
   }
 
-  if (version != kVersionTwoPrime && version != kVersionMulti) {
+  if (version != kVersionTwoPrime) {
     OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_VERSION);
     goto err;
   }
@@ -232,50 +205,6 @@
     goto err;
   }
 
-  if (version == kVersionMulti) {
-    /* Although otherPrimeInfos is written as OPTIONAL in RFC 3447, it later
-     * says "[otherPrimeInfos] shall be omitted if version is 0 and shall
-     * contain at least one instance of OtherPrimeInfo if version is 1." The
-     * OPTIONAL is just so both versions share a single definition. */
-    CBS other_prime_infos;
-    if (!CBS_get_asn1(&child, &other_prime_infos, CBS_ASN1_SEQUENCE) ||
-        CBS_len(&other_prime_infos) == 0) {
-      OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_ENCODING);
-      goto err;
-    }
-    ret->additional_primes = sk_RSA_additional_prime_new_null();
-    if (ret->additional_primes == NULL) {
-      OPENSSL_PUT_ERROR(RSA, ERR_R_MALLOC_FAILURE);
-      goto err;
-    }
-
-    ctx = BN_CTX_new();
-    product_of_primes_so_far = BN_new();
-    if (ctx == NULL ||
-        product_of_primes_so_far == NULL ||
-        !BN_mul(product_of_primes_so_far, ret->p, ret->q, ctx)) {
-      goto err;
-    }
-
-    while (CBS_len(&other_prime_infos) > 0) {
-      RSA_additional_prime *ap = rsa_parse_additional_prime(&other_prime_infos);
-      if (ap == NULL) {
-        goto err;
-      }
-      if (!sk_RSA_additional_prime_push(ret->additional_primes, ap)) {
-        OPENSSL_PUT_ERROR(RSA, ERR_R_MALLOC_FAILURE);
-        RSA_additional_prime_free(ap);
-        goto err;
-      }
-      ap->r = BN_dup(product_of_primes_so_far);
-      if (ap->r == NULL ||
-          !BN_mul(product_of_primes_so_far, product_of_primes_so_far,
-                  ap->prime, ctx)) {
-        goto err;
-      }
-    }
-  }
-
   if (CBS_len(&child) != 0) {
     OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_ENCODING);
     goto err;
@@ -310,13 +239,9 @@
 }
 
 int RSA_marshal_private_key(CBB *cbb, const RSA *rsa) {
-  const int is_multiprime =
-      sk_RSA_additional_prime_num(rsa->additional_primes) > 0;
-
   CBB child;
   if (!CBB_add_asn1(cbb, &child, CBS_ASN1_SEQUENCE) ||
-      !CBB_add_asn1_uint64(&child,
-                           is_multiprime ? kVersionMulti : kVersionTwoPrime) ||
+      !CBB_add_asn1_uint64(&child, kVersionTwoPrime) ||
       !marshal_integer(&child, rsa->n) ||
       !marshal_integer(&child, rsa->e) ||
       !marshal_integer(&child, rsa->d) ||
@@ -324,35 +249,8 @@
       !marshal_integer(&child, rsa->q) ||
       !marshal_integer(&child, rsa->dmp1) ||
       !marshal_integer(&child, rsa->dmq1) ||
-      !marshal_integer(&child, rsa->iqmp)) {
-    OPENSSL_PUT_ERROR(RSA, RSA_R_ENCODE_ERROR);
-    return 0;
-  }
-
-  CBB other_prime_infos;
-  if (is_multiprime) {
-    if (!CBB_add_asn1(&child, &other_prime_infos, CBS_ASN1_SEQUENCE)) {
-      OPENSSL_PUT_ERROR(RSA, RSA_R_ENCODE_ERROR);
-      return 0;
-    }
-    for (size_t i = 0; i < sk_RSA_additional_prime_num(rsa->additional_primes);
-         i++) {
-      RSA_additional_prime *ap =
-          sk_RSA_additional_prime_value(rsa->additional_primes, i);
-      CBB other_prime_info;
-      if (!CBB_add_asn1(&other_prime_infos, &other_prime_info,
-                        CBS_ASN1_SEQUENCE) ||
-          !marshal_integer(&other_prime_info, ap->prime) ||
-          !marshal_integer(&other_prime_info, ap->exp) ||
-          !marshal_integer(&other_prime_info, ap->coeff) ||
-          !CBB_flush(&other_prime_infos)) {
-        OPENSSL_PUT_ERROR(RSA, RSA_R_ENCODE_ERROR);
-        return 0;
-      }
-    }
-  }
-
-  if (!CBB_flush(cbb)) {
+      !marshal_integer(&child, rsa->iqmp) ||
+      !CBB_flush(cbb)) {
     OPENSSL_PUT_ERROR(RSA, RSA_R_ENCODE_ERROR);
     return 0;
   }
diff --git a/src/crypto/rsa/rsa_impl.c b/src/crypto/rsa/rsa_impl.c
index e385e60..eb0a13e 100644
--- a/src/crypto/rsa/rsa_impl.c
+++ b/src/crypto/rsa/rsa_impl.c
@@ -57,12 +57,14 @@
 #include <openssl/rsa.h>
 
 #include <assert.h>
+#include <limits.h>
 #include <string.h>
 
 #include <openssl/bn.h>
 #include <openssl/err.h>
 #include <openssl/mem.h>
 #include <openssl/thread.h>
+#include <openssl/type_check.h>
 
 #include "internal.h"
 #include "../bn/internal.h"
@@ -649,11 +651,6 @@
 
   BIGNUM *r1, *m1, *vrfy;
   int ret = 0;
-  size_t i, num_additional_primes = 0;
-
-  if (rsa->additional_primes != NULL) {
-    num_additional_primes = sk_RSA_additional_prime_num(rsa->additional_primes);
-  }
 
   BN_CTX_start(ctx);
   r1 = BN_CTX_get(ctx);
@@ -731,31 +728,6 @@
     goto err;
   }
 
-  for (i = 0; i < num_additional_primes; i++) {
-    /* multi-prime RSA. */
-    RSA_additional_prime *ap =
-        sk_RSA_additional_prime_value(rsa->additional_primes, i);
-
-    /* c will already point to a BIGNUM with the correct flags. */
-    if (!BN_mod(r1, I, ap->prime, ctx)) {
-      goto err;
-    }
-
-    if (!BN_MONT_CTX_set_locked(&ap->mont, &rsa->lock, ap->prime, ctx) ||
-        !BN_mod_exp_mont_consttime(m1, r1, ap->exp, ap->prime, ctx, ap->mont)) {
-      goto err;
-    }
-
-    if (!BN_sub(m1, m1, r0) ||
-        !BN_mul(m1, m1, ap->coeff, ctx) ||
-        !BN_mod(m1, m1, ap->prime, ctx) ||
-        (BN_is_negative(m1) && !BN_add(m1, m1, ap->prime)) ||
-        !BN_mul(m1, m1, ap->r, ctx) ||
-        !BN_add(r0, r0, m1)) {
-      goto err;
-    }
-  }
-
   ret = 1;
 
 err:
@@ -763,248 +735,260 @@
   return ret;
 }
 
-int rsa_default_multi_prime_keygen(RSA *rsa, int bits, int num_primes,
-                                   BIGNUM *e_value, BN_GENCB *cb) {
-  BIGNUM *r0 = NULL, *r1 = NULL, *r2 = NULL, *r3 = NULL, *tmp;
-  int prime_bits, ok = -1, n = 0, i, j;
-  BN_CTX *ctx = NULL;
-  STACK_OF(RSA_additional_prime) *additional_primes = NULL;
+static int ensure_bignum(BIGNUM **out) {
+  if (*out == NULL) {
+    *out = BN_new();
+  }
+  return *out != NULL;
+}
 
-  if (num_primes < 2) {
-    ok = 0; /* we set our own err */
-    OPENSSL_PUT_ERROR(RSA, RSA_R_MUST_HAVE_AT_LEAST_TWO_PRIMES);
+/* kBoringSSLRSASqrtTwo is the BIGNUM representation of ⌊2¹⁵³⁵×√2⌋. This is
+ * chosen to give enough precision for 3072-bit RSA, the largest key size FIPS
+ * specifies. Key sizes beyond this will round up.
+ *
+ * To verify this number, check that n² < 2³⁰⁷¹ < (n+1)², where n is value
+ * represented here. Note the components are listed in little-endian order. Here
+ * is some sample Python code to check:
+ *
+ *   >>> TOBN = lambda a, b: a << 32 | b
+ *   >>> l = [ <paste the contents of kSqrtTwo> ]
+ *   >>> n = sum(a * 2**(64*i) for i, a in enumerate(l))
+ *   >>> n**2 < 2**3071 < (n+1)**2
+ *   True
+ */
+const BN_ULONG kBoringSSLRSASqrtTwo[] = {
+    TOBN(0xdea06241, 0xf7aa81c2), TOBN(0xf6a1be3f, 0xca221307),
+    TOBN(0x332a5e9f, 0x7bda1ebf), TOBN(0x0104dc01, 0xfe32352f),
+    TOBN(0xb8cf341b, 0x6f8236c7), TOBN(0x4264dabc, 0xd528b651),
+    TOBN(0xf4d3a02c, 0xebc93e0c), TOBN(0x81394ab6, 0xd8fd0efd),
+    TOBN(0xeaa4a089, 0x9040ca4a), TOBN(0xf52f120f, 0x836e582e),
+    TOBN(0xcb2a6343, 0x31f3c84d), TOBN(0xc6d5a8a3, 0x8bb7e9dc),
+    TOBN(0x460abc72, 0x2f7c4e33), TOBN(0xcab1bc91, 0x1688458a),
+    TOBN(0x53059c60, 0x11bc337b), TOBN(0xd2202e87, 0x42af1f4e),
+    TOBN(0x78048736, 0x3dfa2768), TOBN(0x0f74a85e, 0x439c7b4a),
+    TOBN(0xa8b1fe6f, 0xdc83db39), TOBN(0x4afc8304, 0x3ab8a2c3),
+    TOBN(0xed17ac85, 0x83339915), TOBN(0x1d6f60ba, 0x893ba84c),
+    TOBN(0x597d89b3, 0x754abe9f), TOBN(0xb504f333, 0xf9de6484),
+};
+const size_t kBoringSSLRSASqrtTwoLen = OPENSSL_ARRAY_SIZE(kBoringSSLRSASqrtTwo);
+
+int rsa_less_than_words(const BN_ULONG *a, const BN_ULONG *b, size_t len) {
+  OPENSSL_COMPILE_ASSERT(sizeof(BN_ULONG) <= sizeof(size_t),
+                         size_t_constant_time_functions_too_small);
+  int ret = 0;
+  /* Process the words in little-endian order. */
+  for (size_t i = 0; i < len; i++) {
+    size_t eq = constant_time_eq_s(a[i], b[i]);
+    size_t lt = constant_time_lt_s(a[i], b[i]);
+    ret = constant_time_select_int(eq, ret, constant_time_select_int(lt, 1, 0));
+  }
+  return ret;
+}
+
+int rsa_greater_than_pow2(const BIGNUM *b, int n) {
+  if (BN_is_negative(b) || n == INT_MAX) {
+    return 0;
+  }
+
+  int b_bits = BN_num_bits(b);
+  return b_bits > n + 1 || (b_bits == n + 1 && !BN_is_pow2(b));
+}
+
+/* generate_prime sets |out| to a prime with length |bits| such that |out|-1 is
+ * relatively prime to |e|. If |p| is non-NULL, |out| will also not be close to
+ * |p|. */
+static int generate_prime(BIGNUM *out, int bits, const BIGNUM *e,
+                          const BIGNUM *p, BN_CTX *ctx, BN_GENCB *cb) {
+  if (bits < 128 || (bits % BN_BITS2) != 0) {
+    OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
+    return 0;
+  }
+
+  /* Ensure the bound on |tries| does not overflow. */
+  if (bits >= INT_MAX/5) {
+    OPENSSL_PUT_ERROR(RSA, RSA_R_MODULUS_TOO_LARGE);
+    return 0;
+  }
+
+  int ret = 0, tries = 0, rand_tries = 0;
+  BN_CTX_start(ctx);
+  BIGNUM *tmp = BN_CTX_get(ctx);
+  if (tmp == NULL) {
     goto err;
   }
 
-  ctx = BN_CTX_new();
+  /* See FIPS 186-4 appendix B.3.3, steps 4 and 5. Note |bits| here is
+   * nlen/2. */
+  for (;;) {
+    /* Generate a random number of length |bits| where the bottom bit is set
+     * (steps 4.2, 4.3, 5.2 and 5.3) and the top bit is set (implied by the
+     * bound checked below in steps 4.4 and 5.5). */
+    if (!BN_rand(out, bits, BN_RAND_TOP_ONE, BN_RAND_BOTTOM_ODD) ||
+        !BN_GENCB_call(cb, BN_GENCB_GENERATED, rand_tries++)) {
+      goto err;
+    }
+
+    if (p != NULL) {
+      /* If |p| and |out| are too close, try again (step 5.4). */
+      if (!BN_sub(tmp, out, p)) {
+        goto err;
+      }
+      BN_set_negative(tmp, 0);
+      if (!rsa_greater_than_pow2(tmp, bits - 100)) {
+        continue;
+      }
+    }
+
+    /* If out < 2^(bits-1)×√2, try again (steps 4.4 and 5.5).
+     *
+     * We check the most significant words, so we retry if ⌊out/2^k⌋ <= ⌊b/2^k⌋,
+     * where b = 2^(bits-1)×√2 and k = max(0, bits - 1536). For key sizes up to
+     * 3072 (bits = 1536), k = 0, so we are testing that ⌊out⌋ <= ⌊b⌋. out is an
+     * integer and b is not, so this is equivalent to out < b. That is, the
+     * comparison is exact for FIPS key sizes.
+     *
+     * For larger keys, the comparison is approximate, leaning towards
+     * retrying. That is, we reject a negligible fraction of primes that are
+     * within the FIPS bound, but we will never accept a prime outside the
+     * bound, ensuring the resulting RSA key is the right size. Specifically, if
+     * the FIPS bound holds, we have ⌊out/2^k⌋ < out/2^k < b/2^k. This implies
+     * ⌊out/2^k⌋ <= ⌊b/2^k⌋. That is, the FIPS bound implies our bound and so we
+     * are slightly tighter. */
+    size_t out_len = (size_t)out->top;
+    assert(out_len == (size_t)bits / BN_BITS2);
+    size_t to_check = kBoringSSLRSASqrtTwoLen;
+    if (to_check > out_len) {
+      to_check = out_len;
+    }
+    if (!rsa_less_than_words(
+            kBoringSSLRSASqrtTwo + kBoringSSLRSASqrtTwoLen - to_check,
+            out->d + out_len - to_check, to_check)) {
+      continue;
+    }
+
+    /* Check gcd(out-1, e) is one (steps 4.5 and 5.6). */
+    if (!BN_sub(tmp, out, BN_value_one()) ||
+        !BN_gcd(tmp, tmp, e, ctx)) {
+      goto err;
+    }
+    if (BN_is_one(tmp)) {
+      /* Test |out| for primality (steps 4.5.1 and 5.6.1).
+       * TODO(davidben): Align the primality test with FIPS 186-4. */
+      int is_probable_prime;
+      if (!BN_primality_test(&is_probable_prime, out, BN_prime_checks, ctx, 1,
+                             cb)) {
+        goto err;
+      }
+      if (is_probable_prime) {
+        ret = 1;
+        goto err;
+      }
+    }
+
+    /* If we've tried too many times to find a prime, abort (steps 4.7 and
+     * 5.8). */
+    tries++;
+    if (tries >= bits * 5) {
+      OPENSSL_PUT_ERROR(RSA, RSA_R_TOO_MANY_ITERATIONS);
+      goto err;
+    }
+    if (!BN_GENCB_call(cb, 2, tries)) {
+      goto err;
+    }
+  }
+
+err:
+  BN_CTX_end(ctx);
+  return ret;
+}
+
+int rsa_default_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb) {
+  /* See FIPS 186-4 appendix B.3. This function implements a generalized version
+   * of the FIPS algorithm. For FIPS compliance, the caller is responsible for
+   * passing in 2048 or 3072 to |bits| and 65537 for |e_value|. */
+
+  /* Always generate RSA keys which are a multiple of 128 bits. Round |bits|
+   * down as needed. */
+  bits &= ~127;
+
+  /* Reject excessively small keys. */
+  if (bits < 256) {
+    OPENSSL_PUT_ERROR(RSA, RSA_R_KEY_SIZE_TOO_SMALL);
+    return 0;
+  }
+
+  int ret = 0;
+  BN_CTX *ctx = BN_CTX_new();
   if (ctx == NULL) {
-    goto err;
+    goto bn_err;
   }
   BN_CTX_start(ctx);
-  r0 = BN_CTX_get(ctx);
-  r1 = BN_CTX_get(ctx);
-  r2 = BN_CTX_get(ctx);
-  r3 = BN_CTX_get(ctx);
+  BIGNUM *r0 = BN_CTX_get(ctx);
+  BIGNUM *r1 = BN_CTX_get(ctx);
+  BIGNUM *r2 = BN_CTX_get(ctx);
+  BIGNUM *r3 = BN_CTX_get(ctx);
   if (r0 == NULL || r1 == NULL || r2 == NULL || r3 == NULL) {
-    goto err;
+    goto bn_err;
   }
 
-  if (num_primes > 2) {
-    additional_primes = sk_RSA_additional_prime_new_null();
-    if (additional_primes == NULL) {
-      goto err;
-    }
-  }
-
-  for (i = 2; i < num_primes; i++) {
-    RSA_additional_prime *ap = OPENSSL_malloc(sizeof(RSA_additional_prime));
-    if (ap == NULL) {
-      goto err;
-    }
-    OPENSSL_memset(ap, 0, sizeof(RSA_additional_prime));
-    ap->prime = BN_new();
-    ap->exp = BN_new();
-    ap->coeff = BN_new();
-    ap->r = BN_new();
-    if (ap->prime == NULL ||
-        ap->exp == NULL ||
-        ap->coeff == NULL ||
-        ap->r == NULL ||
-        !sk_RSA_additional_prime_push(additional_primes, ap)) {
-      RSA_additional_prime_free(ap);
-      goto err;
-    }
-  }
-
-  /* We need the RSA components non-NULL */
-  if (!rsa->n && ((rsa->n = BN_new()) == NULL)) {
-    goto err;
-  }
-  if (!rsa->d && ((rsa->d = BN_new()) == NULL)) {
-    goto err;
-  }
-  if (!rsa->e && ((rsa->e = BN_new()) == NULL)) {
-    goto err;
-  }
-  if (!rsa->p && ((rsa->p = BN_new()) == NULL)) {
-    goto err;
-  }
-  if (!rsa->q && ((rsa->q = BN_new()) == NULL)) {
-    goto err;
-  }
-  if (!rsa->dmp1 && ((rsa->dmp1 = BN_new()) == NULL)) {
-    goto err;
-  }
-  if (!rsa->dmq1 && ((rsa->dmq1 = BN_new()) == NULL)) {
-    goto err;
-  }
-  if (!rsa->iqmp && ((rsa->iqmp = BN_new()) == NULL)) {
-    goto err;
+  /* We need the RSA components non-NULL. */
+  if (!ensure_bignum(&rsa->n) ||
+      !ensure_bignum(&rsa->d) ||
+      !ensure_bignum(&rsa->e) ||
+      !ensure_bignum(&rsa->p) ||
+      !ensure_bignum(&rsa->q) ||
+      !ensure_bignum(&rsa->dmp1) ||
+      !ensure_bignum(&rsa->dmq1) ||
+      !ensure_bignum(&rsa->iqmp)) {
+    goto bn_err;
   }
 
   if (!BN_copy(rsa->e, e_value)) {
-    goto err;
+    goto bn_err;
   }
 
-  /* generate p and q */
-  prime_bits = (bits + (num_primes - 1)) / num_primes;
-  for (;;) {
-    if (!BN_generate_prime_ex(rsa->p, prime_bits, 0, NULL, NULL, cb) ||
-        !BN_sub(r2, rsa->p, BN_value_one()) ||
-        !BN_gcd(r1, r2, rsa->e, ctx)) {
-      goto err;
-    }
-    if (BN_is_one(r1)) {
-      break;
-    }
-    if (!BN_GENCB_call(cb, 2, n++)) {
-      goto err;
-    }
-  }
-  if (!BN_GENCB_call(cb, 3, 0)) {
-    goto err;
-  }
-  prime_bits = ((bits - prime_bits) + (num_primes - 2)) / (num_primes - 1);
-  for (;;) {
-    /* When generating ridiculously small keys, we can get stuck
-     * continually regenerating the same prime values. Check for
-     * this and bail if it happens 3 times. */
-    unsigned int degenerate = 0;
-    do {
-      if (!BN_generate_prime_ex(rsa->q, prime_bits, 0, NULL, NULL, cb)) {
-        goto err;
-      }
-    } while ((BN_cmp(rsa->p, rsa->q) == 0) && (++degenerate < 3));
-    if (degenerate == 3) {
-      ok = 0; /* we set our own err */
-      OPENSSL_PUT_ERROR(RSA, RSA_R_KEY_SIZE_TOO_SMALL);
-      goto err;
-    }
-    if (!BN_sub(r2, rsa->q, BN_value_one()) ||
-        !BN_gcd(r1, r2, rsa->e, ctx)) {
-      goto err;
-    }
-    if (BN_is_one(r1)) {
-      break;
-    }
-    if (!BN_GENCB_call(cb, 2, n++)) {
-      goto err;
-    }
-  }
-
-  if (!BN_GENCB_call(cb, 3, 1) ||
-      !BN_mul(rsa->n, rsa->p, rsa->q, ctx)) {
-    goto err;
-  }
-
-  for (i = 2; i < num_primes; i++) {
-    RSA_additional_prime *ap =
-        sk_RSA_additional_prime_value(additional_primes, i - 2);
-    prime_bits = ((bits - BN_num_bits(rsa->n)) + (num_primes - (i + 1))) /
-                 (num_primes - i);
-
-    for (;;) {
-      if (!BN_generate_prime_ex(ap->prime, prime_bits, 0, NULL, NULL, cb)) {
-        goto err;
-      }
-      if (BN_cmp(rsa->p, ap->prime) == 0 ||
-          BN_cmp(rsa->q, ap->prime) == 0) {
-        continue;
-      }
-
-      for (j = 0; j < i - 2; j++) {
-        if (BN_cmp(sk_RSA_additional_prime_value(additional_primes, j)->prime,
-                   ap->prime) == 0) {
-          break;
-        }
-      }
-      if (j != i - 2) {
-        continue;
-      }
-
-      if (!BN_sub(r2, ap->prime, BN_value_one()) ||
-          !BN_gcd(r1, r2, rsa->e, ctx)) {
-        goto err;
-      }
-
-      if (!BN_is_one(r1)) {
-        continue;
-      }
-      if (i != num_primes - 1) {
-        break;
-      }
-
-      /* For the last prime we'll check that it makes n large enough. In the
-       * two prime case this isn't a problem because we generate primes with
-       * the top two bits set and so the product is always of the expected
-       * size. In the multi prime case, this doesn't follow. */
-      if (!BN_mul(r1, rsa->n, ap->prime, ctx)) {
-        goto err;
-      }
-      if (BN_num_bits(r1) == (unsigned) bits) {
-        break;
-      }
-
-      if (!BN_GENCB_call(cb, 2, n++)) {
-        goto err;
-      }
+  int prime_bits = bits / 2;
+  do {
+    /* Generate p and q, each of size |prime_bits|, using the steps outlined in
+     * appendix FIPS 186-4 appendix B.3.3. */
+    if (!generate_prime(rsa->p, prime_bits, rsa->e, NULL, ctx, cb) ||
+        !BN_GENCB_call(cb, 3, 0) ||
+        !generate_prime(rsa->q, prime_bits, rsa->e, rsa->p, ctx, cb) ||
+        !BN_GENCB_call(cb, 3, 1)) {
+      goto bn_err;
     }
 
-    /* ap->r is is the product of all the primes prior to the current one
-     * (including p and q). */
-    if (!BN_copy(ap->r, rsa->n)) {
-      goto err;
-    }
-    if (i == num_primes - 1) {
-      /* In the case of the last prime, we calculated n as |r1| in the loop
-       * above. */
-      if (!BN_copy(rsa->n, r1)) {
-        goto err;
-      }
-    } else if (!BN_mul(rsa->n, rsa->n, ap->prime, ctx)) {
-      goto err;
+    if (BN_cmp(rsa->p, rsa->q) < 0) {
+      BIGNUM *tmp = rsa->p;
+      rsa->p = rsa->q;
+      rsa->q = tmp;
     }
 
-    if (!BN_GENCB_call(cb, 3, 1)) {
-      goto err;
+    /* Calculate d. */
+    if (!BN_sub(r1 /* p-1 */, rsa->p, BN_value_one()) ||
+        !BN_sub(r2 /* q-1 */, rsa->q, BN_value_one()) ||
+        !BN_mul(r0 /* (p-1)(q-1) */, r1, r2, ctx) ||
+        !BN_mod_inverse(rsa->d, rsa->e, r0, ctx)) {
+      goto bn_err;
     }
+
+    /* Check that |rsa->d| > 2^|prime_bits| and try again if it fails. See
+     * appendix B.3.1's guidance on values for d. */
+  } while (!rsa_greater_than_pow2(rsa->d, prime_bits));
+
+  if (/* Calculate n. */
+      !BN_mul(rsa->n, rsa->p, rsa->q, ctx) ||
+      /* Calculate d mod (p-1). */
+      !BN_mod(rsa->dmp1, rsa->d, r1, ctx) ||
+      /* Calculate d mod (q-1) */
+      !BN_mod(rsa->dmq1, rsa->d, r2, ctx)) {
+    goto bn_err;
   }
 
-  if (BN_cmp(rsa->p, rsa->q) < 0) {
-    tmp = rsa->p;
-    rsa->p = rsa->q;
-    rsa->q = tmp;
-  }
-
-  /* calculate d */
-  if (!BN_sub(r1, rsa->p, BN_value_one())) {
-    goto err; /* p-1 */
-  }
-  if (!BN_sub(r2, rsa->q, BN_value_one())) {
-    goto err; /* q-1 */
-  }
-  if (!BN_mul(r0, r1, r2, ctx)) {
-    goto err; /* (p-1)(q-1) */
-  }
-  for (i = 2; i < num_primes; i++) {
-    RSA_additional_prime *ap =
-        sk_RSA_additional_prime_value(additional_primes, i - 2);
-    if (!BN_sub(r3, ap->prime, BN_value_one()) ||
-        !BN_mul(r0, r0, r3, ctx)) {
-      goto err;
-    }
-  }
-  if (!BN_mod_inverse(rsa->d, rsa->e, r0, ctx)) {
-    goto err; /* d */
-  }
-
-  /* calculate d mod (p-1) */
-  if (!BN_mod(rsa->dmp1, rsa->d, r1, ctx)) {
-    goto err;
-  }
-
-  /* calculate d mod (q-1) */
-  if (!BN_mod(rsa->dmq1, rsa->d, r2, ctx)) {
+  /* Sanity-check that |rsa->n| has the specified size. This is implied by
+   * |generate_prime|'s bounds. */
+  if (BN_num_bits(rsa->n) != (unsigned)bits) {
+    OPENSSL_PUT_ERROR(RSA, ERR_R_INTERNAL_ERROR);
     goto err;
   }
 
@@ -1015,49 +999,29 @@
   if (!BN_MONT_CTX_set_locked(&rsa->mont_p, &rsa->lock, rsa->p, ctx) ||
       !bn_mod_inverse_secret_prime(rsa->iqmp, rsa->q, rsa->p, ctx,
                                    rsa->mont_p)) {
-    goto err;
+    goto bn_err;
   }
 
-  for (i = 2; i < num_primes; i++) {
-    RSA_additional_prime *ap =
-        sk_RSA_additional_prime_value(additional_primes, i - 2);
-    if (!BN_sub(ap->exp, ap->prime, BN_value_one()) ||
-        !BN_mod(ap->exp, rsa->d, ap->exp, ctx) ||
-        !BN_MONT_CTX_set_locked(&ap->mont, &rsa->lock, ap->prime, ctx) ||
-        !bn_mod_inverse_secret_prime(ap->coeff, ap->r, ap->prime, ctx,
-                                     ap->mont)) {
-      goto err;
-    }
-  }
-
-  rsa->additional_primes = additional_primes;
-  additional_primes = NULL;
-
   /* The key generation process is complex and thus error-prone. It could be
    * disastrous to generate and then use a bad key so double-check that the key
    * makes sense. */
-  ok = RSA_check_key(rsa);
-  if (!ok) {
+  if (!RSA_check_key(rsa)) {
     OPENSSL_PUT_ERROR(RSA, RSA_R_INTERNAL_ERROR);
+    goto err;
   }
 
-err:
-  if (ok == -1) {
+  ret = 1;
+
+bn_err:
+  if (!ret) {
     OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
-    ok = 0;
   }
+err:
   if (ctx != NULL) {
     BN_CTX_end(ctx);
     BN_CTX_free(ctx);
   }
-  sk_RSA_additional_prime_pop_free(additional_primes,
-                                   RSA_additional_prime_free);
-  return ok;
-}
-
-int rsa_default_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb) {
-  return rsa_default_multi_prime_keygen(rsa, bits, 2 /* num primes */, e_value,
-                                        cb);
+  return ret;
 }
 
 /* All of the methods are NULL to make it easier for the compiler/linker to drop
@@ -1091,7 +1055,7 @@
   RSA_FLAG_CACHE_PUBLIC | RSA_FLAG_CACHE_PRIVATE,
 
   NULL /* keygen (defaults to rsa_default_keygen) */,
-  NULL /* multi_prime_keygen (defaults to rsa_default_multi_prime_keygen) */,
+  NULL /* multi_prime_keygen (ignored) */,
 
   NULL /* supports_digest */,
 };
diff --git a/src/crypto/rsa/rsa_test.cc b/src/crypto/rsa/rsa_test.cc
index 401efdf..217f455 100644
--- a/src/crypto/rsa/rsa_test.cc
+++ b/src/crypto/rsa/rsa_test.cc
@@ -67,8 +67,10 @@
 #include <openssl/err.h>
 #include <openssl/nid.h>
 
+#include "../bn/internal.h"
 #include "../internal.h"
 #include "../test/test_util.h"
+#include "internal.h"
 
 
 // kPlaintext is a sample plaintext.
@@ -96,6 +98,53 @@
     "\x9d\xa8\xe9\x0b\x1d\x34\x1f\x71\xd0\x9b\x76\xa8\xa9\x43\xe1\x1d\x10\xb2"
     "\x4d\x24\x9f\x2d\xea\xfe\xf8\x0c\x18\x26";
 
+// kFIPSKey is a DER-encoded RSAPrivateKey that is FIPS-compliant.
+static const uint8_t kFIPSKey[] =
+    "\x30\x82\x02\x5c\x02\x01\x00\x02\x81\x81\x00\xa1\x71\x90\x77\x86\x8a\xc7"
+    "\xb8\xfc\x2a\x45\x82\x6d\xee\xeb\x35\x3a\x18\x3f\xb6\xb0\x1e\xb1\xd3\x09"
+    "\x6b\x05\x4d\xec\x1c\x37\x6f\x09\x31\x32\xda\x21\x8a\x49\x0e\x16\x28\xed"
+    "\x9a\x30\xf3\x14\x53\xfd\x5b\xb0\xf6\x4a\x5d\x52\xe1\xda\xe1\x40\x6e\x65"
+    "\xbf\xca\x45\xd9\x62\x96\x4a\x1e\x11\xc4\x61\x83\x1f\x58\x8d\x5e\xd0\x12"
+    "\xaf\xa5\xec\x9b\x97\x2f\x6c\xb2\x82\x4a\x73\xd0\xd3\x9a\xc9\x69\x6b\x24"
+    "\x3c\x82\x6f\xee\x4d\x0c\x7e\xdf\xd7\xae\xea\x3a\xeb\x04\x27\x8d\x43\x81"
+    "\x59\xa7\x90\x56\xc1\x69\x42\xb3\xaf\x1c\x8d\x4e\xbf\x02\x03\x01\x00\x01"
+    "\x02\x81\x80\x60\x82\xcd\x44\x46\xcf\xeb\xf9\x6f\xf5\xad\x3b\xfd\x90\x18"
+    "\x57\xe7\x74\xdb\x91\xd0\xd3\x68\xa6\xaa\x38\xaa\x21\x1d\x06\xf9\x34\x8d"
+    "\xa0\x35\xb0\x24\xe0\xd0\x2f\x75\x9b\xdd\xfe\x91\x48\x9f\x5c\x5e\x57\x54"
+    "\x00\xc8\x0f\xe6\x1e\x52\x84\xd9\xc9\xa5\x55\xf4\x0a\xbe\x88\x46\x7a\xfb"
+    "\x18\x37\x8e\xe6\x6e\xa2\x5f\x80\x48\x34\x3f\x5c\xbe\x0e\x1e\xe8\x2f\x50"
+    "\xba\x14\x96\x3c\xea\xfb\xd2\x49\x33\xdc\x12\xb8\xa7\x8a\xb5\x27\xf9\x00"
+    "\x4b\xf5\xd2\x2a\xd0\x2c\x1d\x9b\xd5\x6c\x3e\x4b\xb9\x7e\x39\xf7\x3e\x39"
+    "\xc9\x47\x5e\xbe\x91\x02\x41\x00\xcd\x33\xcf\x37\x01\xd7\x59\xcc\xbe\xa0"
+    "\x1c\xb9\xf5\xe7\x44\x9f\x62\x91\xa7\xa7\x7b\x0c\x52\xcd\x7e\xe6\x31\x11"
+    "\x8b\xd8\x2c\x8a\x63\xe1\x07\xc9\xcb\xce\x01\x45\x63\xf5\x5d\x44\xfb\xeb"
+    "\x8d\x74\x16\x20\x7d\x3b\xb4\xa1\x61\xb0\xa8\x29\x51\xc9\xef\xb6\xa1\xd5"
+    "\x02\x41\x00\xc9\x68\xa6\xd3\x88\xd5\x49\x9d\x6b\x44\x96\xfd\xbf\x66\x27"
+    "\xb4\x1f\x90\x76\x86\x2f\xe2\xce\x20\x5d\xee\x9b\xeb\xc4\xb4\x62\x47\x79"
+    "\x99\xb1\x99\xbc\xa2\xa6\xb6\x96\x64\xd5\x77\x9b\x45\xd4\xf0\x99\xb5\x9e"
+    "\x61\x4d\xf5\x12\xdd\x84\x14\xaf\x1e\xdd\x83\x24\x43\x02\x40\x60\x29\x7f"
+    "\x59\xcf\xcb\x13\x92\x17\x63\x01\x13\x44\x61\x74\x8f\x1c\xaa\x15\x5f\x2f"
+    "\x12\xbf\x5a\xfd\xb4\xf2\x19\xbe\xe7\x37\x38\x43\x46\x19\x58\x3f\xe1\xf2"
+    "\x46\x8a\x69\x59\xa4\x12\x4a\x78\xa7\x86\x17\x03\x99\x0f\x34\xf1\x8a\xcf"
+    "\xc3\x4d\x48\xcc\xc5\x51\x61\x02\x41\x00\xc2\x12\xb3\x5d\xf5\xe5\xff\xcf"
+    "\x4e\x43\x83\x72\xf2\xf1\x4e\xa4\xc4\x1d\x81\xf7\xff\x40\x7e\xfa\xb5\x48"
+    "\x6c\xba\x1c\x8a\xec\x80\x8e\xed\xc8\x32\xa9\x8f\xd9\x30\xeb\x6e\x32\x3b"
+    "\xd4\x44\xcf\xd1\x1f\x6b\xe0\x37\x46\xd5\x35\xde\x79\x9d\x2c\xb9\x83\x1d"
+    "\x10\xdd\x02\x40\x0f\x14\x95\x96\xa0\xe2\x6c\xd4\x88\xa7\x0b\x82\x14\x10"
+    "\xad\x26\x0d\xe4\xa1\x5e\x01\x3d\x21\xd2\xfb\x0e\xf9\x58\xa5\xca\x1e\x21"
+    "\xb3\xf5\x9a\x6c\x3d\x5a\x72\xb1\x2d\xfe\xac\x09\x4f\xdd\xe5\x44\xd1\x4e"
+    "\xf8\x59\x85\x3a\x65\xe2\xcd\xbc\x27\x1d\x9b\x48\x9f\xb9";
+
+static const uint8_t kFIPSPublicKey[] =
+    "\x30\x81\x89\x02\x81\x81\x00\xa1\x71\x90\x77\x86\x8a\xc7\xb8\xfc\x2a\x45"
+    "\x82\x6d\xee\xeb\x35\x3a\x18\x3f\xb6\xb0\x1e\xb1\xd3\x09\x6b\x05\x4d\xec"
+    "\x1c\x37\x6f\x09\x31\x32\xda\x21\x8a\x49\x0e\x16\x28\xed\x9a\x30\xf3\x14"
+    "\x53\xfd\x5b\xb0\xf6\x4a\x5d\x52\xe1\xda\xe1\x40\x6e\x65\xbf\xca\x45\xd9"
+    "\x62\x96\x4a\x1e\x11\xc4\x61\x83\x1f\x58\x8d\x5e\xd0\x12\xaf\xa5\xec\x9b"
+    "\x97\x2f\x6c\xb2\x82\x4a\x73\xd0\xd3\x9a\xc9\x69\x6b\x24\x3c\x82\x6f\xee"
+    "\x4d\x0c\x7e\xdf\xd7\xae\xea\x3a\xeb\x04\x27\x8d\x43\x81\x59\xa7\x90\x56"
+    "\xc1\x69\x42\xb3\xaf\x1c\x8d\x4e\xbf\x02\x03\x01\x00\x01";
+
 // kOAEPCiphertext1 is a sample encryption of |kPlaintext| with |kKey1| using
 // RSA OAEP.
 static const uint8_t kOAEPCiphertext1[] =
@@ -272,204 +321,6 @@
     0x6a, 0xce, 0x9f, 0xc8,
 };
 
-static const uint8_t kThreePrimeKey[] =
-    "\x30\x82\x04\xd7\x02\x01\x01\x02\x82\x01\x00\x62\x91\xe9\xea\xb3\x5d\x6c"
-    "\x29\xae\x21\x83\xbb\xb5\x82\xb1\x9e\xea\xe0\x64\x5b\x1e\x2f\x5e\x2c\x0a"
-    "\x80\x3d\x29\xd4\xfa\x9a\xe7\x44\xe6\x21\xbd\x98\xc0\x3d\xe0\x53\x59\xae"
-    "\xd3\x3e\xfe\xc4\xc2\xc4\x5a\x5a\x89\x07\xf4\x4f\xdc\xb0\x6a\xd4\x3e\x99"
-    "\x7d\x7a\x97\x26\x4e\xe1\x93\xca\x6e\xed\x07\xfc\xb4\xfa\x95\x1e\x73\x7b"
-    "\x86\x08\x6a\xb9\xd4\x29\xb0\x7e\x59\xb7\x9d\x7b\xeb\x67\x6e\xf0\xbb\x5e"
-    "\xcf\xb9\xcd\x58\x93\xf0\xe7\x88\x17\x6c\x0d\x76\x1e\xb9\x27\x9a\x4d\x02"
-    "\x16\xb6\x49\x6d\xa7\x83\x23\x4d\x02\x48\x0c\x0c\x1f\x0e\x85\x21\xe3\x06"
-    "\x76\x0a\x73\xe6\xc1\x21\xfa\x30\x18\x78\x29\x5c\x31\xd0\x29\xae\x6f\x7d"
-    "\x87\xd8\x2f\x16\xfa\xbc\x67\x8a\x94\x71\x59\x9b\xec\x22\x40\x55\x9f\xc2"
-    "\x94\xb5\xbd\x78\x01\xc9\xef\x18\xc8\x6d\x0d\xdc\x53\x42\xb2\x5c\xab\x65"
-    "\x05\xbd\x35\x08\x85\x1b\xf8\xe9\x47\xbc\xfe\xc5\xae\x47\x29\x63\x44\x8e"
-    "\x4d\xb7\x47\xab\x0d\xd8\x76\x68\x4f\xc7\x07\x02\xe4\x86\xb0\xcf\xd8\x19"
-    "\xad\xf4\x85\x76\x8b\x3b\x4e\x40\x8d\x29\x7a\x8a\x07\x36\xf3\x78\xae\x17"
-    "\xa6\x8f\x53\x58\x65\x4c\x86\x9e\xd7\x8b\xec\x38\x4f\x99\xc7\x02\x01\x03"
-    "\x02\x82\x01\x00\x41\xb6\x9b\xf1\xcc\xe8\xf2\xc6\x74\x16\x57\xd2\x79\x01"
-    "\xcb\xbf\x47\x40\x42\xe7\x69\x74\xe9\x72\xb1\xaa\xd3\x71\x38\xa7\x11\xef"
-    "\x83\x44\x16\x7e\x65\xd5\x7e\x95\x8c\xe6\x74\x8c\xd4\xa9\xd8\x81\xd8\x3c"
-    "\x3c\x5b\x5a\xa2\xdf\xe8\x75\x9c\x8d\x7f\x10\xfe\x51\xba\x19\x89\xeb\xb7"
-    "\xdc\x49\xf3\x5a\xa8\x78\xa7\x0e\x14\x4c\xfd\x04\x05\x9c\x7b\xe2\xc5\xa3"
-    "\x04\xee\xd9\x4c\xfd\x7d\x47\xb0\x0d\x9b\x3d\x70\x91\x81\x2c\xab\x2b\x87"
-    "\xad\x11\x68\x24\xfc\x2b\xd4\xee\x5e\x28\xeb\x6d\xab\xde\x0f\x77\x15\x58"
-    "\x76\x39\xc9\x59\x3a\x7f\x19\x9d\xc6\x7e\x86\xe4\xd5\x38\x70\x9e\xae\xb9"
-    "\xfb\x33\x33\xd1\x0c\x2d\xab\x01\x20\xe1\x8b\x29\x99\xd3\xeb\x87\x05\x72"
-    "\xaa\x43\x58\x64\x8e\x9e\x31\xdb\x45\x9b\x2b\xac\x58\x80\x5d\x33\xa2\x43"
-    "\x05\x96\xcc\xca\x2d\x04\x5f\xd6\xb7\x3d\x8b\x8f\x2d\xa3\xa5\xf8\x73\xf5"
-    "\xd7\xc0\x19\xff\x10\xe6\xee\x3a\x26\x2f\xe1\x64\x3d\x11\xcd\x2d\xe4\x0a"
-    "\x84\x27\xe3\xcb\x16\x62\x19\xe7\xe3\x0d\x13\xe8\x09\x5a\x53\xd0\x20\x56"
-    "\x15\xf5\xb3\x67\xac\xa1\xb5\x94\x6b\xab\xdc\x71\xc7\xbf\x0a\xde\x76\xf5"
-    "\x03\xa0\x30\xd8\x27\x9d\x00\x2b\x02\x57\x00\xf1\x4f\xc2\x86\x13\x06\x17"
-    "\xf7\x69\x7e\x37\xdf\x67\xc5\x32\xa0\x74\x1c\x32\x69\x0f\x9f\x08\x88\x24"
-    "\xb1\x51\xbc\xbc\x92\xba\x73\x1f\x9c\x75\xc2\x14\x6d\x4f\xc4\x5a\xcf\xda"
-    "\x44\x35\x00\x6b\x42\x3b\x9f\x14\xf1\x05\xb3\x51\x22\xb6\xbe\x9c\xe0\xc1"
-    "\x5c\x48\x61\xdf\x4e\x4c\x72\xb8\x05\x35\x7c\xac\xf1\xbb\xa0\x3b\x2a\xea"
-    "\xf7\x86\xe9\xd2\xff\x1e\x1d\x02\x56\x00\xca\xb1\x39\xf6\xa2\xc6\x3b\x65"
-    "\x45\x2f\x39\x00\xcd\x6e\xd6\x55\xf7\x71\x37\x89\xc2\xe7\x7a\xc0\x1a\xa6"
-    "\x2f\xea\x17\x7c\xaa\x2a\x91\x8f\xd4\xc7\x50\x8b\xab\x8e\x99\x3b\x33\x91"
-    "\xbc\x02\x10\x58\x4b\x58\x40\x9b\xc4\x8f\x48\x2b\xa7\x44\xfd\x07\x04\xf0"
-    "\x98\x67\x56\xea\x25\x92\x8b\x2e\x4b\x4a\xa1\xd3\xc2\xa4\xb4\x9b\x59\x70"
-    "\x32\xa6\xd8\x8b\xd9\x02\x57\x00\xa0\xdf\xd7\x04\x0c\xae\xba\xa4\xf0\xfe"
-    "\xcf\xea\x45\x2e\x21\xc0\x4d\x68\x21\x9b\x5f\xbf\x5b\x05\x6d\xcb\x8b\xd3"
-    "\x28\x61\xd1\xa2\x15\x12\xf9\x2c\x0d\x9e\x35\x2d\x91\xdf\xe6\xd8\x23\x55"
-    "\x9c\xd6\xd2\x6a\x0d\xf6\x03\xcc\xe0\xc1\xcf\x29\xbd\xeb\x2b\x92\xda\xeb"
-    "\xea\x34\x32\xf7\x25\x58\xce\x53\x1d\xf6\x7d\x15\x7c\xc7\x47\x4f\xaf\x46"
-    "\x8c\xaa\x14\x13\x02\x56\x00\x87\x20\xd1\x4f\x17\x2e\xd2\x43\x83\x74\xd0"
-    "\xab\x33\x9f\x39\x8e\xa4\xf6\x25\x06\x81\xef\xa7\x2a\xbc\x6e\xca\x9c\x0f"
-    "\xa8\x71\x71\xb6\x5f\xe3\x2f\x8b\x07\xc7\xb4\x66\x27\x77\xb6\x7d\x56\xb5"
-    "\x90\x32\x3a\xd5\xbd\x2d\xb4\xda\xc7\xc4\xd8\xa8\xaf\x58\xa0\x65\x9a\x39"
-    "\xf1\x6e\x61\xb2\x1e\xdc\xdc\x6b\xe2\x81\xc3\x23\x12\x3b\xa0\x21\xc4\x90"
-    "\x5d\x3b\x02\x57\x00\xe6\x8a\xaa\xb8\x6d\x2c\x81\x43\xb5\xd6\xa0\x2b\x42"
-    "\x49\xa9\x0a\x51\xfa\x18\xc8\x32\xea\x54\x18\xf3\x60\xc2\xb5\x4a\x43\x05"
-    "\x93\x9c\x01\xd9\x28\xed\x73\xfa\x82\xbc\x12\x64\xcb\xc4\x24\xa9\x3e\xae"
-    "\x7c\x4b\x8f\x94\x57\x7b\x14\x10\x41\xdc\x62\x12\x8c\xb2\x4a\x7c\xf6\x53"
-    "\xd4\xc6\xe4\xda\xd1\xa2\x00\x0e\x3d\x30\xf7\x05\x4f\x1d\x82\xbc\x52\xd9"
-    "\xb1\x30\x82\x01\x0a\x30\x82\x01\x06\x02\x56\x00\x84\x12\x4f\xf7\x3b\x65"
-    "\x53\x34\x6c\x6c\x4d\x77\xdf\xfd\x1f\xb6\x16\xe2\x25\x15\xca\xc9\xc1\x41"
-    "\x9a\x50\xda\xeb\x88\x4f\x3d\xb3\x01\x00\x44\xc4\xac\xe7\x14\x62\xa6\x56"
-    "\xde\xc5\xb7\xc3\x1d\x07\xbd\x7d\x64\xc5\x7e\x45\x25\x56\xed\x7a\xd2\x14"
-    "\xdb\x4e\x27\xd4\x1f\xf8\x94\xa7\xef\x07\xce\xdb\x24\xb7\xdd\x71\x5c\x63"
-    "\xc9\x33\xfe\xde\x40\x52\xeb\x02\x55\x58\x0c\x35\x4f\x7c\xee\x37\x78\x48"
-    "\x48\x33\xa5\x3f\xfe\x15\x24\x0f\x41\x6e\x0e\x87\x31\x2b\x81\x11\x8b\x3c"
-    "\x9d\x05\x8a\x29\x22\x00\xaa\xd8\x83\x1d\xef\x62\xec\x6e\xe4\x94\x83\xcf"
-    "\xd7\x68\xaf\xd3\xa8\xed\xd8\xfe\xd8\xc3\x8f\x48\xfc\x8c\x0d\xe7\x89\x6f"
-    "\xe2\xbf\xfb\x0d\xc5\x4a\x05\x34\x92\x18\x7a\x93\xa0\xe8\x42\x86\x22\xa9"
-    "\xe9\x80\x37\x47\x02\x55\x60\x76\xab\xde\x2b\xf5\xa2\x2c\xaa\x0c\x99\x81"
-    "\xee\x72\x2c\x7d\x22\x59\x2a\x35\xea\x50\x4e\x47\x6b\x92\x2d\x30\xa1\x01"
-    "\xa5\x9e\x26\x6e\x27\xca\xf5\xf2\x87\x5d\x31\xaf\xe9\x32\xcd\x10\xfd\x4d"
-    "\xdb\xf9\x86\x05\x12\x1b\x01\x84\x55\x97\x5f\xe2\x78\x27\xd9\xe4\x26\x7d"
-    "\xab\x0e\xe0\x1b\x6f\xcb\x4b\x14\xdd\xdc\xdc\x8b\xe8\x9f\xd0\x62\x96\xca"
-    "\xcf";
-
-static const uint8_t kThreePrimeEncryptedMessage[] = {
-    0x58, 0xd9, 0xea, 0x8a, 0xf6, 0x3d, 0xb4, 0xd9, 0xf7, 0xbb, 0x02, 0xc5,
-    0x58, 0xd2, 0xa9, 0x46, 0x80, 0x70, 0x70, 0x16, 0x07, 0x64, 0x32, 0x4c,
-    0x4e, 0x92, 0x61, 0xb7, 0xff, 0x92, 0xdc, 0xfc, 0xf8, 0xf0, 0x2c, 0x84,
-    0x56, 0xbc, 0xe5, 0x93, 0x76, 0xe5, 0xa3, 0x72, 0x98, 0xf2, 0xdf, 0xef,
-    0x99, 0x53, 0xf6, 0xd8, 0x4b, 0x09, 0xac, 0xa9, 0xa3, 0xdb, 0x63, 0xa1,
-    0xb5, 0x09, 0x8e, 0x40, 0x84, 0x8f, 0x4d, 0xd5, 0x1d, 0xac, 0x6c, 0xaa,
-    0x6b, 0x15, 0xe7, 0xb1, 0x0c, 0x67, 0xd2, 0xb2, 0x81, 0x58, 0x30, 0x0e,
-    0x18, 0x27, 0xa1, 0x9b, 0x96, 0xad, 0xae, 0x76, 0x1a, 0x32, 0xf7, 0x10,
-    0x0b, 0x53, 0x85, 0x31, 0xd6, 0x2a, 0xf6, 0x1c, 0x9f, 0xc2, 0xc7, 0xb1,
-    0x05, 0x63, 0x0b, 0xa5, 0x07, 0x1f, 0x1c, 0x01, 0xf0, 0xe0, 0x06, 0xea,
-    0x20, 0x69, 0x41, 0x19, 0x57, 0x92, 0x17, 0xf7, 0x0c, 0x5c, 0x66, 0x75,
-    0x0e, 0xe5, 0xb3, 0xf1, 0x67, 0x3b, 0x27, 0x47, 0xb2, 0x8e, 0x1c, 0xb6,
-    0x3f, 0xdd, 0x76, 0x42, 0x31, 0x13, 0x68, 0x96, 0xdf, 0x3b, 0xd4, 0x87,
-    0xd9, 0x16, 0x44, 0x71, 0x52, 0x2e, 0x54, 0x3e, 0x09, 0xcd, 0x71, 0xc1,
-    0x1e, 0x5e, 0x96, 0x13, 0xc9, 0x1e, 0xa4, 0xe6, 0xe6, 0x97, 0x2c, 0x6b,
-    0xf2, 0xa9, 0x5c, 0xc6, 0x60, 0x2a, 0xbc, 0x82, 0xf8, 0xcb, 0xd4, 0xd7,
-    0xea, 0x8a, 0xa1, 0x8a, 0xd9, 0xa5, 0x14, 0x8b, 0x9e, 0xf9, 0x25, 0x02,
-    0xd2, 0xab, 0x0c, 0x42, 0xca, 0x2d, 0x45, 0xa3, 0x56, 0x5e, 0xa2, 0x2a,
-    0xc8, 0x60, 0xa5, 0x87, 0x5d, 0x85, 0x5c, 0xde, 0xc7, 0xa2, 0x47, 0xc3,
-    0x99, 0x29, 0x23, 0x79, 0x36, 0x88, 0xad, 0x40, 0x3e, 0x27, 0x7d, 0xf0,
-    0xb6, 0xfa, 0x95, 0x20, 0x3c, 0xec, 0xfc, 0x56, 0x3b, 0x20, 0x91, 0xee,
-    0x98, 0x10, 0x2c, 0x82,
-};
-
-static const uint8_t kSixPrimeKey[] =
-    "\x30\x82\x05\x20\x02\x01\x01\x02\x82\x01\x00\x1c\x04\x39\x44\xb9\xb8\x71"
-    "\x1c\x1c\xf7\xdc\x11\x1b\x85\x3b\x2b\xe8\xa6\xeb\xeb\xe9\xb6\x86\x97\x73"
-    "\x5d\x75\x46\xd1\x35\x25\xf8\x30\x9a\xc3\x57\x44\x89\xa6\x44\x59\xe3\x3a"
-    "\x60\xb5\x33\x84\x72\xa4\x03\xc5\x1a\x20\x98\x70\xbd\xe8\x3b\xc1\x9b\x8a"
-    "\x3a\x24\x45\xb6\x6a\x73\xb4\xd0\x6c\x18\xc6\xa7\x94\xd3\x24\x70\xf0\x2d"
-    "\x0c\xa5\xb2\x3b\xc5\x33\x90\x9d\x56\x8d\x33\xf6\x93\x7d\xa7\x95\x88\x05"
-    "\xdf\xf5\x65\x58\xb9\x5b\xd3\x07\x9c\x16\x8e\x74\xfc\xb8\x76\xaf\x62\x99"
-    "\x6c\xd4\xc5\xb3\x69\xe5\x64\xdf\x38\x00\x25\x24\xe9\xb1\x4a\x85\xa6\xf4"
-    "\xb6\x23\x68\x67\x4a\x2c\xbd\x9d\x01\x3b\x04\x8c\x70\x94\x82\x76\x45\x0c"
-    "\x8b\x95\x8a\x07\x1c\x32\xe7\x09\x97\x3a\xfd\xca\x57\xe9\x57\x0c\xae\x2b"
-    "\xa3\x25\xd1\xf2\x0d\x34\xa1\xe6\x2f\x7b\x1b\x36\x53\x83\x95\xb9\x26\x6e"
-    "\x4f\x36\x26\xf8\x47\xae\xdf\xe8\x4d\xf6\xb2\xff\x03\x23\x74\xfa\xa5\x6d"
-    "\xcb\xcb\x80\x12\xc3\x77\xf0\x19\xb7\xf2\x6b\x19\x5c\xde\x0a\xd7\xee\x8c"
-    "\x48\x2f\x50\x24\xa5\x2e\xcc\x2a\xed\xc2\x35\xe0\x3d\x29\x31\x17\xd6\x8f"
-    "\x44\xaa\x5b\x33\xbd\xb4\x88\x87\xd9\x29\x3f\x94\xe7\x75\xe3\x02\x01\x03"
-    "\x02\x82\x01\x00\x12\xad\x7b\x83\x26\x7a\xf6\x12\xbd\xfa\x92\xb6\x12\x58"
-    "\xd2\x1d\x45\xc4\x9d\x47\xf1\x24\x59\xba\x4c\xe8\xf8\xd9\xe0\xce\x19\x50"
-    "\x20\x67\x2c\xe4\xd8\x5b\xc4\x2d\x91\x41\xeb\x05\x4f\xf4\xb4\x20\xc7\xbc"
-    "\xd6\xe2\x5c\xa0\x27\xcf\xb8\xb3\x3b\x5c\xeb\x5e\x96\xb7\x99\x4b\x8a\xc3"
-    "\x70\xaf\x7f\xd8\x5f\xeb\xcb\x1a\x79\x44\x68\x97\x84\xd8\x29\x87\x64\xba"
-    "\x18\x2e\x95\x66\x1a\x7d\xd9\x35\x3a\x5c\x92\x7a\x81\x1b\x6c\xa9\xf8\xfa"
-    "\x05\x23\x18\x5b\xb2\xf8\x77\x1c\xc5\x1b\x7d\x26\x5f\x48\x69\x1b\xc4\x34"
-    "\xef\x6e\xa1\x15\xd2\xb2\xac\xb8\xa8\xed\x1e\xee\xdc\xb5\xb9\x5c\x79\x25"
-    "\x48\xbb\xe5\x9d\xd8\xe5\xe2\x94\xdf\xd5\x32\x22\x84\xbf\xc2\xaa\xa4\x54"
-    "\xbb\x29\xdb\x13\x4a\x28\x3d\x83\x3a\xff\xa3\xae\x38\x08\xfc\x36\x84\x91"
-    "\x30\xd1\xfd\x82\x64\xf1\x0f\xae\xba\xd7\x9a\x43\x58\x03\x5e\x5f\x01\xcb"
-    "\x8b\x90\x8d\x77\x34\x6f\x37\x40\xb6\x6d\x22\x23\x90\xb2\xfd\x32\xb5\x96"
-    "\x45\xbf\xae\x8c\xc4\x62\x03\x6c\x68\x90\x59\x31\x1a\xcb\xfb\xa4\x0b\x94"
-    "\x15\x13\xda\x1a\x8d\xa7\x0b\x34\x62\x93\xea\xbe\x6e\x71\xc2\x1d\xc8\x9d"
-    "\xac\x66\xcc\x31\x87\xff\x99\xab\x02\x2c\x00\xa5\x57\x41\x66\x87\x68\x02"
-    "\x6a\xdf\x97\xb0\xfe\x6b\x34\xc4\x33\x88\x2b\xce\x82\xaf\x2d\x33\x5a\xad"
-    "\x75\x2d\xac\xa5\xd6\x3a\x2d\x65\x43\x68\xfb\x44\x9e\xb8\x25\x05\xed\x97"
-    "\x02\x2c\x00\xd2\x77\x34\x24\xac\x60\x9a\xc4\x68\x34\xe5\x6a\xa3\xdc\xe2"
-    "\xb0\x58\x5c\x35\x83\x5a\xc7\xa7\xc1\x0b\x7e\x9e\xa5\x85\x32\x47\x93\x22"
-    "\xee\xb6\x59\xe9\xe3\x61\x94\xd0\x0e\xcb\x02\x2b\x6e\x3a\x2b\x99\xaf\x9a"
-    "\xac\x47\x3f\xba\x75\xfe\xf2\x23\x2d\x77\xb0\x1d\x34\x57\x1f\x73\x77\x91"
-    "\xc8\xf8\xc9\x1d\xc3\xe4\x26\xc8\xee\x2c\xf0\xa7\x83\x14\x7a\xc3\x59\x49"
-    "\x0f\x02\x2c\x00\x8c\x4f\x78\x18\x72\xeb\x11\xd8\x45\x78\x98\xf1\xc2\x93"
-    "\x41\xca\xe5\x92\xce\x57\x91\xda\x6f\xd6\x07\xa9\xbf\x19\x03\x76\xda\x62"
-    "\x17\x49\xce\xe6\x9b\xec\xeb\xb8\x8a\xb4\x87\x02\x2c\x00\xa3\xc2\x29\xa6"
-    "\xa7\xe1\x3c\xe9\xcf\x0f\x50\x51\x1c\xcc\xc8\x5b\x08\x9c\x97\x24\x3a\x86"
-    "\x23\xa8\x0b\xbb\x54\xa6\xb9\x70\x3d\x1d\xd0\x1b\xa3\xac\xd9\xb2\x03\x80"
-    "\xd7\x67\xec\x30\x82\x02\x29\x30\x81\x88\x02\x2c\x00\x97\x5d\x3b\xf2\xcc"
-    "\xba\xd9\x77\x67\xaa\xd2\x22\xa7\xa3\x49\x08\xc7\xb8\x27\xa1\x59\x4b\xa7"
-    "\xa5\xd2\x74\x05\xe7\x5a\x35\xd7\x25\x79\x18\x20\x8a\x25\xec\x3b\x52\xaf"
-    "\xcb\xdb\x02\x2b\x64\xe8\xd2\xa1\xdd\xd1\xe6\x4f\x9a\x71\xe1\x6c\x6f\xc2"
-    "\x30\xb0\x85\x25\x6f\xc0\xe6\x32\x6f\xc3\xe1\xa2\xae\x9a\x3c\x23\xe4\xc3"
-    "\xa6\x10\x15\xb1\x6e\x9d\x7c\xe1\xca\x87\xe7\x02\x2b\x5e\xef\x25\x29\xed"
-    "\xf6\x52\x15\xd3\x60\xb6\x88\xcf\x0f\xe2\x24\xa4\x04\x97\x9c\x9d\x58\x13"
-    "\xbb\x00\x6d\x39\xf6\xad\x21\x7e\x56\x2c\x2e\x06\x06\xc4\x6d\x44\xac\x79"
-    "\x1f\xe5\x30\x81\x89\x02\x2c\x00\xdb\xf1\x78\xf9\xa4\x94\xea\x39\x8a\x3f"
-    "\x23\x48\x2a\x23\x8f\xd2\x18\x97\xd2\xdf\x0f\xb8\x2b\x33\xa0\xe8\x8f\xbc"
-    "\x4e\x42\xfd\x54\xc7\x0f\xde\xba\x6d\xba\x96\xa7\xce\x67\x3d\x02\x2c\x00"
-    "\x92\xa0\xfb\x51\x18\x63\x46\xd1\x06\xd4\xc2\x30\x1c\x17\xb5\x36\xbb\x0f"
-    "\xe1\xea\x0a\x7a\xc7\x77\xc0\x9b\x0a\x7d\x89\x81\xfe\x38\x84\xb5\x3f\x26"
-    "\xf3\xd1\xb9\xc5\x34\x44\xd3\x02\x2b\x4c\xbd\x1d\x44\xc8\x19\x23\xd8\xb3"
-    "\x96\x66\x4b\x62\xcb\x3e\xe6\x6c\x11\xdf\xb2\x92\xd3\xc8\x34\xb9\xa6\x5a"
-    "\x2f\x19\xf4\x0b\xb2\xe6\x8e\xa6\xaf\xa3\xae\xa4\xb3\x92\xc4\x79\x30\x81"
-    "\x85\x02\x2b\x00\x89\xab\x30\xfc\x7b\x37\x94\x11\x9f\x4d\x31\x3b\xac\x09"
-    "\x57\xe6\x64\xec\xa0\xc8\xf8\x04\x1a\xf9\x2a\xa4\x4b\x36\x18\xbb\x5f\xdc"
-    "\xcd\xf0\xc8\xcb\x97\xd1\xdf\x13\x12\x3f\x02\x2a\x5b\xc7\x75\xfd\xa7\x7a"
-    "\x62\xb6\x6a\x33\x76\x27\xc8\x06\x3a\x99\x98\x9d\xc0\x85\xfa\xad\x67\x50"
-    "\xc7\x18\x32\x24\x10\x7c\xea\x93\x33\xf5\xdb\x32\x65\x36\x94\xb7\x61\x7f"
-    "\x02\x2a\x16\x6c\x96\xa1\x50\x6f\x3a\x92\xc0\x75\x43\xb5\x6b\x9c\x17\x09"
-    "\xd3\xf0\x67\x69\x45\x92\xfb\x7b\x50\xa8\x42\x9b\x33\x92\xab\xd5\xe6\x49"
-    "\xb3\x26\x99\x55\x16\x3a\x39\x63\x30\x81\x87\x02\x2b\x00\xc1\x25\x19\x1d"
-    "\x6e\x18\xcb\x2d\x64\xe2\xe6\xb6\x1c\xe4\xaa\x9c\xb9\xee\x18\xd4\xf7\x5f"
-    "\x66\x40\xf0\xe1\x31\x38\xf2\x53\x00\x8b\xcc\xe4\x0d\xb7\x81\xb4\xe6\x1c"
-    "\x19\xaf\x02\x2b\x00\x80\xc3\x66\x13\x9e\xbb\x32\x1e\x43\x41\xef\x24\x13"
-    "\x43\x1c\x68\x7b\xf4\x10\x8d\xfa\x3f\x99\x80\xa0\x96\x20\xd0\xa1\x8c\xab"
-    "\x07\xdd\xed\x5e\x7a\x56\x78\x99\x68\x11\x1f\x02\x2b\x00\xb0\x59\xea\x67"
-    "\x93\x42\xbf\x07\x54\x38\x41\xcb\x73\xa4\x0e\xc2\xae\x56\x19\x41\xc9\x8a"
-    "\xb2\x2f\xa8\x0a\xb1\x4e\x12\x39\x2e\xc0\x94\x9a\xc6\xa3\xe4\xaf\x8a\x16"
-    "\x06\xb8";
-
-static const uint8_t kSixPrimeEncryptedMessage[] = {
-    0x0a, 0xcb, 0x6c, 0x02, 0x9d, 0x1a, 0x7c, 0xf3, 0x4e, 0xff, 0x16, 0x88,
-    0xee, 0x22, 0x1d, 0x8d, 0xd2, 0xfd, 0xde, 0x83, 0xb3, 0xd9, 0x35, 0x2c,
-    0x82, 0xe0, 0xff, 0xe6, 0x79, 0x6d, 0x06, 0x21, 0x74, 0xa8, 0x04, 0x0c,
-    0xe2, 0xd3, 0x98, 0x3f, 0xbf, 0xd0, 0xe9, 0x88, 0x24, 0xe2, 0x05, 0xa4,
-    0x45, 0x51, 0x87, 0x6b, 0x1c, 0xef, 0x5f, 0x2d, 0x61, 0xb6, 0xf1, 0x4c,
-    0x1f, 0x3d, 0xbf, 0x4b, 0xf2, 0xda, 0x09, 0x97, 0x81, 0xde, 0x91, 0xb7,
-    0x0d, 0xb4, 0xc2, 0xab, 0x41, 0x64, 0x9d, 0xd9, 0x39, 0x46, 0x79, 0x66,
-    0x43, 0xf1, 0x34, 0x21, 0x56, 0x2f, 0xc6, 0x68, 0x40, 0x4a, 0x2d, 0x73,
-    0x96, 0x50, 0xe1, 0xb0, 0xaf, 0x49, 0x39, 0xb4, 0xf0, 0x3a, 0x78, 0x38,
-    0x70, 0xa9, 0x91, 0x5d, 0x5e, 0x07, 0xf4, 0xec, 0xbb, 0xc4, 0xe5, 0x8a,
-    0xb8, 0x06, 0xba, 0xdf, 0xc6, 0x48, 0x78, 0x4b, 0xca, 0x2a, 0x8a, 0x92,
-    0x64, 0xe3, 0xa6, 0xae, 0x87, 0x97, 0x12, 0x16, 0x46, 0x67, 0x59, 0xdf,
-    0xf2, 0xf3, 0x89, 0x6f, 0xe8, 0xa9, 0x13, 0x57, 0x63, 0x4e, 0x07, 0x98,
-    0xcc, 0x73, 0xa0, 0x84, 0x9d, 0xe8, 0xb3, 0x50, 0x59, 0xb5, 0x51, 0xb3,
-    0x41, 0x7d, 0x55, 0xfe, 0xd9, 0xf0, 0xc6, 0xff, 0x6e, 0x96, 0x4f, 0x22,
-    0xb2, 0x0d, 0x6b, 0xc9, 0x83, 0x2d, 0x98, 0x98, 0xb2, 0xd1, 0xb7, 0xe4,
-    0x50, 0x83, 0x1a, 0xa9, 0x02, 0x9f, 0xaf, 0x54, 0x74, 0x2a, 0x2c, 0x63,
-    0x10, 0x79, 0x45, 0x5c, 0x95, 0x0d, 0xa1, 0x9b, 0x55, 0xf3, 0x1e, 0xb7,
-    0x56, 0x59, 0xf1, 0x59, 0x8d, 0xd6, 0x15, 0x89, 0xf6, 0xfe, 0xc0, 0x00,
-    0xdd, 0x1f, 0x2b, 0xf0, 0xf7, 0x5d, 0x64, 0x84, 0x76, 0xd3, 0xc2, 0x92,
-    0x35, 0xac, 0xb5, 0xf9, 0xf6, 0xa8, 0x05, 0x89, 0x4c, 0x95, 0x41, 0x4e,
-    0x34, 0x25, 0x11, 0x14,
-};
-
 // kEstonianRSAKey is an RSAPublicKey encoded with a negative modulus. See
 // https://crbug.com/532048.
 static const uint8_t kEstonianRSAKey[] = {
@@ -607,65 +458,32 @@
 
 INSTANTIATE_TEST_CASE_P(, RSAEncryptTest, testing::ValuesIn(kRSAEncryptParams));
 
-struct RSAMultiPrimeParam {
-  const uint8_t *der;
-  size_t der_size;
-  const uint8_t *enc;
-  size_t enc_size;
-} kRSAMultiPrimeParams[] = {
-    {kTwoPrimeKey, sizeof(kTwoPrimeKey) - 1, kTwoPrimeEncryptedMessage,
-     sizeof(kTwoPrimeEncryptedMessage)},
-    {kThreePrimeKey, sizeof(kThreePrimeKey) - 1, kThreePrimeEncryptedMessage,
-     sizeof(kThreePrimeEncryptedMessage)},
-    {kSixPrimeKey, sizeof(kSixPrimeKey) - 1, kSixPrimeEncryptedMessage,
-     sizeof(kSixPrimeEncryptedMessage)},
-};
-
-class RSAMultiPrimeTest : public testing::TestWithParam<RSAMultiPrimeParam> {};
-
-TEST_P(RSAMultiPrimeTest, TestDecrypt) {
-  const auto &param = GetParam();
+TEST(RSATest, TestDecrypt) {
   bssl::UniquePtr<RSA> rsa(
-      RSA_private_key_from_bytes(param.der, param.der_size));
+      RSA_private_key_from_bytes(kTwoPrimeKey, sizeof(kTwoPrimeKey) - 1));
   ASSERT_TRUE(rsa);
 
   EXPECT_TRUE(RSA_check_key(rsa.get()));
 
   uint8_t out[256];
   size_t out_len;
-  ASSERT_TRUE(RSA_decrypt(rsa.get(), &out_len, out, sizeof(out), param.enc,
-                          param.enc_size, RSA_PKCS1_PADDING));
+  ASSERT_TRUE(RSA_decrypt(
+      rsa.get(), &out_len, out, sizeof(out), kTwoPrimeEncryptedMessage,
+      sizeof(kTwoPrimeEncryptedMessage), RSA_PKCS1_PADDING));
   EXPECT_EQ(Bytes("hello world"), Bytes(out, out_len));
 }
 
-INSTANTIATE_TEST_CASE_P(, RSAMultiPrimeTest,
-                        testing::ValuesIn(kRSAMultiPrimeParams));
-
-TEST(RSATest, MultiPrimeKeygen) {
-  bssl::UniquePtr<RSA> rsa(RSA_new());
-  bssl::UniquePtr<BIGNUM> e(BN_new());
+TEST(RSATest, CheckFIPS) {
+  bssl::UniquePtr<RSA> rsa(
+      RSA_private_key_from_bytes(kFIPSKey, sizeof(kFIPSKey) - 1));
   ASSERT_TRUE(rsa);
-  ASSERT_TRUE(e);
-  ASSERT_TRUE(BN_set_word(e.get(), RSA_F4));
+  EXPECT_TRUE(RSA_check_fips(rsa.get()));
 
-  // Test key generation.
-  static const size_t kBits = 1024;
-  ASSERT_TRUE(
-      RSA_generate_multi_prime_key(rsa.get(), kBits, 3, e.get(), nullptr));
-  ASSERT_TRUE(RSA_check_key(rsa.get()));
-
-  // Test the key round-trips.
-  static const char kMessage[] = "Hello world.";
-  uint8_t encrypted[kBits / 8], decrypted[kBits / 8];
-  size_t encrypted_len, decrypted_len;
-  ASSERT_TRUE(RSA_encrypt(rsa.get(), &encrypted_len, encrypted,
-                          sizeof(encrypted), (const uint8_t *)kMessage,
-                          sizeof(kMessage), RSA_PKCS1_PADDING));
-  ASSERT_TRUE(RSA_decrypt(rsa.get(), &decrypted_len, decrypted,
-                          sizeof(decrypted), encrypted, encrypted_len,
-                          RSA_PKCS1_PADDING));
-  EXPECT_EQ(Bytes((const uint8_t *)kMessage, sizeof(kMessage)),
-            Bytes(decrypted, decrypted_len));
+  // Check that RSA_check_fips works on a public key.
+  bssl::UniquePtr<RSA> pub(
+      RSA_public_key_from_bytes(kFIPSPublicKey, sizeof(kFIPSPublicKey) - 1));
+  ASSERT_TRUE(pub);
+  EXPECT_TRUE(RSA_check_fips(pub.get()));
 }
 
 TEST(RSATest, BadKey) {
@@ -681,6 +499,7 @@
 
   // Bad keys are detected.
   EXPECT_FALSE(RSA_check_key(key.get()));
+  EXPECT_FALSE(RSA_check_fips(key.get()));
 
   // Bad keys may not be parsed.
   uint8_t *der;
@@ -831,3 +650,176 @@
   EXPECT_FALSE(rsa);
   ERR_clear_error();
 }
+
+// Attempting to generate an excessively small key should fail.
+TEST(RSATest, GenerateSmallKey) {
+  bssl::UniquePtr<RSA> rsa(RSA_new());
+  ASSERT_TRUE(rsa);
+  bssl::UniquePtr<BIGNUM> e(BN_new());
+  ASSERT_TRUE(e);
+  ASSERT_TRUE(BN_set_word(e.get(), RSA_F4));
+
+  EXPECT_FALSE(RSA_generate_key_ex(rsa.get(), 255, e.get(), nullptr));
+  uint32_t err = ERR_get_error();
+  EXPECT_EQ(ERR_LIB_RSA, ERR_GET_LIB(err));
+  EXPECT_EQ(RSA_R_KEY_SIZE_TOO_SMALL, ERR_GET_REASON(err));
+}
+
+// Attempting to generate an funny RSA key length should round down.
+TEST(RSATest, RoundKeyLengths) {
+  bssl::UniquePtr<BIGNUM> e(BN_new());
+  ASSERT_TRUE(e);
+  ASSERT_TRUE(BN_set_word(e.get(), RSA_F4));
+
+  bssl::UniquePtr<RSA> rsa(RSA_new());
+  ASSERT_TRUE(rsa);
+  EXPECT_TRUE(RSA_generate_key_ex(rsa.get(), 1025, e.get(), nullptr));
+  EXPECT_EQ(1024u, BN_num_bits(rsa->n));
+
+  rsa.reset(RSA_new());
+  ASSERT_TRUE(rsa);
+  EXPECT_TRUE(RSA_generate_key_ex(rsa.get(), 1027, e.get(), nullptr));
+  EXPECT_EQ(1024u, BN_num_bits(rsa->n));
+
+  rsa.reset(RSA_new());
+  ASSERT_TRUE(rsa);
+  EXPECT_TRUE(RSA_generate_key_ex(rsa.get(), 1151, e.get(), nullptr));
+  EXPECT_EQ(1024u, BN_num_bits(rsa->n));
+
+  rsa.reset(RSA_new());
+  ASSERT_TRUE(rsa);
+  EXPECT_TRUE(RSA_generate_key_ex(rsa.get(), 1152, e.get(), nullptr));
+  EXPECT_EQ(1152u, BN_num_bits(rsa->n));
+}
+
+#if !defined(BORINGSSL_SHARED_LIBRARY)
+TEST(RSATest, SqrtTwo) {
+  bssl::UniquePtr<BIGNUM> sqrt(BN_new()), pow2(BN_new());
+  bssl::UniquePtr<BN_CTX> ctx(BN_CTX_new());
+  ASSERT_TRUE(sqrt);
+  ASSERT_TRUE(pow2);
+  ASSERT_TRUE(ctx);
+
+  size_t bits = kBoringSSLRSASqrtTwoLen * BN_BITS2;
+  ASSERT_TRUE(BN_one(pow2.get()));
+  ASSERT_TRUE(BN_lshift(pow2.get(), pow2.get(), 2 * bits - 1));
+
+  // Check that sqrt² < pow2.
+  ASSERT_TRUE(
+      bn_set_words(sqrt.get(), kBoringSSLRSASqrtTwo, kBoringSSLRSASqrtTwoLen));
+  ASSERT_TRUE(BN_sqr(sqrt.get(), sqrt.get(), ctx.get()));
+  EXPECT_LT(BN_cmp(sqrt.get(), pow2.get()), 0);
+
+  // Check that pow2 < (sqrt + 1)².
+  ASSERT_TRUE(
+      bn_set_words(sqrt.get(), kBoringSSLRSASqrtTwo, kBoringSSLRSASqrtTwoLen));
+  ASSERT_TRUE(BN_add_word(sqrt.get(), 1));
+  ASSERT_TRUE(BN_sqr(sqrt.get(), sqrt.get(), ctx.get()));
+  EXPECT_LT(BN_cmp(pow2.get(), sqrt.get()), 0);
+
+  // Check the kBoringSSLRSASqrtTwo is sized for a 3072-bit RSA key.
+  EXPECT_EQ(3072u / 2u, bits);
+}
+
+TEST(RSATest, LessThanWords) {
+  // kTestVectors is an array of 256-bit values in sorted order.
+  static const BN_ULONG kTestVectors[][256 / BN_BITS2] = {
+      {TOBN(0x00000000, 0x00000000), TOBN(0x00000000, 0x00000000),
+       TOBN(0x00000000, 0x00000000), TOBN(0x00000000, 0x00000000)},
+      {TOBN(0x00000000, 0x00000001), TOBN(0x00000000, 0x00000000),
+       TOBN(0x00000000, 0x00000000), TOBN(0x00000000, 0x00000000)},
+      {TOBN(0xffffffff, 0xffffffff), TOBN(0x00000000, 0x00000000),
+       TOBN(0x00000000, 0x00000000), TOBN(0x00000000, 0x00000000)},
+      {TOBN(0xffffffff, 0xffffffff), TOBN(0xffffffff, 0xffffffff),
+       TOBN(0x00000000, 0x00000000), TOBN(0x00000000, 0x00000000)},
+      {TOBN(0xffffffff, 0xffffffff), TOBN(0xffffffff, 0xffffffff),
+       TOBN(0xffffffff, 0xffffffff), TOBN(0x00000000, 0x00000000)},
+      {TOBN(0x00000000, 0x00000000), TOBN(0x1d6f60ba, 0x893ba84c),
+       TOBN(0x597d89b3, 0x754abe9f), TOBN(0xb504f333, 0xf9de6484)},
+      {TOBN(0x00000000, 0x83339915), TOBN(0x1d6f60ba, 0x893ba84c),
+       TOBN(0x597d89b3, 0x754abe9f), TOBN(0xb504f333, 0xf9de6484)},
+      {TOBN(0xed17ac85, 0x00000000), TOBN(0x1d6f60ba, 0x893ba84c),
+       TOBN(0x597d89b3, 0x754abe9f), TOBN(0xb504f333, 0xf9de6484)},
+      {TOBN(0xed17ac85, 0x83339915), TOBN(0x1d6f60ba, 0x893ba84c),
+       TOBN(0x597d89b3, 0x754abe9f), TOBN(0xb504f333, 0xf9de6484)},
+      {TOBN(0xed17ac85, 0xffffffff), TOBN(0x1d6f60ba, 0x893ba84c),
+       TOBN(0x597d89b3, 0x754abe9f), TOBN(0xb504f333, 0xf9de6484)},
+      {TOBN(0xffffffff, 0x83339915), TOBN(0x1d6f60ba, 0x893ba84c),
+       TOBN(0x597d89b3, 0x754abe9f), TOBN(0xb504f333, 0xf9de6484)},
+      {TOBN(0xffffffff, 0xffffffff), TOBN(0x1d6f60ba, 0x893ba84c),
+       TOBN(0x597d89b3, 0x754abe9f), TOBN(0xb504f333, 0xf9de6484)},
+      {TOBN(0x00000000, 0x00000000), TOBN(0x00000000, 0x00000000),
+       TOBN(0x00000000, 0x00000000), TOBN(0xffffffff, 0xffffffff)},
+      {TOBN(0x00000000, 0x00000000), TOBN(0x00000000, 0x00000000),
+       TOBN(0xffffffff, 0xffffffff), TOBN(0xffffffff, 0xffffffff)},
+      {TOBN(0x00000000, 0x00000001), TOBN(0x00000000, 0x00000000),
+       TOBN(0xffffffff, 0xffffffff), TOBN(0xffffffff, 0xffffffff)},
+      {TOBN(0x00000000, 0x00000000), TOBN(0xffffffff, 0xffffffff),
+       TOBN(0xffffffff, 0xffffffff), TOBN(0xffffffff, 0xffffffff)},
+      {TOBN(0xffffffff, 0xffffffff), TOBN(0xffffffff, 0xffffffff),
+       TOBN(0xffffffff, 0xffffffff), TOBN(0xffffffff, 0xffffffff)},
+  };
+
+  for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(kTestVectors); i++) {
+    SCOPED_TRACE(i);
+    for (size_t j = 0; j < OPENSSL_ARRAY_SIZE(kTestVectors); j++) {
+      SCOPED_TRACE(j);
+      EXPECT_EQ(i < j ? 1 : 0,
+                rsa_less_than_words(kTestVectors[i], kTestVectors[j],
+                                    OPENSSL_ARRAY_SIZE(kTestVectors[i])));
+    }
+  }
+
+  EXPECT_EQ(0, rsa_less_than_words(NULL, NULL, 0));
+}
+
+TEST(RSATest, GreaterThanPow2) {
+  bssl::UniquePtr<BIGNUM> b(BN_new());
+  BN_zero(b.get());
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 0));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 1));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 20));
+
+  ASSERT_TRUE(BN_set_word(b.get(), 1));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 0));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 1));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 20));
+
+  ASSERT_TRUE(BN_set_word(b.get(), 2));
+  EXPECT_TRUE(rsa_greater_than_pow2(b.get(), 0));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 1));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 20));
+
+  ASSERT_TRUE(BN_set_word(b.get(), 3));
+  EXPECT_TRUE(rsa_greater_than_pow2(b.get(), 0));
+  EXPECT_TRUE(rsa_greater_than_pow2(b.get(), 1));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 2));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 20));
+
+  BN_set_negative(b.get(), 1);
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 0));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 1));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 2));
+  EXPECT_FALSE(rsa_greater_than_pow2(b.get(), 20));
+
+  // Check all bit lengths mod 64.
+  for (int n = 1024; n < 1024 + 64; n++) {
+    SCOPED_TRACE(n);
+    ASSERT_TRUE(BN_set_word(b.get(), 1));
+    ASSERT_TRUE(BN_lshift(b.get(), b.get(), n));
+    EXPECT_TRUE(rsa_greater_than_pow2(b.get(), n - 1));
+    EXPECT_FALSE(rsa_greater_than_pow2(b.get(), n));
+    EXPECT_FALSE(rsa_greater_than_pow2(b.get(), n + 1));
+
+    ASSERT_TRUE(BN_sub_word(b.get(), 1));
+    EXPECT_TRUE(rsa_greater_than_pow2(b.get(), n - 1));
+    EXPECT_FALSE(rsa_greater_than_pow2(b.get(), n));
+    EXPECT_FALSE(rsa_greater_than_pow2(b.get(), n + 1));
+
+    ASSERT_TRUE(BN_add_word(b.get(), 2));
+    EXPECT_TRUE(rsa_greater_than_pow2(b.get(), n - 1));
+    EXPECT_TRUE(rsa_greater_than_pow2(b.get(), n));
+    EXPECT_FALSE(rsa_greater_than_pow2(b.get(), n + 1));
+  }
+}
+#endif  // !BORINGSSL_SHARED_LIBRARY
diff --git a/src/crypto/sha/CMakeLists.txt b/src/crypto/sha/CMakeLists.txt
deleted file mode 100644
index 64c77db..0000000
--- a/src/crypto/sha/CMakeLists.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-include_directories(../../include)
-
-if (${ARCH} STREQUAL "x86_64")
-  set(
-    SHA_ARCH_SOURCES
-
-    sha1-x86_64.${ASM_EXT}
-    sha256-x86_64.${ASM_EXT}
-    sha512-x86_64.${ASM_EXT}
-  )
-endif()
-
-if (${ARCH} STREQUAL "x86")
-  set(
-    SHA_ARCH_SOURCES
-
-    sha1-586.${ASM_EXT}
-    sha256-586.${ASM_EXT}
-    sha512-586.${ASM_EXT}
-  )
-endif()
-
-if (${ARCH} STREQUAL "arm")
-  set(
-    SHA_ARCH_SOURCES
-
-    sha1-armv4-large.${ASM_EXT}
-    sha256-armv4.${ASM_EXT}
-    sha512-armv4.${ASM_EXT}
-  )
-endif()
-
-if (${ARCH} STREQUAL "aarch64")
-  set(
-    SHA_ARCH_SOURCES
-
-    sha1-armv8.${ASM_EXT}
-    sha256-armv8.${ASM_EXT}
-    sha512-armv8.${ASM_EXT}
-  )
-endif()
-
-add_library(
-  sha
-
-  OBJECT
-
-  sha1-altivec.c
-  sha1.c
-  sha256.c
-  sha512.c
-
-  ${SHA_ARCH_SOURCES}
-)
-
-perlasm(sha1-x86_64.${ASM_EXT} asm/sha1-x86_64.pl)
-perlasm(sha256-x86_64.${ASM_EXT} asm/sha512-x86_64.pl)
-perlasm(sha512-x86_64.${ASM_EXT} asm/sha512-x86_64.pl)
-perlasm(sha1-586.${ASM_EXT} asm/sha1-586.pl)
-perlasm(sha256-586.${ASM_EXT} asm/sha256-586.pl)
-perlasm(sha512-586.${ASM_EXT} asm/sha512-586.pl)
-perlasm(sha1-armv4-large.${ASM_EXT} asm/sha1-armv4-large.pl)
-perlasm(sha256-armv4.${ASM_EXT} asm/sha256-armv4.pl)
-perlasm(sha512-armv4.${ASM_EXT} asm/sha512-armv4.pl)
-perlasm(sha1-armv8.${ASM_EXT} asm/sha1-armv8.pl)
-perlasm(sha256-armv8.${ASM_EXT} asm/sha512-armv8.pl)
-perlasm(sha512-armv8.${ASM_EXT} asm/sha512-armv8.pl)
diff --git a/src/crypto/test/test_util.h b/src/crypto/test/test_util.h
index bce34d4..e03bff4 100644
--- a/src/crypto/test/test_util.h
+++ b/src/crypto/test/test_util.h
@@ -21,6 +21,7 @@
 #include <string.h>
 
 #include <iosfwd>
+#include <string>
 
 #include "../internal.h"
 
@@ -37,11 +38,13 @@
   Bytes(const char *data_arg, size_t len_arg)
       : data(reinterpret_cast<const uint8_t *>(data_arg)), len(len_arg) {}
 
-  Bytes(const char *str)
+  explicit Bytes(const char *str)
       : data(reinterpret_cast<const uint8_t *>(str)), len(strlen(str)) {}
+  explicit Bytes(const std::string &str)
+      : data(reinterpret_cast<const uint8_t *>(str.data())), len(str.size()) {}
 
   template <size_t N>
-  Bytes(const uint8_t (&array)[N]) : data(array), len(N) {}
+  explicit Bytes(const uint8_t (&array)[N]) : data(array), len(N) {}
 
   const uint8_t *data;
   size_t len;
diff --git a/src/crypto/thread_test.c b/src/crypto/thread_test.c
index c702ace..714bef7 100644
--- a/src/crypto/thread_test.c
+++ b/src/crypto/thread_test.c
@@ -14,6 +14,8 @@
 
 #include "internal.h"
 
+#include <openssl/crypto.h>
+
 #include <stdio.h>
 
 
@@ -98,6 +100,9 @@
   CRYPTO_once(&g_test_once, once_init);
 }
 
+static CRYPTO_once_t once_init_value = CRYPTO_ONCE_INIT;
+static CRYPTO_once_t once_bss;
+
 static int test_once(void) {
   if (g_once_init_called != 0) {
     fprintf(stderr, "g_once_init_called was non-zero at start.\n");
@@ -121,6 +126,16 @@
     return 0;
   }
 
+  if (FIPS_mode()) {
+    /* Our FIPS tooling currently requires that |CRYPTO_ONCE_INIT| is all
+     * zeros, so the |CRYPTO_once_t| is placed in the bss. */
+    if (OPENSSL_memcmp((void *)&once_init_value, (void *)&once_bss,
+                       sizeof(CRYPTO_once_t)) != 0) {
+      fprintf(stderr, "CRYPTO_ONCE_INIT did not expand to all zeros.\n");
+      return 0;
+    }
+  }
+
   return 1;
 }
 
diff --git a/src/crypto/x509/a_verify.c b/src/crypto/x509/a_verify.c
index 0af4197..400cdd1 100644
--- a/src/crypto/x509/a_verify.c
+++ b/src/crypto/x509/a_verify.c
@@ -73,9 +73,8 @@
 int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a,
                      ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey)
 {
-    EVP_MD_CTX ctx;
     uint8_t *buf_in = NULL;
-    int ret = 0, inl;
+    int ret = 0, inl = 0;
 
     if (!pkey) {
         OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
@@ -87,9 +86,9 @@
         return 0;
     }
 
-    EVP_MD_CTX_init(&ctx);
-
-    if (!x509_digest_verify_init(&ctx, a, pkey)) {
+    EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new(pkey, NULL);
+    if (ctx == NULL ||
+        !x509_digest_verify_init(ctx, a)) {
         goto err;
     }
 
@@ -100,28 +99,19 @@
         goto err;
     }
 
-    if (!EVP_DigestVerifyUpdate(&ctx, buf_in, inl)) {
+    if (!EVP_PKEY_verify_message(ctx, signature->data,
+                                 (size_t)signature->length, buf_in, inl)) {
+        OPENSSL_PUT_ERROR(X509, ERR_R_EVP_LIB);
+        goto err;
+    }
+
+    ret = 1;
+
+ err:
+    if (buf_in != NULL) {
         OPENSSL_cleanse(buf_in, (unsigned int)inl);
         OPENSSL_free(buf_in);
-        OPENSSL_PUT_ERROR(X509, ERR_R_EVP_LIB);
-        goto err;
     }
-
-    OPENSSL_cleanse(buf_in, (unsigned int)inl);
-    OPENSSL_free(buf_in);
-
-    if (EVP_DigestVerifyFinal(&ctx, signature->data,
-                              (size_t)signature->length) <= 0) {
-        OPENSSL_PUT_ERROR(X509, ERR_R_EVP_LIB);
-        goto err;
-    }
-    /*
-     * we don't need to zero the 'ctx' because we just checked public
-     * information
-     */
-    /* OPENSSL_memset(&ctx,0,sizeof(ctx)); */
-    ret = 1;
- err:
-    EVP_MD_CTX_cleanup(&ctx);
+    EVP_PKEY_CTX_free(ctx);
     return ret;
 }
diff --git a/src/crypto/x509/algorithm.c b/src/crypto/x509/algorithm.c
index 78ae882..6e0f3f2 100644
--- a/src/crypto/x509/algorithm.c
+++ b/src/crypto/x509/algorithm.c
@@ -101,8 +101,11 @@
   return 1;
 }
 
-int x509_digest_verify_init(EVP_MD_CTX *ctx, X509_ALGOR *sigalg,
-                            EVP_PKEY *pkey) {
+int x509_digest_verify_init(EVP_PKEY_CTX *ctx, X509_ALGOR *sigalg) {
+  if (!EVP_PKEY_verify_init(ctx)) {
+    return 0;
+  }
+
   /* Convert the signature OID into digest and public key OIDs. */
   int sigalg_nid = OBJ_obj2nid(sigalg->algorithm);
   int digest_nid, pkey_nid;
@@ -112,6 +115,7 @@
   }
 
   /* Check the public key OID matches the public key type. */
+  EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(ctx);
   if (pkey_nid != EVP_PKEY_id(pkey)) {
     OPENSSL_PUT_ERROR(ASN1, ASN1_R_WRONG_PUBLIC_KEY_TYPE);
     return 0;
@@ -119,11 +123,18 @@
 
   /* NID_undef signals that there are custom parameters to set. */
   if (digest_nid == NID_undef) {
-    if (sigalg_nid != NID_rsassaPss) {
-      OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM);
-      return 0;
+    if (sigalg_nid == NID_rsassaPss) {
+      return x509_rsa_pss_to_ctx(ctx, sigalg);
     }
-    return x509_rsa_pss_to_ctx(ctx, sigalg, pkey);
+    if (sigalg_nid == NID_Ed25519) {
+      if (sigalg->parameter != NULL) {
+        OPENSSL_PUT_ERROR(X509, X509_R_INVALID_PARAMETER);
+        return 0;
+      }
+      return 1; /* Nothing to configure. */
+    }
+    OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM);
+    return 0;
   }
 
   /* Otherwise, initialize with the digest from the OID. */
@@ -133,5 +144,5 @@
     return 0;
   }
 
-  return EVP_DigestVerifyInit(ctx, NULL, digest, NULL, pkey);
+  return EVP_PKEY_CTX_set_signature_md(ctx, digest);
 }
diff --git a/src/crypto/x509/internal.h b/src/crypto/x509/internal.h
index 4957c1e..f7101af 100644
--- a/src/crypto/x509/internal.h
+++ b/src/crypto/x509/internal.h
@@ -28,9 +28,8 @@
 
 /* x509_rsa_pss_to_ctx configures |ctx| for an RSA-PSS operation based on
  * signature algorithm parameters in |sigalg| (which must have type
- * |NID_rsassaPss|) and key |pkey|. It returns one on success and zero on
- * error. */
-int x509_rsa_pss_to_ctx(EVP_MD_CTX *ctx, X509_ALGOR *sigalg, EVP_PKEY *pkey);
+ * |NID_rsassaPss|). It returns one on success and zero on error. */
+int x509_rsa_pss_to_ctx(EVP_PKEY_CTX *ctx, X509_ALGOR *sigalg);
 
 /* x509_rsa_pss_to_ctx sets |algor| to the signature algorithm parameters for
  * |ctx|, which must have been configured for an RSA-PSS signing operation. It
@@ -52,11 +51,9 @@
 int x509_digest_sign_algorithm(EVP_MD_CTX *ctx, X509_ALGOR *algor);
 
 /* x509_digest_verify_init sets up |ctx| for a signature verification operation
- * with public key |pkey| and parameters from |algor|. The |ctx| argument must
- * have been initialised with |EVP_MD_CTX_init|. It returns one on success, or
- * zero on error. */
-int x509_digest_verify_init(EVP_MD_CTX *ctx, X509_ALGOR *sigalg,
-                            EVP_PKEY *pkey);
+ * with parameters from |algor|. The |ctx| argument must have been constructed
+ * with the public key. It returns one on success, or zero on error. */
+int x509_digest_verify_init(EVP_PKEY_CTX *ctx, X509_ALGOR *sigalg);
 
 
 #if defined(__cplusplus)
diff --git a/src/crypto/x509/rsa_pss.c b/src/crypto/x509/rsa_pss.c
index 4913c3d..9c286c6 100644
--- a/src/crypto/x509/rsa_pss.c
+++ b/src/crypto/x509/rsa_pss.c
@@ -242,7 +242,7 @@
   return ret;
 }
 
-int x509_rsa_pss_to_ctx(EVP_MD_CTX *ctx, X509_ALGOR *sigalg, EVP_PKEY *pkey) {
+int x509_rsa_pss_to_ctx(EVP_PKEY_CTX *ctx, X509_ALGOR *sigalg) {
   assert(OBJ_obj2nid(sigalg->algorithm) == NID_rsassaPss);
 
   /* Decode PSS parameters */
@@ -279,11 +279,10 @@
     goto err;
   }
 
-  EVP_PKEY_CTX *pkctx;
-  if (!EVP_DigestVerifyInit(ctx, &pkctx, md, NULL, pkey) ||
-      !EVP_PKEY_CTX_set_rsa_padding(pkctx, RSA_PKCS1_PSS_PADDING) ||
-      !EVP_PKEY_CTX_set_rsa_pss_saltlen(pkctx, saltlen) ||
-      !EVP_PKEY_CTX_set_rsa_mgf1_md(pkctx, mgf1md)) {
+  if (!EVP_PKEY_CTX_set_signature_md(ctx, md) ||
+      !EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) ||
+      !EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, saltlen) ||
+      !EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, mgf1md)) {
     goto err;
   }
 
diff --git a/src/crypto/x509/x509_test.cc b/src/crypto/x509/x509_test.cc
index 4b80af8..6e23cb8 100644
--- a/src/crypto/x509/x509_test.cc
+++ b/src/crypto/x509/x509_test.cc
@@ -389,6 +389,35 @@
     "GKljn9weIYiMPV/BzGymwfv2EW0preLwtyJNJPaxbdin6Jc=\n"
     "-----END X509 CRL-----\n";
 
+// kEd25519Cert is a self-signed Ed25519 certificate.
+static const char kEd25519Cert[] =
+    "-----BEGIN CERTIFICATE-----\n"
+    "MIIBkTCCAUOgAwIBAgIJAJwooam0UCDmMAUGAytlcDBFMQswCQYDVQQGEwJBVTET\n"
+    "MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ\n"
+    "dHkgTHRkMB4XDTE0MDQyMzIzMjE1N1oXDTE0MDUyMzIzMjE1N1owRTELMAkGA1UE\n"
+    "BhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp\n"
+    "ZGdpdHMgUHR5IEx0ZDAqMAUGAytlcAMhANdamAGCsQq31Uv+08lkBzoO4XLz2qYj\n"
+    "Ja8CGmj3B1Eao1AwTjAdBgNVHQ4EFgQUoux7eV+fJK2v3ah6QPU/lj1/+7UwHwYD\n"
+    "VR0jBBgwFoAUoux7eV+fJK2v3ah6QPU/lj1/+7UwDAYDVR0TBAUwAwEB/zAFBgMr\n"
+    "ZXADQQBuCzqji8VP9xU8mHEMjXGChX7YP5J664UyVKHKH9Z1u4wEbB8dJ3ScaWSL\n"
+    "r+VHVKUhsrvcdCelnXRrrSD7xWAL\n"
+    "-----END CERTIFICATE-----\n";
+
+// kEd25519CertNull is an invalid self-signed Ed25519 with an explicit NULL in
+// the signature algorithm.
+static const char kEd25519CertNull[] =
+    "-----BEGIN CERTIFICATE-----\n"
+    "MIIBlTCCAUWgAwIBAgIJAJwooam0UCDmMAcGAytlcAUAMEUxCzAJBgNVBAYTAkFV\n"
+    "MRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRz\n"
+    "IFB0eSBMdGQwHhcNMTQwNDIzMjMyMTU3WhcNMTQwNTIzMjMyMTU3WjBFMQswCQYD\n"
+    "VQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQg\n"
+    "V2lkZ2l0cyBQdHkgTHRkMCowBQYDK2VwAyEA11qYAYKxCrfVS/7TyWQHOg7hcvPa\n"
+    "piMlrwIaaPcHURqjUDBOMB0GA1UdDgQWBBSi7Ht5X58kra/dqHpA9T+WPX/7tTAf\n"
+    "BgNVHSMEGDAWgBSi7Ht5X58kra/dqHpA9T+WPX/7tTAMBgNVHRMEBTADAQH/MAcG\n"
+    "AytlcAUAA0EA70uefNocdJohkKPNROKVyBuBD3LXMyvmdTklsaxSRY3PcZdOohlr\n"
+    "recgVPpVS7B+d9g4EwtZXIh4lodTBDHBBw==\n"
+    "-----END CERTIFICATE-----\n";
+
 // CertFromPEM parses the given, NUL-terminated pem block and returns an
 // |X509*|.
 static bssl::UniquePtr<X509> CertFromPEM(const char *pem) {
@@ -732,6 +761,49 @@
   return true;
 }
 
+static bool TestEd25519() {
+  bssl::UniquePtr<X509> cert(CertFromPEM(kEd25519Cert));
+  if (!cert) {
+    return false;
+  }
+
+  bssl::UniquePtr<EVP_PKEY> pkey(X509_get_pubkey(cert.get()));
+  if (!pkey) {
+    return false;
+  }
+
+  if (!X509_verify(cert.get(), pkey.get())) {
+    fprintf(stderr, "Could not verify certificate.\n");
+    return false;
+  }
+  return true;
+}
+
+static bool TestBadEd25519Parameters() {
+  bssl::UniquePtr<X509> cert(CertFromPEM(kEd25519CertNull));
+  if (!cert) {
+    return false;
+  }
+
+  bssl::UniquePtr<EVP_PKEY> pkey(X509_get_pubkey(cert.get()));
+  if (!pkey) {
+    return false;
+  }
+
+  if (X509_verify(cert.get(), pkey.get())) {
+    fprintf(stderr, "Unexpectedly verified bad certificate.\n");
+    return false;
+  }
+  uint32_t err = ERR_get_error();
+  if (ERR_GET_LIB(err) != ERR_LIB_X509 ||
+      ERR_GET_REASON(err) != X509_R_INVALID_PARAMETER) {
+    fprintf(stderr, "Did not get X509_R_INVALID_PARAMETER as expected.\n");
+    return false;
+  }
+  ERR_clear_error();
+  return true;
+}
+
 static bool SignatureRoundTrips(EVP_MD_CTX *md_ctx, EVP_PKEY *pkey) {
   // Make a certificate like signed with |md_ctx|'s settings.'
   bssl::UniquePtr<X509> cert(CertFromPEM(kLeafPEM));
@@ -1086,6 +1158,8 @@
       !TestCRL() ||
       !TestPSS() ||
       !TestBadPSSParameters() ||
+      !TestEd25519() ||
+      !TestBadEd25519Parameters() ||
       !TestSignCtx() ||
       !TestFromBuffer() ||
       !TestFromBufferTrailingData() ||