From b396ec4edd7f91b7cf50bda495e340b77ca89692 Mon Sep 17 00:00:00 2001
From: Arthur Gautier <arthur.gautier@arista.com>
Date: Fri, 19 Sep 2025 20:40:01 -0700
Subject: [PATCH 1/2] bump aead to latest master, remove heapless

---
 .github/workflows/belt-dwp.yml |  1 -
 Cargo.lock                     | 43 ++++------------------------------
 Cargo.toml                     |  4 ++--
 aes-gcm-siv/Cargo.toml         |  1 -
 aes-gcm-siv/src/lib.rs         | 29 ++++++++++-------------
 aes-gcm/Cargo.toml             |  1 -
 aes-gcm/src/lib.rs             | 36 +++++++++++++---------------
 aes-siv/Cargo.toml             |  1 -
 aes-siv/src/lib.rs             | 31 +++++++++++-------------
 ascon-aead128/Cargo.toml       |  1 -
 ascon-aead128/src/lib.rs       | 29 ++++++++++-------------
 belt-dwp/Cargo.toml            |  1 -
 belt-dwp/src/lib.rs            | 27 ++++++++++-----------
 ccm/Cargo.toml                 |  1 -
 chacha20poly1305/Cargo.toml    |  1 -
 chacha20poly1305/src/lib.rs    | 31 +++++++++++-------------
 deoxys/Cargo.toml              |  1 -
 deoxys/src/lib.rs              | 29 ++++++++++-------------
 eax/Cargo.toml                 |  1 -
 eax/src/lib.rs                 | 41 +++++++++++++++-----------------
 mgm/Cargo.toml                 |  1 -
 ocb3/Cargo.toml                |  1 -
 xaes-256-gcm/Cargo.toml        |  1 -
 xaes-256-gcm/src/lib.rs        |  4 ++--
 24 files changed, 123 insertions(+), 194 deletions(-)

diff --git a/.github/workflows/belt-dwp.yml b/.github/workflows/belt-dwp.yml
index 1c43e249..7f5a17f5 100644
--- a/.github/workflows/belt-dwp.yml
+++ b/.github/workflows/belt-dwp.yml
@@ -78,5 +78,4 @@ jobs:
       - run: ${{ matrix.deps }}
       - run: cargo test --target ${{ matrix.target }} --release --no-default-features --lib
       - run: cargo test --target ${{ matrix.target }} --release
-      - run: cargo test --target ${{ matrix.target }} --release --features heapless
       - run: cargo test --target ${{ matrix.target }} --release --all-features
diff --git a/Cargo.lock b/Cargo.lock
index 5c4f9882..818b157b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6,14 +6,12 @@ version = 4
 [[package]]
 name = "aead"
 version = "0.6.0-rc.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac8202ab55fcbf46ca829833f347a82a2a4ce0596f0304ac322c2d100030cd56"
+source = "git+https://github.com/RustCrypto/traits.git#219861dfcde81d2410dec55e64065e4c573c7be6"
 dependencies = [
  "arrayvec",
  "blobby",
  "bytes",
  "crypto-common",
- "heapless",
  "inout",
 ]
 
@@ -145,8 +143,9 @@ checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
 
 [[package]]
 name = "blobby"
-version = "0.4.0-pre.0"
-source = "git+https://github.com/RustCrypto/utils#a7e36d36cfc6ae0d804605b91731c7359eb43a95"
+version = "0.4.0-pre.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4db6eec520c1f3d3b060c5b67527c3d1d4122d9f0ff47edf0149a7ffa34cebb"
 
 [[package]]
 name = "block-buffer"
@@ -158,12 +157,6 @@ dependencies = [
  "zeroize",
 ]
 
-[[package]]
-name = "byteorder"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-
 [[package]]
 name = "bytes"
 version = "1.10.1"
@@ -246,8 +239,7 @@ dependencies = [
 [[package]]
 name = "crypto-common"
 version = "0.2.0-rc.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a8235645834fbc6832939736ce2f2d08192652269e11010a6240f61b908a1c6"
+source = "git+https://github.com/RustCrypto/traits.git#219861dfcde81d2410dec55e64065e4c573c7be6"
 dependencies = [
  "hybrid-array",
  "rand_core",
@@ -326,25 +318,6 @@ dependencies = [
  "polyval",
 ]
 
-[[package]]
-name = "hash32"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
-dependencies = [
- "byteorder",
-]
-
-[[package]]
-name = "heapless"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
-dependencies = [
- "hash32",
- "stable_deref_trait",
-]
-
 [[package]]
 name = "hex-literal"
 version = "0.4.1"
@@ -462,12 +435,6 @@ dependencies = [
  "getrandom",
 ]
 
-[[package]]
-name = "stable_deref_trait"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
-
 [[package]]
 name = "subtle"
 version = "2.6.1"
diff --git a/Cargo.toml b/Cargo.toml
index 544febda..052013a8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -19,5 +19,5 @@ members = [
 aead-stream = { path = "aead-stream" }
 aes-gcm = { path = "aes-gcm" }
 
-# https://github.com/RustCrypto/utils/pull/1187
-blobby = { git = "https://github.com/RustCrypto/utils" }
+aead = { git = "https://github.com/RustCrypto/traits.git" }
+crypto-common = { git = "https://github.com/RustCrypto/traits.git" }
diff --git a/aes-gcm-siv/Cargo.toml b/aes-gcm-siv/Cargo.toml
index a5a873bd..9645a828 100644
--- a/aes-gcm-siv/Cargo.toml
+++ b/aes-gcm-siv/Cargo.toml
@@ -34,7 +34,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 
 [package.metadata.docs.rs]
diff --git a/aes-gcm-siv/src/lib.rs b/aes-gcm-siv/src/lib.rs
index 070f8e5d..d183642f 100644
--- a/aes-gcm-siv/src/lib.rs
+++ b/aes-gcm-siv/src/lib.rs
@@ -38,17 +38,20 @@
 //! methods accept any type that impls the [`aead::Buffer`] trait which
 //! contains the plaintext for encryption or ciphertext for decryption.
 //!
-//! Note that if you enable the `heapless` feature of this crate,
-//! you will receive an impl of [`aead::Buffer`] for `heapless::Vec`
-//! (re-exported from the [`aead`] crate as [`aead::heapless::Vec`]),
-//! which can then be passed as the `buffer` parameter to the in-place encrypt
+//! Enabling the `arrayvec` feature of this crate will provide an impl of
+//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
+//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
+//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
+//! [`aead`] crate as [`aead::bytes::BytesMut`]).
+//!
+//! It can then be passed as the `buffer` parameter to the in-place encrypt
 //! and decrypt methods:
 //!
-#![cfg_attr(all(feature = "os_rng", feature = "heapless"), doc = "```")]
-#![cfg_attr(not(all(feature = "os_rng", feature = "heapless")), doc = "```ignore")]
+#![cfg_attr(all(feature = "os_rng", feature = "arrayvec"), doc = "```")]
+#![cfg_attr(not(all(feature = "os_rng", feature = "arrayvec")), doc = "```ignore")]
 //! # fn main() -> Result<(), Box<dyn std::error::Error>> {
 //! use aes_gcm_siv::{
-//!     aead::{AeadInOut, KeyInit, rand_core::OsRng, heapless::Vec},
+//!     aead::{AeadInOut, Buffer, KeyInit, rand_core::OsRng, arrayvec::ArrayVec},
 //!     Aes256GcmSiv, Nonce, // Or `Aes128GcmSiv`
 //! };
 //!
@@ -56,27 +59,21 @@
 //! let cipher = Aes256GcmSiv::new(&key);
 //! let nonce = Nonce::from_slice(b"unique nonce"); // 96-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new(); // Note: buffer needs 16-bytes overhead for auth tag
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new(); // Note: buffer needs 16-bytes overhead for auth tag
 //! buffer.extend_from_slice(b"plaintext message");
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! cipher.encrypt_in_place(nonce, b"", &mut buffer)?;
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_in_place(nonce, b"", &mut buffer)?;
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # Ok(())
 //! # }
 //! ```
-//!
-//! Similarly, enabling the `arrayvec` feature of this crate will provide an impl of
-//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
-//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
-//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
-//! [`aead`] crate as [`aead::bytes::BytesMut`]).
 
 pub use aead::{self, AeadCore, AeadInOut, Error, Key, KeyInit, KeySizeUser};
 
diff --git a/aes-gcm/Cargo.toml b/aes-gcm/Cargo.toml
index fe75c3aa..48967dfb 100644
--- a/aes-gcm/Cargo.toml
+++ b/aes-gcm/Cargo.toml
@@ -35,7 +35,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 
 [package.metadata.docs.rs]
diff --git a/aes-gcm/src/lib.rs b/aes-gcm/src/lib.rs
index 90d41b64..def1bf4c 100644
--- a/aes-gcm/src/lib.rs
+++ b/aes-gcm/src/lib.rs
@@ -12,8 +12,8 @@
 //!
 //! Simple usage (allocating, no associated data):
 //!
-#![cfg_attr(all(feature = "os_rng", feature = "heapless"), doc = "```")]
-#![cfg_attr(not(all(feature = "os_rng", feature = "heapless")), doc = "```ignore")]
+#![cfg_attr(feature = "os_rng", doc = "```")]
+#![cfg_attr(not(feature = "os_rng"), doc = "```ignore")]
 //! use aes_gcm::{
 //!     aead::{Aead, AeadCore, KeyInit, rand_core::OsRng},
 //!     Aes256Gcm, Nonce, Key // Or `Aes128Gcm`
@@ -58,17 +58,20 @@
 //! methods accept any type that impls the [`aead::Buffer`] trait which
 //! contains the plaintext for encryption or ciphertext for decryption.
 //!
-//! Note that if you enable the `heapless` feature of this crate,
-//! you will receive an impl of [`aead::Buffer`] for `heapless::Vec`
-//! (re-exported from the [`aead`] crate as [`aead::heapless::Vec`]),
-//! which can then be passed as the `buffer` parameter to the in-place encrypt
+//! Enabling the `arrayvec` feature of this crate will provide an impl of
+//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
+//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
+//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
+//! [`aead`] crate as [`aead::bytes::BytesMut`]).
+//!
+//! It can then be passed as the `buffer` parameter to the in-place encrypt
 //! and decrypt methods:
 //!
-#![cfg_attr(all(feature = "os_rng", feature = "heapless"), doc = "```")]
-#![cfg_attr(not(all(feature = "os_rng", feature = "heapless")), doc = "```ignore")]
+#![cfg_attr(all(feature = "os_rng", feature = "arrayvec"), doc = "```")]
+#![cfg_attr(not(all(feature = "os_rng", feature = "arrayvec")), doc = "```ignore")]
 //! # fn main() -> Result<(), Box<dyn core::error::Error>> {
 //! use aes_gcm::{
-//!     aead::{AeadCore, AeadInOut, KeyInit, rand_core::OsRng, heapless::Vec},
+//!     aead::{AeadCore, AeadInOut, KeyInit, rand_core::OsRng, arrayvec::ArrayVec},
 //!     Aes256Gcm, Nonce, // Or `Aes128Gcm`
 //! };
 //!
@@ -76,27 +79,20 @@
 //! let cipher = Aes256Gcm::new(&key);
 //! let nonce = Aes256Gcm::generate_nonce().expect("generate nonce"); // 96-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new(); // Note: buffer needs 16-bytes overhead for auth tag
-//! buffer.extend_from_slice(b"plaintext message");
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new(); // Note: buffer needs 16-bytes overhead for auth tag
+//! buffer.try_extend_from_slice(b"plaintext message").unwrap();
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! cipher.encrypt_in_place(&nonce, b"", &mut buffer)?;
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_in_place(&nonce, b"", &mut buffer)?;
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # Ok(())
 //! # }
-//! ```
-//!
-//! Similarly, enabling the `arrayvec` feature of this crate will provide an impl of
-//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
-//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
-//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
-//! [`aead`] crate as [`aead::bytes::BytesMut`]).
 
 pub use aead::{self, AeadCore, AeadInOut, Error, Key, KeyInit, KeySizeUser};
 
diff --git a/aes-siv/Cargo.toml b/aes-siv/Cargo.toml
index 83bc2169..0f196759 100644
--- a/aes-siv/Cargo.toml
+++ b/aes-siv/Cargo.toml
@@ -40,7 +40,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 
 [package.metadata.docs.rs]
diff --git a/aes-siv/src/lib.rs b/aes-siv/src/lib.rs
index dc05de90..391532dd 100644
--- a/aes-siv/src/lib.rs
+++ b/aes-siv/src/lib.rs
@@ -38,17 +38,20 @@
 //! methods accept any type that impls the [`aead::Buffer`] trait which
 //! contains the plaintext for encryption or ciphertext for decryption.
 //!
-//! Note that if you enable the `heapless` feature of this crate,
-//! you will receive an impl of [`aead::Buffer`] for `heapless::Vec`
-//! (re-exported from the [`aead`] crate as [`aead::heapless::Vec`]),
-//! which can then be passed as the `buffer` parameter to the in-place encrypt
+//! Enabling the `arrayvec` feature of this crate will provide an impl of
+//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
+//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
+//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
+//! [`aead`] crate as [`aead::bytes::BytesMut`]).
+//!
+//! It can then be passed as the `buffer` parameter to the in-place encrypt
 //! and decrypt methods:
 //!
-#![cfg_attr(all(feature = "os_rng", feature = "heapless"), doc = "```")]
-#![cfg_attr(not(all(feature = "os_rng", feature = "heapless")), doc = "```ignore")]
+#![cfg_attr(all(feature = "os_rng", feature = "arrayvec"), doc = "```")]
+#![cfg_attr(not(all(feature = "os_rng", feature = "arrayvec")), doc = "```ignore")]
 //! # fn main() -> Result<(), Box<dyn core::error::Error>> {
 //! use aes_siv::{
-//!     aead::{AeadCore, AeadInOut, KeyInit, rand_core::OsRng, heapless::Vec},
+//!     aead::{AeadCore, AeadInOut, KeyInit, rand_core::OsRng, arrayvec::ArrayVec},
 //!     Aes256SivAead, Nonce, // Or `Aes128SivAead`
 //! };
 //!
@@ -56,27 +59,21 @@
 //! let cipher = Aes256SivAead::new(&key);
 //! let nonce = Aes256SivAead::generate_nonce().expect("Generate nonce"); // 128-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new(); // Note: buffer needs 16-bytes overhead for auth tag
-//! buffer.extend_from_slice(b"plaintext message");
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new(); // Note: buffer needs 16-bytes overhead for auth tag
+//! buffer.try_extend_from_slice(b"plaintext message").unwrap();
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! cipher.encrypt_in_place(&nonce, b"", &mut buffer)?;
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_in_place(&nonce, b"", &mut buffer)?;
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # Ok(())
 //! # }
 //! ```
-//!
-//! Similarly, enabling the `arrayvec` feature of this crate will provide an impl of
-//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
-//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
-//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
-//! [`aead`] crate as [`aead::bytes::BytesMut`]).
 
 #[cfg(feature = "alloc")]
 extern crate alloc;
diff --git a/ascon-aead128/Cargo.toml b/ascon-aead128/Cargo.toml
index 3fe2e48d..fe3762ff 100644
--- a/ascon-aead128/Cargo.toml
+++ b/ascon-aead128/Cargo.toml
@@ -26,7 +26,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 zeroize = ["dep:zeroize", "ascon/zeroize"]
 
diff --git a/ascon-aead128/src/lib.rs b/ascon-aead128/src/lib.rs
index 3cff18ac..62ab84e5 100644
--- a/ascon-aead128/src/lib.rs
+++ b/ascon-aead128/src/lib.rs
@@ -62,43 +62,40 @@
 //! methods accept any type that impls the [`aead::Buffer`] trait which
 //! contains the plaintext for encryption or ciphertext for decryption.
 //!
-//! Note that if you enable the `heapless` feature of this crate,
-//! you will receive an impl of [`aead::Buffer`] for `heapless::Vec`
-//! (re-exported from the [`aead`] crate as [`aead::heapless::Vec`]),
-//! which can then be passed as the `buffer` parameter to the in-place encrypt
+//! Enabling the `arrayvec` feature of this crate will provide an impl of
+//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
+//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
+//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
+//! [`aead`] crate as [`aead::bytes::BytesMut`]).
+//!
+//! It can then be passed as the `buffer` parameter to the in-place encrypt
 //! and decrypt methods:
 //!
 //! ```
-//! # #[cfg(feature = "heapless")] {
+//! # #[cfg(feature = "arrayvec")] {
 //! use ascon_aead128::{AsconAead128, Key, Nonce};
 //! use ascon_aead128::aead::{AeadInOut, KeyInit};
-//! use ascon_aead128::aead::heapless::Vec;
+//! use ascon_aead128::aead::arrayvec::ArrayVec;
 //!
 //! let key = Key::<AsconAead128>::from_slice(b"very secret key.");
 //! let cipher = AsconAead128::new(key);
 //!
 //! let nonce = Nonce::<AsconAead128>::from_slice(b"unique nonce 012"); // 128-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new(); // Buffer needs 16-bytes overhead for authentication tag
-//! buffer.extend_from_slice(b"plaintext message");
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new(); // Buffer needs 16-bytes overhead for authentication tag
+//! buffer.try_extend_from_slice(b"plaintext message").unwrap();
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! cipher.encrypt_in_place(nonce, b"", &mut buffer).expect("encryption failure!");
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_in_place(nonce, b"", &mut buffer).expect("decryption failure!");
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # }
 //! ```
-//!
-//! Similarly, enabling the `arrayvec` feature of this crate will provide an impl of
-//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
-//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
-//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
-//! [`aead`] crate as [`aead::bytes::BytesMut`]).
 
 #[cfg(feature = "zeroize")]
 pub use zeroize;
diff --git a/belt-dwp/Cargo.toml b/belt-dwp/Cargo.toml
index 1ef128e3..c3016ec9 100644
--- a/belt-dwp/Cargo.toml
+++ b/belt-dwp/Cargo.toml
@@ -29,7 +29,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 reduced-round = []
 zeroize = ["dep:zeroize", "belt-ctr/zeroize"]
diff --git a/belt-dwp/src/lib.rs b/belt-dwp/src/lib.rs
index 0f404115..899263e6 100644
--- a/belt-dwp/src/lib.rs
+++ b/belt-dwp/src/lib.rs
@@ -13,7 +13,7 @@
 //!
 //! ```
 //! # fn main() -> Result<(), Box<dyn std::error::Error>> {
-//! # #[cfg(all(feature = "os_rng", feature = "heapless"))] {
+//! # #[cfg(feature = "os_rng")] {
 //! use belt_dwp::{
 //!     aead::{Aead, AeadCore, KeyInit}, Nonce, BeltDwp
 //! };
@@ -36,17 +36,18 @@
 //! methods accept any type that impls the [`aead::Buffer`] trait which
 //! contains the plaintext for encryption or ciphertext for decryption.
 //!
-//! Note that if you enable the `heapless` feature of this crate,
-//! you will receive an impl of [`aead::Buffer`] for `heapless::Vec`
-//! (re-exported from the [`aead`] crate as [`aead::heapless::Vec`]),
-//! which can then be passed as the `buffer` parameter to the in-place encrypt
+//! Enabling the `arrayvec` feature of this crate will provide an impl of
+//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
+//! [`aead::arrayvec::ArrayVec`]).
+//!
+//! It can then be passed as the `buffer` parameter to the in-place encrypt
 //! and decrypt methods:
 //!
 //! ```
 //! # fn main() -> Result<(), Box<dyn std::error::Error>> {
-//! # #[cfg(all(feature = "os_rng", feature = "heapless"))] {
+//! # #[cfg(all(feature = "os_rng", feature = "arrayvec"))] {
 //! use belt_dwp::{
-//!     aead::{AeadInOut, KeyInit, heapless::Vec},
+//!     aead::{AeadInOut, KeyInit, arrayvec::ArrayVec},
 //!     Nonce, BeltDwp
 //! };
 //!
@@ -54,24 +55,20 @@
 //! let cipher = BeltDwp::new(&key);
 //! let nonce = Nonce::try_from(&b"unique nonce1234"[..]).unwrap(); // 128-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new(); // Note: buffer needs 16-bytes overhead for auth tag
-//! buffer.extend_from_slice(b"plaintext message");
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new(); // Note: buffer needs 16-bytes overhead for auth tag
+//! buffer.try_extend_from_slice(b"plaintext message").unwrap();
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! cipher.encrypt_in_place(&nonce, b"", &mut buffer)?;
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_in_place(&nonce, b"", &mut buffer)?;
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # }; Ok(()) }
 //! ```
-//!
-//! Similarly, enabling the `arrayvec` feature of this crate will provide an impl of
-//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
-//! [`aead::arrayvec::ArrayVec`]).
 
 pub use aead::{self, AeadCore, AeadInOut, Error, Key, KeyInit, KeySizeUser, Tag};
 pub use belt_block::BeltBlock;
diff --git a/ccm/Cargo.toml b/ccm/Cargo.toml
index 21f71c31..ebe9a796 100644
--- a/ccm/Cargo.toml
+++ b/ccm/Cargo.toml
@@ -30,5 +30,4 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
diff --git a/chacha20poly1305/Cargo.toml b/chacha20poly1305/Cargo.toml
index c0d01e47..79c0905d 100644
--- a/chacha20poly1305/Cargo.toml
+++ b/chacha20poly1305/Cargo.toml
@@ -35,7 +35,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 reduced-round = []
 zeroize = ["dep:zeroize", "chacha20/zeroize"]
diff --git a/chacha20poly1305/src/lib.rs b/chacha20poly1305/src/lib.rs
index d829f8a7..7625356b 100644
--- a/chacha20poly1305/src/lib.rs
+++ b/chacha20poly1305/src/lib.rs
@@ -50,17 +50,20 @@
 //! methods accept any type that impls the [`aead::Buffer`] trait which
 //! contains the plaintext for encryption or ciphertext for decryption.
 //!
-//! Note that if you enable the `heapless` feature of this crate,
-//! you will receive an impl of [`aead::Buffer`] for `heapless::Vec`
-//! (re-exported from the [`aead`] crate as [`aead::heapless::Vec`]),
-//! which can then be passed as the `buffer` parameter to the in-place encrypt
+//! Enabling the `arrayvec` feature of this crate will provide an impl of
+//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
+//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
+//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
+//! [`aead`] crate as [`aead::bytes::BytesMut`]).
+//!
+//! It can then be passed as the `buffer` parameter to the in-place encrypt
 //! and decrypt methods:
 //!
-#![cfg_attr(all(feature = "os_rng", feature = "heapless"), doc = "```")]
-#![cfg_attr(not(all(feature = "os_rng", feature = "heapless")), doc = "```ignore")]
+#![cfg_attr(all(feature = "os_rng", feature = "arrayvec"), doc = "```")]
+#![cfg_attr(not(all(feature = "os_rng", feature = "arrayvec")), doc = "```ignore")]
 //! # fn main() -> Result<(), Box<dyn std::error::Error>> {
 //! use chacha20poly1305::{
-//!     aead::{AeadCore, AeadInOut, KeyInit, rand_core::OsRng, heapless::Vec},
+//!     aead::{AeadCore, AeadInOut, KeyInit, rand_core::OsRng, arrayvec::ArrayVec},
 //!     ChaCha20Poly1305, Nonce,
 //! };
 //!
@@ -68,28 +71,22 @@
 //! let cipher = ChaCha20Poly1305::new(&key);
 //! let nonce = ChaCha20Poly1305::generate_nonce().expect("Generate nonce"); // 96-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new(); // Note: buffer needs 16-bytes overhead for auth tag
-//! buffer.extend_from_slice(b"plaintext message");
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new(); // Note: buffer needs 16-bytes overhead for auth tag
+//! buffer.try_extend_from_slice(b"plaintext message").unwrap();
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! cipher.encrypt_in_place(&nonce, b"", &mut buffer)?;
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_in_place(&nonce, b"", &mut buffer)?;
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # Ok(())
 //! # }
 //! ```
 //!
-//! Similarly, enabling the `arrayvec` feature of this crate will provide an impl of
-//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
-//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
-//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
-//! [`aead`] crate as [`aead::bytes::BytesMut`]).
-//!
 //! ## [`XChaCha20Poly1305`]
 //!
 //! ChaCha20Poly1305 variant with an extended 192-bit (24-byte) nonce.
diff --git a/deoxys/Cargo.toml b/deoxys/Cargo.toml
index 3c510a7b..070f910a 100644
--- a/deoxys/Cargo.toml
+++ b/deoxys/Cargo.toml
@@ -33,7 +33,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 
 [package.metadata.docs.rs]
diff --git a/deoxys/src/lib.rs b/deoxys/src/lib.rs
index 4d9f92c6..59a0eacd 100644
--- a/deoxys/src/lib.rs
+++ b/deoxys/src/lib.rs
@@ -66,43 +66,40 @@
 //! methods accept any type that impls the [`aead::Buffer`] trait which
 //! contains the plaintext for encryption or ciphertext for decryption.
 //!
-//! Note that if you enable the `heapless` feature of this crate,
-//! you will receive an impl of [`aead::Buffer`] for `heapless::Vec`
-//! (re-exported from the [`aead`] crate as [`aead::heapless::Vec`]),
-//! which can then be passed as the `buffer` parameter to the in-place encrypt
+//! Enabling the `arrayvec` feature of this crate will provide an impl of
+//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
+//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
+//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
+//! [`aead`] crate as [`aead::bytes::BytesMut`]).
+//!
+//! It can then be passed as the `buffer` parameter to the in-place encrypt
 //! and decrypt methods:
 //!
 //! ```
-//! # #[cfg(feature = "heapless")]
+//! # #[cfg(feature = "arrayvec")]
 //! # {
 //! use deoxys::{DeoxysII256, Nonce}; // Can be `DeoxysI128`, `DeoxysI256`, `DeoxysII128` of `DeoxysII256`
-//! use deoxys::aead::{AeadCore, AeadInOut, KeyInit, rand_core::OsRng, heapless::Vec};
+//! use deoxys::aead::{AeadCore, AeadInOut, KeyInit, rand_core::OsRng, arrayvec::ArrayVec};
 //!
 //! let key = DeoxysII256::generate_key().expect("generate key");
 //! let cipher = DeoxysII256::new(&key);
 //!
 //! let nonce = DeoxysII256::generate_nonce().expect("generate nonce"); // 120-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new(); // Buffer needs 16-bytes overhead for tag
-//! buffer.extend_from_slice(b"plaintext message");
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new(); // Buffer needs 16-bytes overhead for tag
+//! buffer.try_extend_from_slice(b"plaintext message").unwrap();
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! cipher.encrypt_in_place(&nonce, b"", &mut buffer).expect("encryption failure!");
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_in_place(&nonce, b"", &mut buffer).expect("decryption failure!");
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # }
 //! ```
-//!
-//! Similarly, enabling the `arrayvec` feature of this crate will provide an impl of
-//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
-//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
-//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
-//! [`aead`] crate as [`aead::bytes::BytesMut`]).
 
 /// Deoxys-BC implementations.
 mod deoxys_bc;
diff --git a/eax/Cargo.toml b/eax/Cargo.toml
index 855bb269..aacba994 100644
--- a/eax/Cargo.toml
+++ b/eax/Cargo.toml
@@ -36,7 +36,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 
 [package.metadata.docs.rs]
diff --git a/eax/src/lib.rs b/eax/src/lib.rs
index 1abc7c64..0e11b16e 100644
--- a/eax/src/lib.rs
+++ b/eax/src/lib.rs
@@ -42,20 +42,23 @@
 //! methods accept any type that impls the [`aead::Buffer`] trait which
 //! contains the plaintext for encryption or ciphertext for decryption.
 //!
-//! Note that if you enable the `heapless` feature of this crate,
-//! you will receive an impl of [`aead::Buffer`] for `heapless::Vec`
-//! (re-exported from the [`aead`] crate as [`aead::heapless::Vec`]),
-//! which can then be passed as the `buffer` parameter to the in-place encrypt
+//! Enabling the `arrayvec` feature of this crate will provide an impl of
+//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
+//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
+//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
+//! [`aead`] crate as [`aead::bytes::BytesMut`]).
+//!
+//! It can then be passed as the `buffer` parameter to the in-place encrypt
 //! and decrypt methods:
 //!
 //! ```
-//! # #[cfg(feature = "heapless")]
+//! # #[cfg(feature = "arrayvec")]
 //! # {
 //! use aes::Aes256;
 //! use eax::Eax;
 //! use eax::aead::{
 //!     array::Array,
-//!     heapless::Vec,
+//!     arrayvec::ArrayVec,
 //!     AeadCore, AeadInOut, KeyInit, rand_core::OsRng
 //! };
 //!
@@ -66,39 +69,33 @@
 //!
 //! let nonce = Aes256Eax::generate_nonce().expect("generate nonce"); // 128-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new();
-//! buffer.extend_from_slice(b"plaintext message");
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new();
+//! buffer.try_extend_from_slice(b"plaintext message").unwrap();
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! cipher.encrypt_in_place(&nonce, b"", &mut buffer).expect("encryption failure!");
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_in_place(&nonce, b"", &mut buffer).expect("decryption failure!");
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # }
 //! ```
 //!
-//! Similarly, enabling the `arrayvec` feature of this crate will provide an impl of
-//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
-//! [`aead::arrayvec::ArrayVec`]), and enabling the `bytes` feature of this crate will
-//! provide an impl of [`aead::Buffer`] for `bytes::BytesMut` (re-exported from the
-//! [`aead`] crate as [`aead::bytes::BytesMut`]).
-//!
 //! ## Custom Tag Length
 //!
 //! The tag for eax is usually 16 bytes long but it can be shortened if needed.
 //! The second generic argument of `Eax` can be set to the tag length:
 //!
 //! ```
-//! # #[cfg(feature = "heapless")]
+//! # #[cfg(feature = "arrayvec")]
 //! # {
 //! use aes::Aes256;
 //! use eax::Eax;
 //! use eax::aead::{AeadInOut, KeyInit, array::Array};
-//! use eax::aead::heapless::Vec;
+//! use eax::aead::arrayvec::ArrayVec;
 //! use eax::aead::consts::{U8, U128};
 //!
 //! let key = Array::from_slice(b"an example very very secret key.");
@@ -106,8 +103,8 @@
 //!
 //! let nonce = Array::from_slice(b"my unique nonces"); // 128-bits; unique per message
 //!
-//! let mut buffer: Vec<u8, 128> = Vec::new();
-//! buffer.extend_from_slice(b"plaintext message");
+//! let mut buffer: ArrayVec<u8, 128> = ArrayVec::new();
+//! buffer.try_extend_from_slice(b"plaintext message").unwrap();
 //!
 //! // Encrypt `buffer` in-place, replacing the plaintext contents with ciphertext
 //! let tag = cipher.encrypt_inout_detached(nonce, b"", buffer.as_mut_slice().into()).expect("encryption failure!");
@@ -116,11 +113,11 @@
 //! assert_eq!(tag.len(), 8);
 //!
 //! // `buffer` now contains the message ciphertext
-//! assert_ne!(&buffer, b"plaintext message");
+//! assert_ne!(buffer.as_ref(), b"plaintext message");
 //!
 //! // Decrypt `buffer` in-place, replacing its ciphertext context with the original plaintext
 //! cipher.decrypt_inout_detached(nonce, b"", buffer.as_mut_slice().into(), &tag).expect("decryption failure!");
-//! assert_eq!(&buffer, b"plaintext message");
+//! assert_eq!(buffer.as_ref(), b"plaintext message");
 //! # }
 //! ```
 
diff --git a/mgm/Cargo.toml b/mgm/Cargo.toml
index c4dc2b3a..e5b5bfa9 100644
--- a/mgm/Cargo.toml
+++ b/mgm/Cargo.toml
@@ -37,7 +37,6 @@ alloc = ["aead/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 getrandom  = ["aead/getrandom", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 stream = ["aead/stream"]
 force-soft = [] # Disable support for hardware intrinsics
diff --git a/ocb3/Cargo.toml b/ocb3/Cargo.toml
index 0fc6323c..9e65f538 100644
--- a/ocb3/Cargo.toml
+++ b/ocb3/Cargo.toml
@@ -35,7 +35,6 @@ alloc = ["aead/alloc", "aead-stream?/alloc"]
 arrayvec = ["aead/arrayvec"]
 bytes = ["aead/bytes"]
 os_rng = ["aead/os_rng", "rand_core"]
-heapless = ["aead/heapless"]
 rand_core = ["aead/rand_core"]
 
 [package.metadata.docs.rs]
diff --git a/xaes-256-gcm/Cargo.toml b/xaes-256-gcm/Cargo.toml
index c1a01c91..6e32dff9 100644
--- a/xaes-256-gcm/Cargo.toml
+++ b/xaes-256-gcm/Cargo.toml
@@ -31,7 +31,6 @@ default = ["alloc", "os_rng"]
 alloc = ["aead/alloc", "aead-stream?/alloc", "aes-gcm/alloc"]
 arrayvec = ["aead/arrayvec", "aes-gcm/arrayvec"]
 os_rng = ["aead/os_rng", "aes-gcm/os_rng", "rand_core"]
-heapless = ["aead/heapless", "aes-gcm/heapless"]
 rand_core = ["aead/rand_core", "aes-gcm/rand_core"]
 
 [package.metadata.docs.rs]
diff --git a/xaes-256-gcm/src/lib.rs b/xaes-256-gcm/src/lib.rs
index d36c8fc3..c5af4ec5 100644
--- a/xaes-256-gcm/src/lib.rs
+++ b/xaes-256-gcm/src/lib.rs
@@ -12,8 +12,8 @@
 //!
 //! Simple usage (allocating, no associated data):
 //!
-#![cfg_attr(all(feature = "os_rng", feature = "heapless"), doc = "```")]
-#![cfg_attr(not(all(feature = "os_rng", feature = "heapless")), doc = "```ignore")]
+#![cfg_attr(feature = "os_rng", doc = "```")]
+#![cfg_attr(not(feature = "os_rng"), doc = "```ignore")]
 //! use xaes_256_gcm::{
 //!     Xaes256Gcm, Nonce, Key,
 //!     aead::{Aead, AeadCore, KeyInit, rand_core::OsRng},

From 9be3575203c81e6ecab3524774d25d315b02d0c7 Mon Sep 17 00:00:00 2001
From: Arthur Gautier <arthur.gautier@arista.com>
Date: Fri, 19 Sep 2025 20:40:01 -0700
Subject: [PATCH 2/2] split tests into `new_pass_test` and `new_fail_test`

This uses the tool described in
https://github.com/RustCrypto/traits/pull/2019 and this script:
```
find -name '*.blb' ! -path "./mgm/tests/data/*" -exec ./split-blobby {} \;  -delete
```

and a sed script to split most of the tests:
```
for p in $(rg -l aead::new_test); do
  sed -i '/aead::new_test!/ {
    h;
    s/new_test!/new_pass_test!/;
    s/,/_pass,/;
    s/",/_pass",/;
    p;

    g;
    s/new_test!/new_fail_test!/;
    s/,/_fail,/;
    s/",/_fail",/
  }' $p;
done
```
---
 Cargo.lock                                    |   4 +-
 Cargo.toml                                    |   1 +
 aes-gcm-siv/tests/aes128gcmsiv.rs             |   3 +-
 aes-gcm-siv/tests/aes256gcmsiv.rs             |   3 +-
 aes-gcm-siv/tests/data/wycheproof-128.blb     | Bin 4712 -> 0 bytes
 .../tests/data/wycheproof-128_fail.blb        | Bin 0 -> 840 bytes
 .../tests/data/wycheproof-128_pass.blb        | Bin 0 -> 3827 bytes
 aes-gcm-siv/tests/data/wycheproof-256.blb     | Bin 5376 -> 0 bytes
 .../tests/data/wycheproof-256_fail.blb        | Bin 0 -> 919 bytes
 .../tests/data/wycheproof-256_pass.blb        | Bin 0 -> 4391 bytes
 aes-gcm/tests/aes128gcm.rs                    |   3 +-
 aes-gcm/tests/aes256gcm.rs                    |   3 +-
 aes-gcm/tests/data/wycheproof-128.blb         | Bin 4150 -> 0 bytes
 aes-gcm/tests/data/wycheproof-128_fail.blb    | Bin 0 -> 1049 bytes
 aes-gcm/tests/data/wycheproof-128_pass.blb    | Bin 0 -> 3050 bytes
 aes-gcm/tests/data/wycheproof-256.blb         | Bin 4385 -> 0 bytes
 aes-gcm/tests/data/wycheproof-256_fail.blb    | Bin 0 -> 1065 bytes
 aes-gcm/tests/data/wycheproof-256_pass.blb    | Bin 0 -> 3270 bytes
 aes-siv/tests/data/wycheproof-256.blb         | Bin 7074 -> 0 bytes
 aes-siv/tests/data/wycheproof-256_fail.blb    | Bin 0 -> 3539 bytes
 aes-siv/tests/data/wycheproof-256_pass.blb    | Bin 0 -> 3419 bytes
 aes-siv/tests/data/wycheproof-512.blb         | Bin 7957 -> 0 bytes
 aes-siv/tests/data/wycheproof-512_fail.blb    | Bin 0 -> 3571 bytes
 aes-siv/tests/data/wycheproof-512_pass.blb    | Bin 0 -> 4303 bytes
 aes-siv/tests/siv.rs                          |  41 ++++--
 ascon-aead128/tests/data/reference_kats.blb   | Bin 42640 -> 0 bytes
 .../tests/data/reference_kats_fail.blb        | Bin 0 -> 2 bytes
 .../tests/data/reference_kats_pass.blb        | Bin 0 -> 41516 bytes
 ascon-aead128/tests/reference_kats.rs         |  11 +-
 ccm/tests/data/cavp_ccm_aes128_10_13.blb      | Bin 995 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_10_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_10_13_pass.blb | Bin 0 -> 983 bytes
 ccm/tests/data/cavp_ccm_aes128_12_13.blb      | Bin 1015 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_12_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_12_13_pass.blb | Bin 0 -> 1003 bytes
 ccm/tests/data/cavp_ccm_aes128_14_13.blb      | Bin 1035 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_14_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_14_13_pass.blb | Bin 0 -> 1023 bytes
 ccm/tests/data/cavp_ccm_aes128_16_10.blb      | Bin 1141 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_16_10_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_16_10_pass.blb | Bin 0 -> 1129 bytes
 ccm/tests/data/cavp_ccm_aes128_16_11.blb      | Bin 1151 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_16_11_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_16_11_pass.blb | Bin 0 -> 1139 bytes
 ccm/tests/data/cavp_ccm_aes128_16_12.blb      | Bin 1161 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_16_12_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_16_12_pass.blb | Bin 0 -> 1149 bytes
 ccm/tests/data/cavp_ccm_aes128_16_13.blb      | Bin 56527 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_16_13_fail.blb | Bin 0 -> 2699 bytes
 ccm/tests/data/cavp_ccm_aes128_16_13_pass.blb | Bin 0 -> 53311 bytes
 ccm/tests/data/cavp_ccm_aes128_16_7.blb       | Bin 4797 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_16_7_fail.blb  | Bin 0 -> 2459 bytes
 ccm/tests/data/cavp_ccm_aes128_16_7_pass.blb  | Bin 0 -> 2477 bytes
 ccm/tests/data/cavp_ccm_aes128_16_8.blb       | Bin 1121 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_16_8_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_16_8_pass.blb  | Bin 0 -> 1109 bytes
 ccm/tests/data/cavp_ccm_aes128_16_9.blb       | Bin 1131 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_16_9_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_16_9_pass.blb  | Bin 0 -> 1119 bytes
 ccm/tests/data/cavp_ccm_aes128_4_13.blb       | Bin 4243 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_4_13_fail.blb  | Bin 0 -> 2219 bytes
 ccm/tests/data/cavp_ccm_aes128_4_13_pass.blb  | Bin 0 -> 2163 bytes
 ccm/tests/data/cavp_ccm_aes128_4_7.blb        | Bin 2970 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_4_7_fail.blb   | Bin 0 -> 1979 bytes
 ccm/tests/data/cavp_ccm_aes128_4_7_pass.blb   | Bin 0 -> 1139 bytes
 ccm/tests/data/cavp_ccm_aes128_6_13.blb       | Bin 955 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_6_13_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_6_13_pass.blb  | Bin 0 -> 943 bytes
 ccm/tests/data/cavp_ccm_aes128_8_13.blb       | Bin 975 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes128_8_13_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes128_8_13_pass.blb  | Bin 0 -> 963 bytes
 ccm/tests/data/cavp_ccm_aes192_10_13.blb      | Bin 1003 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_10_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_10_13_pass.blb | Bin 0 -> 991 bytes
 ccm/tests/data/cavp_ccm_aes192_12_13.blb      | Bin 1023 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_12_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_12_13_pass.blb | Bin 0 -> 1011 bytes
 ccm/tests/data/cavp_ccm_aes192_14_13.blb      | Bin 1043 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_14_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_14_13_pass.blb | Bin 0 -> 1031 bytes
 ccm/tests/data/cavp_ccm_aes192_16_10.blb      | Bin 1149 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_16_10_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_16_10_pass.blb | Bin 0 -> 1137 bytes
 ccm/tests/data/cavp_ccm_aes192_16_11.blb      | Bin 1159 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_16_11_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_16_11_pass.blb | Bin 0 -> 1147 bytes
 ccm/tests/data/cavp_ccm_aes192_16_12.blb      | Bin 1169 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_16_12_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_16_12_pass.blb | Bin 0 -> 1157 bytes
 ccm/tests/data/cavp_ccm_aes192_16_13.blb      | Bin 56960 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_16_13_fail.blb | Bin 0 -> 2731 bytes
 ccm/tests/data/cavp_ccm_aes192_16_13_pass.blb | Bin 0 -> 53748 bytes
 ccm/tests/data/cavp_ccm_aes192_16_7.blb       | Bin 4837 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_16_7_fail.blb  | Bin 0 -> 2491 bytes
 ccm/tests/data/cavp_ccm_aes192_16_7_pass.blb  | Bin 0 -> 2517 bytes
 ccm/tests/data/cavp_ccm_aes192_16_8.blb       | Bin 1129 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_16_8_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_16_8_pass.blb  | Bin 0 -> 1117 bytes
 ccm/tests/data/cavp_ccm_aes192_16_9.blb       | Bin 1139 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_16_9_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_16_9_pass.blb  | Bin 0 -> 1127 bytes
 ccm/tests/data/cavp_ccm_aes192_4_13.blb       | Bin 4283 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_4_13_fail.blb  | Bin 0 -> 2251 bytes
 ccm/tests/data/cavp_ccm_aes192_4_13_pass.blb  | Bin 0 -> 2203 bytes
 ccm/tests/data/cavp_ccm_aes192_4_7.blb        | Bin 3002 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_4_7_fail.blb   | Bin 0 -> 2011 bytes
 ccm/tests/data/cavp_ccm_aes192_4_7_pass.blb   | Bin 0 -> 1171 bytes
 ccm/tests/data/cavp_ccm_aes192_6_13.blb       | Bin 963 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_6_13_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_6_13_pass.blb  | Bin 0 -> 951 bytes
 ccm/tests/data/cavp_ccm_aes192_8_13.blb       | Bin 983 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes192_8_13_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes192_8_13_pass.blb  | Bin 0 -> 971 bytes
 ccm/tests/data/cavp_ccm_aes256_10_13.blb      | Bin 1011 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_10_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_10_13_pass.blb | Bin 0 -> 999 bytes
 ccm/tests/data/cavp_ccm_aes256_12_13.blb      | Bin 1031 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_12_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_12_13_pass.blb | Bin 0 -> 1019 bytes
 ccm/tests/data/cavp_ccm_aes256_14_13.blb      | Bin 1051 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_14_13_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_14_13_pass.blb | Bin 0 -> 1039 bytes
 ccm/tests/data/cavp_ccm_aes256_16_10.blb      | Bin 1157 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_16_10_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_16_10_pass.blb | Bin 0 -> 1145 bytes
 ccm/tests/data/cavp_ccm_aes256_16_11.blb      | Bin 1167 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_16_11_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_16_11_pass.blb | Bin 0 -> 1155 bytes
 ccm/tests/data/cavp_ccm_aes256_16_12.blb      | Bin 1177 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_16_12_fail.blb | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_16_12_pass.blb | Bin 0 -> 1165 bytes
 ccm/tests/data/cavp_ccm_aes256_16_13.blb      | Bin 57486 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_16_13_fail.blb | Bin 0 -> 2859 bytes
 ccm/tests/data/cavp_ccm_aes256_16_13_pass.blb | Bin 0 -> 54262 bytes
 ccm/tests/data/cavp_ccm_aes256_16_7.blb       | Bin 4881 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_16_7_fail.blb  | Bin 0 -> 2619 bytes
 ccm/tests/data/cavp_ccm_aes256_16_7_pass.blb  | Bin 0 -> 2557 bytes
 ccm/tests/data/cavp_ccm_aes256_16_8.blb       | Bin 1137 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_16_8_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_16_8_pass.blb  | Bin 0 -> 1125 bytes
 ccm/tests/data/cavp_ccm_aes256_16_9.blb       | Bin 1147 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_16_9_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_16_9_pass.blb  | Bin 0 -> 1135 bytes
 ccm/tests/data/cavp_ccm_aes256_4_13.blb       | Bin 4327 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_4_13_fail.blb  | Bin 0 -> 2379 bytes
 ccm/tests/data/cavp_ccm_aes256_4_13_pass.blb  | Bin 0 -> 2243 bytes
 ccm/tests/data/cavp_ccm_aes256_4_7.blb        | Bin 3038 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_4_7_fail.blb   | Bin 0 -> 2139 bytes
 ccm/tests/data/cavp_ccm_aes256_4_7_pass.blb   | Bin 0 -> 1203 bytes
 ccm/tests/data/cavp_ccm_aes256_6_13.blb       | Bin 971 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_6_13_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_6_13_pass.blb  | Bin 0 -> 959 bytes
 ccm/tests/data/cavp_ccm_aes256_8_13.blb       | Bin 991 -> 0 bytes
 ccm/tests/data/cavp_ccm_aes256_8_13_fail.blb  | Bin 0 -> 2 bytes
 ccm/tests/data/cavp_ccm_aes256_8_13_pass.blb  | Bin 0 -> 979 bytes
 ccm/tests/data/rfc3610_ccm_aes128_10_13.blb   | Bin 996 -> 0 bytes
 .../data/rfc3610_ccm_aes128_10_13_fail.blb    | Bin 0 -> 2 bytes
 .../data/rfc3610_ccm_aes128_10_13_pass.blb    | Bin 0 -> 982 bytes
 ccm/tests/data/rfc3610_ccm_aes128_8_13.blb    | Bin 972 -> 0 bytes
 .../data/rfc3610_ccm_aes128_8_13_fail.blb     | Bin 0 -> 2 bytes
 .../data/rfc3610_ccm_aes128_8_13_pass.blb     | Bin 0 -> 958 bytes
 ccm/tests/mod.rs                              | 132 ++++++++++++------
 .../data/wycheproof_chacha20poly1305.blb      | Bin 41626 -> 0 bytes
 .../data/wycheproof_chacha20poly1305_fail.blb | Bin 0 -> 2344 bytes
 .../data/wycheproof_chacha20poly1305_pass.blb | Bin 0 -> 39033 bytes
 .../data/wycheproof_xchacha20poly1305.blb     | Bin 39296 -> 0 bytes
 .../wycheproof_xchacha20poly1305_fail.blb     | Bin 0 -> 2356 bytes
 .../wycheproof_xchacha20poly1305_pass.blb     | Bin 0 -> 36716 bytes
 chacha20poly1305/tests/lib.rs                 |  22 ++-
 eax/tests/aes128eax.rs                        |   3 +-
 eax/tests/data/aes128eax.blb                  | Bin 832 -> 0 bytes
 eax/tests/data/aes128eax_fail.blb             | Bin 0 -> 2 bytes
 eax/tests/data/aes128eax_pass.blb             | Bin 0 -> 820 bytes
 ocb3/tests/data/rfc7253_ocb_aes.blb           | Bin 913 -> 0 bytes
 ocb3/tests/data/rfc7253_ocb_aes_fail.blb      | Bin 0 -> 2 bytes
 ocb3/tests/data/rfc7253_ocb_aes_pass.blb      | Bin 0 -> 895 bytes
 ocb3/tests/kats.rs                            |   3 +-
 177 files changed, 158 insertions(+), 71 deletions(-)
 delete mode 100644 aes-gcm-siv/tests/data/wycheproof-128.blb
 create mode 100644 aes-gcm-siv/tests/data/wycheproof-128_fail.blb
 create mode 100644 aes-gcm-siv/tests/data/wycheproof-128_pass.blb
 delete mode 100644 aes-gcm-siv/tests/data/wycheproof-256.blb
 create mode 100644 aes-gcm-siv/tests/data/wycheproof-256_fail.blb
 create mode 100644 aes-gcm-siv/tests/data/wycheproof-256_pass.blb
 delete mode 100644 aes-gcm/tests/data/wycheproof-128.blb
 create mode 100644 aes-gcm/tests/data/wycheproof-128_fail.blb
 create mode 100644 aes-gcm/tests/data/wycheproof-128_pass.blb
 delete mode 100644 aes-gcm/tests/data/wycheproof-256.blb
 create mode 100644 aes-gcm/tests/data/wycheproof-256_fail.blb
 create mode 100644 aes-gcm/tests/data/wycheproof-256_pass.blb
 delete mode 100644 aes-siv/tests/data/wycheproof-256.blb
 create mode 100644 aes-siv/tests/data/wycheproof-256_fail.blb
 create mode 100644 aes-siv/tests/data/wycheproof-256_pass.blb
 delete mode 100644 aes-siv/tests/data/wycheproof-512.blb
 create mode 100644 aes-siv/tests/data/wycheproof-512_fail.blb
 create mode 100644 aes-siv/tests/data/wycheproof-512_pass.blb
 delete mode 100644 ascon-aead128/tests/data/reference_kats.blb
 create mode 100644 ascon-aead128/tests/data/reference_kats_fail.blb
 create mode 100644 ascon-aead128/tests/data/reference_kats_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_10_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_10_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_10_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_12_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_12_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_12_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_14_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_14_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_14_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_16_10.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_10_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_10_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_16_11.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_11_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_11_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_16_12.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_12_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_12_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_16_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_16_7.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_7_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_7_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_16_8.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_8_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_8_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_16_9.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_9_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_16_9_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_4_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_4_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_4_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_4_7.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_4_7_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_4_7_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_6_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_6_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_6_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes128_8_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_8_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes128_8_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_10_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_10_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_10_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_12_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_12_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_12_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_14_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_14_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_14_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_16_10.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_10_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_10_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_16_11.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_11_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_11_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_16_12.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_12_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_12_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_16_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_16_7.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_7_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_7_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_16_8.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_8_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_8_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_16_9.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_9_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_16_9_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_4_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_4_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_4_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_4_7.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_4_7_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_4_7_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_6_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_6_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_6_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes192_8_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_8_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes192_8_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_10_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_10_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_10_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_12_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_12_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_12_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_14_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_14_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_14_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_16_10.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_10_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_10_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_16_11.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_11_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_11_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_16_12.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_12_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_12_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_16_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_16_7.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_7_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_7_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_16_8.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_8_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_8_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_16_9.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_9_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_16_9_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_4_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_4_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_4_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_4_7.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_4_7_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_4_7_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_6_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_6_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_6_13_pass.blb
 delete mode 100644 ccm/tests/data/cavp_ccm_aes256_8_13.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_8_13_fail.blb
 create mode 100644 ccm/tests/data/cavp_ccm_aes256_8_13_pass.blb
 delete mode 100644 ccm/tests/data/rfc3610_ccm_aes128_10_13.blb
 create mode 100644 ccm/tests/data/rfc3610_ccm_aes128_10_13_fail.blb
 create mode 100644 ccm/tests/data/rfc3610_ccm_aes128_10_13_pass.blb
 delete mode 100644 ccm/tests/data/rfc3610_ccm_aes128_8_13.blb
 create mode 100644 ccm/tests/data/rfc3610_ccm_aes128_8_13_fail.blb
 create mode 100644 ccm/tests/data/rfc3610_ccm_aes128_8_13_pass.blb
 delete mode 100644 chacha20poly1305/tests/data/wycheproof_chacha20poly1305.blb
 create mode 100644 chacha20poly1305/tests/data/wycheproof_chacha20poly1305_fail.blb
 create mode 100644 chacha20poly1305/tests/data/wycheproof_chacha20poly1305_pass.blb
 delete mode 100644 chacha20poly1305/tests/data/wycheproof_xchacha20poly1305.blb
 create mode 100644 chacha20poly1305/tests/data/wycheproof_xchacha20poly1305_fail.blb
 create mode 100644 chacha20poly1305/tests/data/wycheproof_xchacha20poly1305_pass.blb
 delete mode 100644 eax/tests/data/aes128eax.blb
 create mode 100644 eax/tests/data/aes128eax_fail.blb
 create mode 100644 eax/tests/data/aes128eax_pass.blb
 delete mode 100644 ocb3/tests/data/rfc7253_ocb_aes.blb
 create mode 100644 ocb3/tests/data/rfc7253_ocb_aes_fail.blb
 create mode 100644 ocb3/tests/data/rfc7253_ocb_aes_pass.blb

diff --git a/Cargo.lock b/Cargo.lock
index 818b157b..9830ebef 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6,7 +6,7 @@ version = 4
 [[package]]
 name = "aead"
 version = "0.6.0-rc.2"
-source = "git+https://github.com/RustCrypto/traits.git#219861dfcde81d2410dec55e64065e4c573c7be6"
+source = "git+https://github.com/RustCrypto/traits.git#aae99a0014abd27bf73a31b2c810ffe0b86989bb"
 dependencies = [
  "arrayvec",
  "blobby",
@@ -239,7 +239,7 @@ dependencies = [
 [[package]]
 name = "crypto-common"
 version = "0.2.0-rc.4"
-source = "git+https://github.com/RustCrypto/traits.git#219861dfcde81d2410dec55e64065e4c573c7be6"
+source = "git+https://github.com/RustCrypto/traits.git#aae99a0014abd27bf73a31b2c810ffe0b86989bb"
 dependencies = [
  "hybrid-array",
  "rand_core",
diff --git a/Cargo.toml b/Cargo.toml
index 052013a8..382379e3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -19,5 +19,6 @@ members = [
 aead-stream = { path = "aead-stream" }
 aes-gcm = { path = "aes-gcm" }
 
+# https://github.com/RustCrypto/traits/pull/2019
 aead = { git = "https://github.com/RustCrypto/traits.git" }
 crypto-common = { git = "https://github.com/RustCrypto/traits.git" }
diff --git a/aes-gcm-siv/tests/aes128gcmsiv.rs b/aes-gcm-siv/tests/aes128gcmsiv.rs
index 9d8ddc17..180f71f9 100644
--- a/aes-gcm-siv/tests/aes128gcmsiv.rs
+++ b/aes-gcm-siv/tests/aes128gcmsiv.rs
@@ -185,4 +185,5 @@ const TEST_VECTORS: &[TestVector<[u8; 16]>] = &[
 tests!(Aes128GcmSiv, TEST_VECTORS);
 
 // Test vectors from Wycheproof
-aead::new_test!(wycheproof, "wycheproof-128", Aes128GcmSiv);
+aead::new_pass_test!(wycheproof_pass, "wycheproof-128_pass", Aes128GcmSiv);
+aead::new_fail_test!(wycheproof_fail, "wycheproof-128_fail", Aes128GcmSiv);
diff --git a/aes-gcm-siv/tests/aes256gcmsiv.rs b/aes-gcm-siv/tests/aes256gcmsiv.rs
index d4ca791e..58719d65 100644
--- a/aes-gcm-siv/tests/aes256gcmsiv.rs
+++ b/aes-gcm-siv/tests/aes256gcmsiv.rs
@@ -185,4 +185,5 @@ const TEST_VECTORS: &[TestVector<[u8; 32]>] = &[
 tests!(Aes256GcmSiv, TEST_VECTORS);
 
 // Test vectors from Wycheproof
-aead::new_test!(wycheproof, "wycheproof-256", Aes256GcmSiv);
+aead::new_pass_test!(wycheproof_pass, "wycheproof-256_pass", Aes256GcmSiv);
+aead::new_fail_test!(wycheproof_fail, "wycheproof-256_fail", Aes256GcmSiv);
diff --git a/aes-gcm-siv/tests/data/wycheproof-128.blb b/aes-gcm-siv/tests/data/wycheproof-128.blb
deleted file mode 100644
index ef8716fb87af3e710735e2dd6455324331958b64..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/aes-gcm-siv/tests/data/wycheproof-128_fail.blb b/aes-gcm-siv/tests/data/wycheproof-128_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..265742f0476435e4c17a7717dcd02a3972bdd869
GIT binary patch
diff --git a/aes-gcm-siv/tests/data/wycheproof-128_pass.blb b/aes-gcm-siv/tests/data/wycheproof-128_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..92508b86327f275422af7f91deeb6667774d2890
GIT binary patch
diff --git a/aes-gcm-siv/tests/data/wycheproof-256.blb b/aes-gcm-siv/tests/data/wycheproof-256.blb
deleted file mode 100644
index f3642a48dee0ae5ccddaae93fc52bfaa8cc3e805..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/aes-gcm-siv/tests/data/wycheproof-256_fail.blb b/aes-gcm-siv/tests/data/wycheproof-256_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..1ca0b0ca5c6092a450b160650c1a59d051c77adb
GIT binary patch
diff --git a/aes-gcm-siv/tests/data/wycheproof-256_pass.blb b/aes-gcm-siv/tests/data/wycheproof-256_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..11d19dedb22ee394b763b8489095043a7f700918
GIT binary patch
diff --git a/aes-gcm/tests/aes128gcm.rs b/aes-gcm/tests/aes128gcm.rs
index 819a631b..475f2f2b 100644
--- a/aes-gcm/tests/aes128gcm.rs
+++ b/aes-gcm/tests/aes128gcm.rs
@@ -3621,4 +3621,5 @@ const TEST_VECTORS: &[TestVector<[u8; 16], [u8; 12]>] = &[
 tests!(Aes128Gcm, TEST_VECTORS);
 
 // Test vectors from Wycheproof
-aead::new_test!(wycheproof, "wycheproof-128", Aes128Gcm);
+aead::new_pass_test!(wycheproof_pass, "wycheproof-128_pass", Aes128Gcm);
+aead::new_fail_test!(wycheproof_fail, "wycheproof-128_fail", Aes128Gcm);
diff --git a/aes-gcm/tests/aes256gcm.rs b/aes-gcm/tests/aes256gcm.rs
index 7f0ea0b5..b9910d32 100644
--- a/aes-gcm/tests/aes256gcm.rs
+++ b/aes-gcm/tests/aes256gcm.rs
@@ -3621,4 +3621,5 @@ const TEST_VECTORS: &[TestVector<[u8; 32], [u8; 12]>] = &[
 tests!(Aes256Gcm, TEST_VECTORS);
 
 // Test vectors from Wycheproof
-aead::new_test!(wycheproof, "wycheproof-256", Aes256Gcm);
+aead::new_pass_test!(wycheproof_pass, "wycheproof-256_pass", Aes256Gcm);
+aead::new_fail_test!(wycheproof_fail, "wycheproof-256_fail", Aes256Gcm);
diff --git a/aes-gcm/tests/data/wycheproof-128.blb b/aes-gcm/tests/data/wycheproof-128.blb
deleted file mode 100644
index 439c0c5f8d2c71d230df96429036a6d169ed98ab..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/aes-gcm/tests/data/wycheproof-128_fail.blb b/aes-gcm/tests/data/wycheproof-128_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..31a8013c7661c7d603bc33a7af82715a7197a605
GIT binary patch
diff --git a/aes-gcm/tests/data/wycheproof-128_pass.blb b/aes-gcm/tests/data/wycheproof-128_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..854c459b31a1a19ed265a213bfd535d815f08e1d
GIT binary patch
diff --git a/aes-gcm/tests/data/wycheproof-256.blb b/aes-gcm/tests/data/wycheproof-256.blb
deleted file mode 100644
index 629d65bb968e8be436abd4b944ffe4f42d54cfe1..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/aes-gcm/tests/data/wycheproof-256_fail.blb b/aes-gcm/tests/data/wycheproof-256_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..ed43e2cc4e70124a8c6f33ac8fd22d70d4e2e63b
GIT binary patch
diff --git a/aes-gcm/tests/data/wycheproof-256_pass.blb b/aes-gcm/tests/data/wycheproof-256_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..5070310764784b070649193b8dc57f22ba09cecb
GIT binary patch
diff --git a/aes-siv/tests/data/wycheproof-256.blb b/aes-siv/tests/data/wycheproof-256.blb
deleted file mode 100644
index 1e31f077aa0bd94bf55661831a56caf5ff137704..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/aes-siv/tests/data/wycheproof-256_fail.blb b/aes-siv/tests/data/wycheproof-256_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..cf4d1f340ac79cc2074d58b81f68192435dc16b4
GIT binary patch
diff --git a/aes-siv/tests/data/wycheproof-256_pass.blb b/aes-siv/tests/data/wycheproof-256_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..9fcb1e3dbebb62d1163812b74d4a30f3be28d9c3
GIT binary patch
diff --git a/aes-siv/tests/data/wycheproof-512.blb b/aes-siv/tests/data/wycheproof-512.blb
deleted file mode 100644
index d4ca3b1aec6f2a9e29e92a724bc7ffca5644ba02..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/aes-siv/tests/data/wycheproof-512_fail.blb b/aes-siv/tests/data/wycheproof-512_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..7ae8ce1ab34e69d14fba4a8bdfdcd595cb56d3ed
GIT binary patch
diff --git a/aes-siv/tests/data/wycheproof-512_pass.blb b/aes-siv/tests/data/wycheproof-512_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..6debeb73617711485cf7581eb783513366360fba
GIT binary patch
diff --git a/aes-siv/tests/siv.rs b/aes-siv/tests/siv.rs
index e06c7b4f..43777580 100644
--- a/aes-siv/tests/siv.rs
+++ b/aes-siv/tests/siv.rs
@@ -50,7 +50,7 @@ macro_rules! tests {
 }
 
 macro_rules! wycheproof_tests {
-    ($siv:ty, $name:ident, $test_name:expr) => {
+    ($siv:ty, $name:ident, $test_name:expr, pass = $pass:expr) => {
         #[test]
         fn $name() {
             use aead::dev::TestVector;
@@ -58,7 +58,7 @@ macro_rules! wycheproof_tests {
             aead::dev::blobby::parse_into_structs!(
                 include_bytes!(concat!("data/", $test_name, ".blb"));
                 static TEST_VECTORS: &[
-                    TestVector { key, nonce, aad, plaintext, ciphertext, pass }
+                    TestVector { key, nonce, aad, plaintext, ciphertext }
                 ];
             );
 
@@ -93,13 +93,8 @@ macro_rules! wycheproof_tests {
             }
 
             for (i, row) in TEST_VECTORS.iter().enumerate() {
-                let &TestVector{ key, aad, plaintext: pt, ciphertext: ct, pass, ..} = row;
-                let pass = match pass[0] {
-                    0 => false,
-                    1 => true,
-                    _ => panic!("invalid value for pass flag"),
-                };
-                if let Some(desc) = run_test(key, aad, pt, ct, pass) {
+                let &TestVector{ key, aad, plaintext: pt, ciphertext: ct, ..} = row;
+                if let Some(desc) = run_test(key, aad, pt, ct, $pass) {
                     panic!(
                         "\n\
                          Failed test №{}: {}\n\
@@ -108,7 +103,7 @@ macro_rules! wycheproof_tests {
                          pt:\t{:?}\n\
                          ct:\t{:?}\n\
                          pass:\t{:?}\n",
-                        i, desc, key, aad, pt, ct, pass,
+                        i, desc, key, aad, pt, ct, $pass,
                     );
                 }
             }
@@ -161,7 +156,18 @@ mod aes128cmacsiv {
 
     tests!(Aes128Siv, TEST_VECTORS);
 
-    wycheproof_tests!(Aes128Siv, wycheproof, "wycheproof-256");
+    wycheproof_tests!(
+        Aes128Siv,
+        wycheproof_pass,
+        "wycheproof-256_pass",
+        pass = true
+    );
+    wycheproof_tests!(
+        Aes128Siv,
+        wycheproof_fail,
+        "wycheproof-256_fail",
+        pass = false
+    );
 }
 
 mod aes256cmacsiv {
@@ -201,7 +207,18 @@ mod aes256cmacsiv {
 
     tests!(Aes256Siv, TEST_VECTORS);
 
-    wycheproof_tests!(Aes256Siv, wycheproof, "wycheproof-512");
+    wycheproof_tests!(
+        Aes256Siv,
+        wycheproof_pass,
+        "wycheproof-512_pass",
+        pass = true
+    );
+    wycheproof_tests!(
+        Aes256Siv,
+        wycheproof_fail,
+        "wycheproof-512_fail",
+        pass = false
+    );
 }
 
 #[cfg(feature = "pmac")]
diff --git a/ascon-aead128/tests/data/reference_kats.blb b/ascon-aead128/tests/data/reference_kats.blb
deleted file mode 100644
index 15b3c4f071a93036b37055c1995becd5a21beb73..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ascon-aead128/tests/data/reference_kats_fail.blb b/ascon-aead128/tests/data/reference_kats_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ascon-aead128/tests/data/reference_kats_pass.blb b/ascon-aead128/tests/data/reference_kats_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..f026fafd69a474931c89589b5b8458db8da86b97
GIT binary patch
diff --git a/ascon-aead128/tests/reference_kats.rs b/ascon-aead128/tests/reference_kats.rs
index 82c6c73e..3e72a6bf 100644
--- a/ascon-aead128/tests/reference_kats.rs
+++ b/ascon-aead128/tests/reference_kats.rs
@@ -2,4 +2,13 @@ use ascon_aead128::AsconAead128;
 
 // Test vectors are taken from the reference Ascon implementation:
 // https://github.com/ascon/ascon-c/blob/fdfca408/crypto_aead/asconaead128/LWC_AEAD_KAT_128_128.txt
-aead::new_test!(ascon_aead_reference_kats, "reference_kats", AsconAead128);
+aead::new_pass_test!(
+    ascon_aead_reference_kats_pass,
+    "reference_kats_pass",
+    AsconAead128
+);
+aead::new_fail_test!(
+    ascon_aead_reference_kats_fail,
+    "reference_kats_fail",
+    AsconAead128
+);
diff --git a/ccm/tests/data/cavp_ccm_aes128_10_13.blb b/ccm/tests/data/cavp_ccm_aes128_10_13.blb
deleted file mode 100644
index e5fe5b58c129504da3540f13f31ec7213f1c48b1..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_10_13_fail.blb b/ccm/tests/data/cavp_ccm_aes128_10_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_10_13_pass.blb b/ccm/tests/data/cavp_ccm_aes128_10_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..f48a9a0a852f9c5a9fa68bf0bd14cc64e81cbf81
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_12_13.blb b/ccm/tests/data/cavp_ccm_aes128_12_13.blb
deleted file mode 100644
index a20575a2672e56e70d535c66d1b551de9e6b5668..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_12_13_fail.blb b/ccm/tests/data/cavp_ccm_aes128_12_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_12_13_pass.blb b/ccm/tests/data/cavp_ccm_aes128_12_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..5fb6a0f9159af9db7783ae6d4d48299ed44fad84
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_14_13.blb b/ccm/tests/data/cavp_ccm_aes128_14_13.blb
deleted file mode 100644
index 5378204443dce29efb6562095f2d28ce18327751..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_14_13_fail.blb b/ccm/tests/data/cavp_ccm_aes128_14_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_14_13_pass.blb b/ccm/tests/data/cavp_ccm_aes128_14_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..ce0ea52126a5e7607be28d381d91b9b7d82c8497
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_10.blb b/ccm/tests/data/cavp_ccm_aes128_16_10.blb
deleted file mode 100644
index 3bebc5b01d385e1758254fe7ff8ae2290d0743a6..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_10_fail.blb b/ccm/tests/data/cavp_ccm_aes128_16_10_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_10_pass.blb b/ccm/tests/data/cavp_ccm_aes128_16_10_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..1e8ebd87d169f617880505461b5c5bc2a5243bc8
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_11.blb b/ccm/tests/data/cavp_ccm_aes128_16_11.blb
deleted file mode 100644
index 1c59b1d494625373549147b2aa6bb73ecc46b86a..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_11_fail.blb b/ccm/tests/data/cavp_ccm_aes128_16_11_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_11_pass.blb b/ccm/tests/data/cavp_ccm_aes128_16_11_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..81cebe2a921871940760f8e94752cb62cfe921a5
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_12.blb b/ccm/tests/data/cavp_ccm_aes128_16_12.blb
deleted file mode 100644
index 59d29c9cd6389d8db102b55a0639705c4587d10b..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_12_fail.blb b/ccm/tests/data/cavp_ccm_aes128_16_12_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_12_pass.blb b/ccm/tests/data/cavp_ccm_aes128_16_12_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..23d67160d417f72a591ec555b85eccb33aace3c6
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_13.blb b/ccm/tests/data/cavp_ccm_aes128_16_13.blb
deleted file mode 100644
index afe873693e535be51430f2cae704e80301f92e12..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_13_fail.blb b/ccm/tests/data/cavp_ccm_aes128_16_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..db979ae5e21e8e390d7c89df0a94efd035371e63
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_13_pass.blb b/ccm/tests/data/cavp_ccm_aes128_16_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..9521ebf4321cce20dc803b2cf6c677fe9ff540b1
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_7.blb b/ccm/tests/data/cavp_ccm_aes128_16_7.blb
deleted file mode 100644
index 2ea0bfe7492e812da6a5374b396d72154e176e1f..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_7_fail.blb b/ccm/tests/data/cavp_ccm_aes128_16_7_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..d4b0bab50794db6c63a66dcc628492aee2da5e84
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_7_pass.blb b/ccm/tests/data/cavp_ccm_aes128_16_7_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..eb903a1c6f2b7ceb0f629742cedc93ecca20233d
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_8.blb b/ccm/tests/data/cavp_ccm_aes128_16_8.blb
deleted file mode 100644
index 51b0556871e8b5eeb7d1360ba3e3cd097048c446..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_8_fail.blb b/ccm/tests/data/cavp_ccm_aes128_16_8_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_8_pass.blb b/ccm/tests/data/cavp_ccm_aes128_16_8_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..ab5ce46718c119c1d237c9f99f1a87f035d0b56d
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_9.blb b/ccm/tests/data/cavp_ccm_aes128_16_9.blb
deleted file mode 100644
index e6d27f126a85be6501385910234cdaa30f766081..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_9_fail.blb b/ccm/tests/data/cavp_ccm_aes128_16_9_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_16_9_pass.blb b/ccm/tests/data/cavp_ccm_aes128_16_9_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..ffff96e26100eca62879e04bf791e19b70f0f288
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_4_13.blb b/ccm/tests/data/cavp_ccm_aes128_4_13.blb
deleted file mode 100644
index 0214231071a32e157584c647bfc65ec0ad93b9d8..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_4_13_fail.blb b/ccm/tests/data/cavp_ccm_aes128_4_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..34c61d90bad1d71f717b57a86a4da5a06d464570
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_4_13_pass.blb b/ccm/tests/data/cavp_ccm_aes128_4_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..9a8fb55399d61b440445945f32ce996c470136db
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_4_7.blb b/ccm/tests/data/cavp_ccm_aes128_4_7.blb
deleted file mode 100644
index e79768d22158e6bea88c0c362e120f8b1e8f6b56..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_4_7_fail.blb b/ccm/tests/data/cavp_ccm_aes128_4_7_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..493d8dc9c26d48f90cb7bc4119b5973eadbb89b4
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_4_7_pass.blb b/ccm/tests/data/cavp_ccm_aes128_4_7_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..36b62e81e62f6986a4d832c82c4e1dac3bcbff2e
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_6_13.blb b/ccm/tests/data/cavp_ccm_aes128_6_13.blb
deleted file mode 100644
index 8f5c235b122807bd10eb9849d94011c737e865bf..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_6_13_fail.blb b/ccm/tests/data/cavp_ccm_aes128_6_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_6_13_pass.blb b/ccm/tests/data/cavp_ccm_aes128_6_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..50481517e7ea560750e588d7485f824c0059ac86
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_8_13.blb b/ccm/tests/data/cavp_ccm_aes128_8_13.blb
deleted file mode 100644
index ad474ce51706946fb2c689c94252d9c9c2a84171..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_8_13_fail.blb b/ccm/tests/data/cavp_ccm_aes128_8_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes128_8_13_pass.blb b/ccm/tests/data/cavp_ccm_aes128_8_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..445dabe3000aadcf97c67c59a41636d8c6ac1f66
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_10_13.blb b/ccm/tests/data/cavp_ccm_aes192_10_13.blb
deleted file mode 100644
index fab5851234a63f7979afe7af4686256692292d3a..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_10_13_fail.blb b/ccm/tests/data/cavp_ccm_aes192_10_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_10_13_pass.blb b/ccm/tests/data/cavp_ccm_aes192_10_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..bda3b8926f484bce60310a7bc6263c6c403d354b
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_12_13.blb b/ccm/tests/data/cavp_ccm_aes192_12_13.blb
deleted file mode 100644
index c5dd1735bc61c5c023de676743999e143c4d6243..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_12_13_fail.blb b/ccm/tests/data/cavp_ccm_aes192_12_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_12_13_pass.blb b/ccm/tests/data/cavp_ccm_aes192_12_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..f85f0a2b9c895ff76b4fe3374df48b8d6ae87327
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_14_13.blb b/ccm/tests/data/cavp_ccm_aes192_14_13.blb
deleted file mode 100644
index 38a968d13696b398ae3ac122e8af11204c1a827f..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_14_13_fail.blb b/ccm/tests/data/cavp_ccm_aes192_14_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_14_13_pass.blb b/ccm/tests/data/cavp_ccm_aes192_14_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..ac609108d0c5b1c3f467ef20bf2d7f48c7e1b8bb
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_10.blb b/ccm/tests/data/cavp_ccm_aes192_16_10.blb
deleted file mode 100644
index e8d1ce12e6ff10ab3abc426fd62f30f1a76b8c44..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_10_fail.blb b/ccm/tests/data/cavp_ccm_aes192_16_10_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_10_pass.blb b/ccm/tests/data/cavp_ccm_aes192_16_10_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..2717ec6ac72a9e0417110b3f41ef94534f11ad45
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_11.blb b/ccm/tests/data/cavp_ccm_aes192_16_11.blb
deleted file mode 100644
index 4ff17e45cb714d21dca8c36cd6738229b3d94ecc..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_11_fail.blb b/ccm/tests/data/cavp_ccm_aes192_16_11_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_11_pass.blb b/ccm/tests/data/cavp_ccm_aes192_16_11_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..d78eb7734fd8b9032690e893bb8a4f0b17609add
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_12.blb b/ccm/tests/data/cavp_ccm_aes192_16_12.blb
deleted file mode 100644
index 1198095234ae56edb4387733ca760618f0042645..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_12_fail.blb b/ccm/tests/data/cavp_ccm_aes192_16_12_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_12_pass.blb b/ccm/tests/data/cavp_ccm_aes192_16_12_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..9ade00d5ccdbcb46b4fdc3e6f1a5faa58bf93c85
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_13.blb b/ccm/tests/data/cavp_ccm_aes192_16_13.blb
deleted file mode 100644
index 9f95fdcee2bd2e9c80a7a002af9f6baa95c9db63..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_13_fail.blb b/ccm/tests/data/cavp_ccm_aes192_16_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..b2fc5f54fc3afb79eb34843f9dcb385ab1b1ecb3
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_13_pass.blb b/ccm/tests/data/cavp_ccm_aes192_16_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..d80c7db65af45cdcb9475e8be6fbf559fa273202
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_7.blb b/ccm/tests/data/cavp_ccm_aes192_16_7.blb
deleted file mode 100644
index 6f1764b5fb445d2b1ff2c37861e2a8b1998ef878..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_7_fail.blb b/ccm/tests/data/cavp_ccm_aes192_16_7_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f917f1d3fb57900a650781d7169c8a57987473
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_7_pass.blb b/ccm/tests/data/cavp_ccm_aes192_16_7_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..6c362dd37b56d5913cae8ce86d9152bdbd09fe58
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_8.blb b/ccm/tests/data/cavp_ccm_aes192_16_8.blb
deleted file mode 100644
index 9df598f8db8f49087e5f2519fc23f3b44bb8aeeb..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_8_fail.blb b/ccm/tests/data/cavp_ccm_aes192_16_8_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_8_pass.blb b/ccm/tests/data/cavp_ccm_aes192_16_8_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..de8998858f30749606ba4f81b7bc17bf6a22a496
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_9.blb b/ccm/tests/data/cavp_ccm_aes192_16_9.blb
deleted file mode 100644
index c78d002fd5a3b9ae5ae9600bcd80243dd0c454d6..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_9_fail.blb b/ccm/tests/data/cavp_ccm_aes192_16_9_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_16_9_pass.blb b/ccm/tests/data/cavp_ccm_aes192_16_9_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..7400d182f1effa12ddab9b3c4cd02d81e4755a3f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_4_13.blb b/ccm/tests/data/cavp_ccm_aes192_4_13.blb
deleted file mode 100644
index 501a7de25a2e907dc2a95428ed427464aa7c354d..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_4_13_fail.blb b/ccm/tests/data/cavp_ccm_aes192_4_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..b9aaeea7cadc6a895f55638e803988bab0931c9c
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_4_13_pass.blb b/ccm/tests/data/cavp_ccm_aes192_4_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..1b8581842457317fbd58a8c54ea147f4820d0575
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_4_7.blb b/ccm/tests/data/cavp_ccm_aes192_4_7.blb
deleted file mode 100644
index 3b14a62ce368e67f04c28ec9e98c766b40ff8e9b..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_4_7_fail.blb b/ccm/tests/data/cavp_ccm_aes192_4_7_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..74b43eae9ddaac5e99c82fffd21257002398bb71
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_4_7_pass.blb b/ccm/tests/data/cavp_ccm_aes192_4_7_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..ac71c8ba3d9a7df1aab39d30c5570c40eff641c0
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_6_13.blb b/ccm/tests/data/cavp_ccm_aes192_6_13.blb
deleted file mode 100644
index 32f063745f1cbd46925b8b0b105030ae7bd05b09..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_6_13_fail.blb b/ccm/tests/data/cavp_ccm_aes192_6_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_6_13_pass.blb b/ccm/tests/data/cavp_ccm_aes192_6_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..b546fbfac7dcbec0f26a828abdb012aab2369cb4
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_8_13.blb b/ccm/tests/data/cavp_ccm_aes192_8_13.blb
deleted file mode 100644
index a84e2a17e63a53585548e683e7b5934c83e5b923..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_8_13_fail.blb b/ccm/tests/data/cavp_ccm_aes192_8_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes192_8_13_pass.blb b/ccm/tests/data/cavp_ccm_aes192_8_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..762d2c738ece77cf255ce6ea226bc4beb41f8310
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_10_13.blb b/ccm/tests/data/cavp_ccm_aes256_10_13.blb
deleted file mode 100644
index def67e6ee51731ef21b9332746adde80b722a180..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_10_13_fail.blb b/ccm/tests/data/cavp_ccm_aes256_10_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_10_13_pass.blb b/ccm/tests/data/cavp_ccm_aes256_10_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..a979af7e1f674dcee936abeb300c2e2a9a022c65
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_12_13.blb b/ccm/tests/data/cavp_ccm_aes256_12_13.blb
deleted file mode 100644
index 9d92af39603ad2a24c5eed1213f425218e3296fe..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_12_13_fail.blb b/ccm/tests/data/cavp_ccm_aes256_12_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_12_13_pass.blb b/ccm/tests/data/cavp_ccm_aes256_12_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..e92d5a0c723760dce91f18490c8cb6072067309f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_14_13.blb b/ccm/tests/data/cavp_ccm_aes256_14_13.blb
deleted file mode 100644
index 6a32bd6052536ad82c7f42efa1ff70b9fefdbf03..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_14_13_fail.blb b/ccm/tests/data/cavp_ccm_aes256_14_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_14_13_pass.blb b/ccm/tests/data/cavp_ccm_aes256_14_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..5f4dcba317e752277ceb610755fada244d7f7e3f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_10.blb b/ccm/tests/data/cavp_ccm_aes256_16_10.blb
deleted file mode 100644
index c775a820973aa6a0e96a8fa42da98e551076a094..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_10_fail.blb b/ccm/tests/data/cavp_ccm_aes256_16_10_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_10_pass.blb b/ccm/tests/data/cavp_ccm_aes256_16_10_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..a3d4ac1295e4d449703631b5dd4bfc594f659122
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_11.blb b/ccm/tests/data/cavp_ccm_aes256_16_11.blb
deleted file mode 100644
index e4884f28b83b86855f51bd5bef9dd3106eb6dd55..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_11_fail.blb b/ccm/tests/data/cavp_ccm_aes256_16_11_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_11_pass.blb b/ccm/tests/data/cavp_ccm_aes256_16_11_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..5a8797afd4d4c6a3f3c7f590ac05142a2ff182d9
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_12.blb b/ccm/tests/data/cavp_ccm_aes256_16_12.blb
deleted file mode 100644
index 5f4ccac6645a2f4902ca118378e5a2a8aab731bd..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_12_fail.blb b/ccm/tests/data/cavp_ccm_aes256_16_12_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_12_pass.blb b/ccm/tests/data/cavp_ccm_aes256_16_12_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..e1afec096c253958746eca352b46b388b84d8cf5
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_13.blb b/ccm/tests/data/cavp_ccm_aes256_16_13.blb
deleted file mode 100644
index 6927c26510900f292cfe3d240ccc7f5edcc03fea..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_13_fail.blb b/ccm/tests/data/cavp_ccm_aes256_16_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..2ece68aa50b533a934254972a9f84a61837845e3
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_13_pass.blb b/ccm/tests/data/cavp_ccm_aes256_16_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..940366bbbd62c18c0b195e266d6176a0effad69b
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_7.blb b/ccm/tests/data/cavp_ccm_aes256_16_7.blb
deleted file mode 100644
index 084f79f5109466ce836fad2b42b000e321961331..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_7_fail.blb b/ccm/tests/data/cavp_ccm_aes256_16_7_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..e0231c0e3c157a255961032559630c5340251ee4
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_7_pass.blb b/ccm/tests/data/cavp_ccm_aes256_16_7_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..1d4b04442eaed8a83958facc9bf862e4c8203141
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_8.blb b/ccm/tests/data/cavp_ccm_aes256_16_8.blb
deleted file mode 100644
index 6072e14b040b838d46d7caf902d583c7205bc68d..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_8_fail.blb b/ccm/tests/data/cavp_ccm_aes256_16_8_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_8_pass.blb b/ccm/tests/data/cavp_ccm_aes256_16_8_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..e145384365268b3f4595cb70582f625a6a14d647
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_9.blb b/ccm/tests/data/cavp_ccm_aes256_16_9.blb
deleted file mode 100644
index 7e81c720d52e1bbd52360fa932e42c4ba35909ff..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_9_fail.blb b/ccm/tests/data/cavp_ccm_aes256_16_9_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_16_9_pass.blb b/ccm/tests/data/cavp_ccm_aes256_16_9_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..ec89582080c477d18b45257311f9cf254f7c2d8b
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_4_13.blb b/ccm/tests/data/cavp_ccm_aes256_4_13.blb
deleted file mode 100644
index 29cd82601229aab214be39dbc970e69b9b7b3754..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_4_13_fail.blb b/ccm/tests/data/cavp_ccm_aes256_4_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..3193acd68bb4e9aed12296d2eb8a115251e24957
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_4_13_pass.blb b/ccm/tests/data/cavp_ccm_aes256_4_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..71a04bd1e847242b24a2ed565bfee15a3722792a
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_4_7.blb b/ccm/tests/data/cavp_ccm_aes256_4_7.blb
deleted file mode 100644
index e0c26d2e884fe6a8651a744a20a155f58d5baf2e..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_4_7_fail.blb b/ccm/tests/data/cavp_ccm_aes256_4_7_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..2dbaa60300b3947eb7190fbbd09f7649f05e256b
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_4_7_pass.blb b/ccm/tests/data/cavp_ccm_aes256_4_7_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..af06006efbc5e3f7810b4473cb944aff52a57bfe
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_6_13.blb b/ccm/tests/data/cavp_ccm_aes256_6_13.blb
deleted file mode 100644
index 6a57be3d86c4dc48857bb897d32582082be3cda8..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_6_13_fail.blb b/ccm/tests/data/cavp_ccm_aes256_6_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_6_13_pass.blb b/ccm/tests/data/cavp_ccm_aes256_6_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..98a359ad11e65be7fff9b2fe822169134cb35b89
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_8_13.blb b/ccm/tests/data/cavp_ccm_aes256_8_13.blb
deleted file mode 100644
index f9fe7d1243cba808e7863531c70a3ae0950ad13f..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_8_13_fail.blb b/ccm/tests/data/cavp_ccm_aes256_8_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/cavp_ccm_aes256_8_13_pass.blb b/ccm/tests/data/cavp_ccm_aes256_8_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..0f6af727ddfc1e56123dc5b84b9c1016d3971356
GIT binary patch
diff --git a/ccm/tests/data/rfc3610_ccm_aes128_10_13.blb b/ccm/tests/data/rfc3610_ccm_aes128_10_13.blb
deleted file mode 100644
index ff8e5a5cb1f4f8ee522d013dad87ec113c7430b6..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/rfc3610_ccm_aes128_10_13_fail.blb b/ccm/tests/data/rfc3610_ccm_aes128_10_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/rfc3610_ccm_aes128_10_13_pass.blb b/ccm/tests/data/rfc3610_ccm_aes128_10_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..aa4575680b2e3dc03e68fb2033f518190b0cd500
GIT binary patch
diff --git a/ccm/tests/data/rfc3610_ccm_aes128_8_13.blb b/ccm/tests/data/rfc3610_ccm_aes128_8_13.blb
deleted file mode 100644
index c60b82d9a4d8d34a3a1e79a4b3490ecb7ab7d255..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ccm/tests/data/rfc3610_ccm_aes128_8_13_fail.blb b/ccm/tests/data/rfc3610_ccm_aes128_8_13_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ccm/tests/data/rfc3610_ccm_aes128_8_13_pass.blb b/ccm/tests/data/rfc3610_ccm_aes128_8_13_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..87c166ded05dc3abdf63174a9c60baf3c94a3822
GIT binary patch
diff --git a/ccm/tests/mod.rs b/ccm/tests/mod.rs
index f4b20fb8..3288f8b8 100644
--- a/ccm/tests/mod.rs
+++ b/ccm/tests/mod.rs
@@ -98,52 +98,96 @@ fn sp800_38c_examples() {
 }
 
 // Test vectors from https://tools.ietf.org/html/rfc3610
-aead::new_test!(rfc3610_ccm_aes128_8_13, "rfc3610_ccm_aes128_8_13", Ccm<Aes128, U8, U13>);
-aead::new_test!(rfc3610_ccm_aes128_10_13, "rfc3610_ccm_aes128_10_13", Ccm<Aes128, U10, U13>);
+aead::new_pass_test!(rfc3610_ccm_aes128_8_13_pass, "rfc3610_ccm_aes128_8_13_pass", Ccm<Aes128, U8, U13>);
+aead::new_fail_test!(rfc3610_ccm_aes128_8_13_fail, "rfc3610_ccm_aes128_8_13_fail", Ccm<Aes128, U8, U13>);
+aead::new_pass_test!(rfc3610_ccm_aes128_10_13_pass, "rfc3610_ccm_aes128_10_13_pass", Ccm<Aes128, U10, U13>);
+aead::new_fail_test!(rfc3610_ccm_aes128_10_13_fail, "rfc3610_ccm_aes128_10_13_fail", Ccm<Aes128, U10, U13>);
 
 // Test vectors from CAVP:
 // https://csrc.nist.gov/Projects/cryptographic-algorithm-validation-program/CAVP-TESTING-BLOCK-CIPHER-MODES
-aead::new_test!(cavp_ccm_aes128_4_7, "cavp_ccm_aes128_4_7", Ccm<Aes128, U4, U7>);
-aead::new_test!(cavp_ccm_aes128_4_13, "cavp_ccm_aes128_4_13", Ccm<Aes128, U4, U13>);
-aead::new_test!(cavp_ccm_aes128_6_13, "cavp_ccm_aes128_6_13", Ccm<Aes128, U6, U13>);
-aead::new_test!(cavp_ccm_aes128_8_13, "cavp_ccm_aes128_8_13", Ccm<Aes128, U8, U13>);
-aead::new_test!(cavp_ccm_aes128_10_13, "cavp_ccm_aes128_10_13", Ccm<Aes128, U10, U13>);
-aead::new_test!(cavp_ccm_aes128_12_13, "cavp_ccm_aes128_12_13", Ccm<Aes128, U12, U13>);
-aead::new_test!(cavp_ccm_aes128_14_13, "cavp_ccm_aes128_14_13", Ccm<Aes128, U14, U13>);
-aead::new_test!(cavp_ccm_aes128_16_7, "cavp_ccm_aes128_16_7", Ccm<Aes128, U16, U7>);
-aead::new_test!(cavp_ccm_aes128_16_8, "cavp_ccm_aes128_16_8", Ccm<Aes128, U16, U8>);
-aead::new_test!(cavp_ccm_aes128_16_9, "cavp_ccm_aes128_16_9", Ccm<Aes128, U16, U9>);
-aead::new_test!(cavp_ccm_aes128_16_10, "cavp_ccm_aes128_16_10", Ccm<Aes128, U16, U10>);
-aead::new_test!(cavp_ccm_aes128_16_11, "cavp_ccm_aes128_16_11", Ccm<Aes128, U16, U11>);
-aead::new_test!(cavp_ccm_aes128_16_12, "cavp_ccm_aes128_16_12", Ccm<Aes128, U16, U12>);
-aead::new_test!(cavp_ccm_aes128_16_13, "cavp_ccm_aes128_16_13", Ccm<Aes128, U16, U13>);
+aead::new_pass_test!(cavp_ccm_aes128_4_7_pass, "cavp_ccm_aes128_4_7_pass", Ccm<Aes128, U4, U7>);
+aead::new_fail_test!(cavp_ccm_aes128_4_7_fail, "cavp_ccm_aes128_4_7_fail", Ccm<Aes128, U4, U7>);
+aead::new_pass_test!(cavp_ccm_aes128_4_13_pass, "cavp_ccm_aes128_4_13_pass", Ccm<Aes128, U4, U13>);
+aead::new_fail_test!(cavp_ccm_aes128_4_13_fail, "cavp_ccm_aes128_4_13_fail", Ccm<Aes128, U4, U13>);
+aead::new_pass_test!(cavp_ccm_aes128_6_13_pass, "cavp_ccm_aes128_6_13_pass", Ccm<Aes128, U6, U13>);
+aead::new_fail_test!(cavp_ccm_aes128_6_13_fail, "cavp_ccm_aes128_6_13_fail", Ccm<Aes128, U6, U13>);
+aead::new_pass_test!(cavp_ccm_aes128_8_13_pass, "cavp_ccm_aes128_8_13_pass", Ccm<Aes128, U8, U13>);
+aead::new_fail_test!(cavp_ccm_aes128_8_13_fail, "cavp_ccm_aes128_8_13_fail", Ccm<Aes128, U8, U13>);
+aead::new_pass_test!(cavp_ccm_aes128_10_13_pass, "cavp_ccm_aes128_10_13_pass", Ccm<Aes128, U10, U13>);
+aead::new_fail_test!(cavp_ccm_aes128_10_13_fail, "cavp_ccm_aes128_10_13_fail", Ccm<Aes128, U10, U13>);
+aead::new_pass_test!(cavp_ccm_aes128_12_13_pass, "cavp_ccm_aes128_12_13_pass", Ccm<Aes128, U12, U13>);
+aead::new_fail_test!(cavp_ccm_aes128_12_13_fail, "cavp_ccm_aes128_12_13_fail", Ccm<Aes128, U12, U13>);
+aead::new_pass_test!(cavp_ccm_aes128_14_13_pass, "cavp_ccm_aes128_14_13_pass", Ccm<Aes128, U14, U13>);
+aead::new_fail_test!(cavp_ccm_aes128_14_13_fail, "cavp_ccm_aes128_14_13_fail", Ccm<Aes128, U14, U13>);
+aead::new_pass_test!(cavp_ccm_aes128_16_7_pass, "cavp_ccm_aes128_16_7_pass", Ccm<Aes128, U16, U7>);
+aead::new_fail_test!(cavp_ccm_aes128_16_7_fail, "cavp_ccm_aes128_16_7_fail", Ccm<Aes128, U16, U7>);
+aead::new_pass_test!(cavp_ccm_aes128_16_8_pass, "cavp_ccm_aes128_16_8_pass", Ccm<Aes128, U16, U8>);
+aead::new_fail_test!(cavp_ccm_aes128_16_8_fail, "cavp_ccm_aes128_16_8_fail", Ccm<Aes128, U16, U8>);
+aead::new_pass_test!(cavp_ccm_aes128_16_9_pass, "cavp_ccm_aes128_16_9_pass", Ccm<Aes128, U16, U9>);
+aead::new_fail_test!(cavp_ccm_aes128_16_9_fail, "cavp_ccm_aes128_16_9_fail", Ccm<Aes128, U16, U9>);
+aead::new_pass_test!(cavp_ccm_aes128_16_10_pass, "cavp_ccm_aes128_16_10_pass", Ccm<Aes128, U16, U10>);
+aead::new_fail_test!(cavp_ccm_aes128_16_10_fail, "cavp_ccm_aes128_16_10_fail", Ccm<Aes128, U16, U10>);
+aead::new_pass_test!(cavp_ccm_aes128_16_11_pass, "cavp_ccm_aes128_16_11_pass", Ccm<Aes128, U16, U11>);
+aead::new_fail_test!(cavp_ccm_aes128_16_11_fail, "cavp_ccm_aes128_16_11_fail", Ccm<Aes128, U16, U11>);
+aead::new_pass_test!(cavp_ccm_aes128_16_12_pass, "cavp_ccm_aes128_16_12_pass", Ccm<Aes128, U16, U12>);
+aead::new_fail_test!(cavp_ccm_aes128_16_12_fail, "cavp_ccm_aes128_16_12_fail", Ccm<Aes128, U16, U12>);
+aead::new_pass_test!(cavp_ccm_aes128_16_13_pass, "cavp_ccm_aes128_16_13_pass", Ccm<Aes128, U16, U13>);
+aead::new_fail_test!(cavp_ccm_aes128_16_13_fail, "cavp_ccm_aes128_16_13_fail", Ccm<Aes128, U16, U13>);
 
-aead::new_test!(cavp_ccm_aes192_4_7, "cavp_ccm_aes192_4_7", Ccm<Aes192, U4, U7>);
-aead::new_test!(cavp_ccm_aes192_4_13, "cavp_ccm_aes192_4_13", Ccm<Aes192, U4, U13>);
-aead::new_test!(cavp_ccm_aes192_6_13, "cavp_ccm_aes192_6_13", Ccm<Aes192, U6, U13>);
-aead::new_test!(cavp_ccm_aes192_8_13, "cavp_ccm_aes192_8_13", Ccm<Aes192, U8, U13>);
-aead::new_test!(cavp_ccm_aes192_10_13, "cavp_ccm_aes192_10_13", Ccm<Aes192, U10, U13>);
-aead::new_test!(cavp_ccm_aes192_12_13, "cavp_ccm_aes192_12_13", Ccm<Aes192, U12, U13>);
-aead::new_test!(cavp_ccm_aes192_14_13, "cavp_ccm_aes192_14_13", Ccm<Aes192, U14, U13>);
-aead::new_test!(cavp_ccm_aes192_16_7, "cavp_ccm_aes192_16_7", Ccm<Aes192, U16, U7>);
-aead::new_test!(cavp_ccm_aes192_16_8, "cavp_ccm_aes192_16_8", Ccm<Aes192, U16, U8>);
-aead::new_test!(cavp_ccm_aes192_16_9, "cavp_ccm_aes192_16_9", Ccm<Aes192, U16, U9>);
-aead::new_test!(cavp_ccm_aes192_16_10, "cavp_ccm_aes192_16_10", Ccm<Aes192, U16, U10>);
-aead::new_test!(cavp_ccm_aes192_16_11, "cavp_ccm_aes192_16_11", Ccm<Aes192, U16, U11>);
-aead::new_test!(cavp_ccm_aes192_16_12, "cavp_ccm_aes192_16_12", Ccm<Aes192, U16, U12>);
-aead::new_test!(cavp_ccm_aes192_16_13, "cavp_ccm_aes192_16_13", Ccm<Aes192, U16, U13>);
+aead::new_pass_test!(cavp_ccm_aes192_4_7_pass, "cavp_ccm_aes192_4_7_pass", Ccm<Aes192, U4, U7>);
+aead::new_fail_test!(cavp_ccm_aes192_4_7_fail, "cavp_ccm_aes192_4_7_fail", Ccm<Aes192, U4, U7>);
+aead::new_pass_test!(cavp_ccm_aes192_4_13_pass, "cavp_ccm_aes192_4_13_pass", Ccm<Aes192, U4, U13>);
+aead::new_fail_test!(cavp_ccm_aes192_4_13_fail, "cavp_ccm_aes192_4_13_fail", Ccm<Aes192, U4, U13>);
+aead::new_pass_test!(cavp_ccm_aes192_6_13_pass, "cavp_ccm_aes192_6_13_pass", Ccm<Aes192, U6, U13>);
+aead::new_fail_test!(cavp_ccm_aes192_6_13_fail, "cavp_ccm_aes192_6_13_fail", Ccm<Aes192, U6, U13>);
+aead::new_pass_test!(cavp_ccm_aes192_8_13_pass, "cavp_ccm_aes192_8_13_pass", Ccm<Aes192, U8, U13>);
+aead::new_fail_test!(cavp_ccm_aes192_8_13_fail, "cavp_ccm_aes192_8_13_fail", Ccm<Aes192, U8, U13>);
+aead::new_pass_test!(cavp_ccm_aes192_10_13_pass, "cavp_ccm_aes192_10_13_pass", Ccm<Aes192, U10, U13>);
+aead::new_fail_test!(cavp_ccm_aes192_10_13_fail, "cavp_ccm_aes192_10_13_fail", Ccm<Aes192, U10, U13>);
+aead::new_pass_test!(cavp_ccm_aes192_12_13_pass, "cavp_ccm_aes192_12_13_pass", Ccm<Aes192, U12, U13>);
+aead::new_fail_test!(cavp_ccm_aes192_12_13_fail, "cavp_ccm_aes192_12_13_fail", Ccm<Aes192, U12, U13>);
+aead::new_pass_test!(cavp_ccm_aes192_14_13_pass, "cavp_ccm_aes192_14_13_pass", Ccm<Aes192, U14, U13>);
+aead::new_fail_test!(cavp_ccm_aes192_14_13_fail, "cavp_ccm_aes192_14_13_fail", Ccm<Aes192, U14, U13>);
+aead::new_pass_test!(cavp_ccm_aes192_16_7_pass, "cavp_ccm_aes192_16_7_pass", Ccm<Aes192, U16, U7>);
+aead::new_fail_test!(cavp_ccm_aes192_16_7_fail, "cavp_ccm_aes192_16_7_fail", Ccm<Aes192, U16, U7>);
+aead::new_pass_test!(cavp_ccm_aes192_16_8_pass, "cavp_ccm_aes192_16_8_pass", Ccm<Aes192, U16, U8>);
+aead::new_fail_test!(cavp_ccm_aes192_16_8_fail, "cavp_ccm_aes192_16_8_fail", Ccm<Aes192, U16, U8>);
+aead::new_pass_test!(cavp_ccm_aes192_16_9_pass, "cavp_ccm_aes192_16_9_pass", Ccm<Aes192, U16, U9>);
+aead::new_fail_test!(cavp_ccm_aes192_16_9_fail, "cavp_ccm_aes192_16_9_fail", Ccm<Aes192, U16, U9>);
+aead::new_pass_test!(cavp_ccm_aes192_16_10_pass, "cavp_ccm_aes192_16_10_pass", Ccm<Aes192, U16, U10>);
+aead::new_fail_test!(cavp_ccm_aes192_16_10_fail, "cavp_ccm_aes192_16_10_fail", Ccm<Aes192, U16, U10>);
+aead::new_pass_test!(cavp_ccm_aes192_16_11_pass, "cavp_ccm_aes192_16_11_pass", Ccm<Aes192, U16, U11>);
+aead::new_fail_test!(cavp_ccm_aes192_16_11_fail, "cavp_ccm_aes192_16_11_fail", Ccm<Aes192, U16, U11>);
+aead::new_pass_test!(cavp_ccm_aes192_16_12_pass, "cavp_ccm_aes192_16_12_pass", Ccm<Aes192, U16, U12>);
+aead::new_fail_test!(cavp_ccm_aes192_16_12_fail, "cavp_ccm_aes192_16_12_fail", Ccm<Aes192, U16, U12>);
+aead::new_pass_test!(cavp_ccm_aes192_16_13_pass, "cavp_ccm_aes192_16_13_pass", Ccm<Aes192, U16, U13>);
+aead::new_fail_test!(cavp_ccm_aes192_16_13_fail, "cavp_ccm_aes192_16_13_fail", Ccm<Aes192, U16, U13>);
 
-aead::new_test!(cavp_ccm_aes256_4_7, "cavp_ccm_aes256_4_7", Ccm<Aes256, U4, U7>);
-aead::new_test!(cavp_ccm_aes256_4_13, "cavp_ccm_aes256_4_13", Ccm<Aes256, U4, U13>);
-aead::new_test!(cavp_ccm_aes256_6_13, "cavp_ccm_aes256_6_13", Ccm<Aes256, U6, U13>);
-aead::new_test!(cavp_ccm_aes256_8_13, "cavp_ccm_aes256_8_13", Ccm<Aes256, U8, U13>);
-aead::new_test!(cavp_ccm_aes256_10_13, "cavp_ccm_aes256_10_13", Ccm<Aes256, U10, U13>);
-aead::new_test!(cavp_ccm_aes256_12_13, "cavp_ccm_aes256_12_13", Ccm<Aes256, U12, U13>);
-aead::new_test!(cavp_ccm_aes256_14_13, "cavp_ccm_aes256_14_13", Ccm<Aes256, U14, U13>);
-aead::new_test!(cavp_ccm_aes256_16_7, "cavp_ccm_aes256_16_7", Ccm<Aes256, U16, U7>);
-aead::new_test!(cavp_ccm_aes256_16_8, "cavp_ccm_aes256_16_8", Ccm<Aes256, U16, U8>);
-aead::new_test!(cavp_ccm_aes256_16_9, "cavp_ccm_aes256_16_9",Ccm<Aes256, U16, U9>);
-aead::new_test!(cavp_ccm_aes256_16_10, "cavp_ccm_aes256_16_10", Ccm<Aes256, U16, U10>);
-aead::new_test!(cavp_ccm_aes256_16_11, "cavp_ccm_aes256_16_11", Ccm<Aes256, U16, U11>);
-aead::new_test!(cavp_ccm_aes256_16_12, "cavp_ccm_aes256_16_12", Ccm<Aes256, U16, U12>);
-aead::new_test!(cavp_ccm_aes256_16_13, "cavp_ccm_aes256_16_13", Ccm<Aes256, U16, U13>);
+aead::new_pass_test!(cavp_ccm_aes256_4_7_pass, "cavp_ccm_aes256_4_7_pass", Ccm<Aes256, U4, U7>);
+aead::new_fail_test!(cavp_ccm_aes256_4_7_fail, "cavp_ccm_aes256_4_7_fail", Ccm<Aes256, U4, U7>);
+aead::new_pass_test!(cavp_ccm_aes256_4_13_pass, "cavp_ccm_aes256_4_13_pass", Ccm<Aes256, U4, U13>);
+aead::new_fail_test!(cavp_ccm_aes256_4_13_fail, "cavp_ccm_aes256_4_13_fail", Ccm<Aes256, U4, U13>);
+aead::new_pass_test!(cavp_ccm_aes256_6_13_pass, "cavp_ccm_aes256_6_13_pass", Ccm<Aes256, U6, U13>);
+aead::new_fail_test!(cavp_ccm_aes256_6_13_fail, "cavp_ccm_aes256_6_13_fail", Ccm<Aes256, U6, U13>);
+aead::new_pass_test!(cavp_ccm_aes256_8_13_pass, "cavp_ccm_aes256_8_13_pass", Ccm<Aes256, U8, U13>);
+aead::new_fail_test!(cavp_ccm_aes256_8_13_fail, "cavp_ccm_aes256_8_13_fail", Ccm<Aes256, U8, U13>);
+aead::new_pass_test!(cavp_ccm_aes256_10_13_pass, "cavp_ccm_aes256_10_13_pass", Ccm<Aes256, U10, U13>);
+aead::new_fail_test!(cavp_ccm_aes256_10_13_fail, "cavp_ccm_aes256_10_13_fail", Ccm<Aes256, U10, U13>);
+aead::new_pass_test!(cavp_ccm_aes256_12_13_pass, "cavp_ccm_aes256_12_13_pass", Ccm<Aes256, U12, U13>);
+aead::new_fail_test!(cavp_ccm_aes256_12_13_fail, "cavp_ccm_aes256_12_13_fail", Ccm<Aes256, U12, U13>);
+aead::new_pass_test!(cavp_ccm_aes256_14_13_pass, "cavp_ccm_aes256_14_13_pass", Ccm<Aes256, U14, U13>);
+aead::new_fail_test!(cavp_ccm_aes256_14_13_fail, "cavp_ccm_aes256_14_13_fail", Ccm<Aes256, U14, U13>);
+aead::new_pass_test!(cavp_ccm_aes256_16_7_pass, "cavp_ccm_aes256_16_7_pass", Ccm<Aes256, U16, U7>);
+aead::new_fail_test!(cavp_ccm_aes256_16_7_fail, "cavp_ccm_aes256_16_7_fail", Ccm<Aes256, U16, U7>);
+aead::new_pass_test!(cavp_ccm_aes256_16_8_pass, "cavp_ccm_aes256_16_8_pass", Ccm<Aes256, U16, U8>);
+aead::new_fail_test!(cavp_ccm_aes256_16_8_fail, "cavp_ccm_aes256_16_8_fail", Ccm<Aes256, U16, U8>);
+aead::new_pass_test!(cavp_ccm_aes256_16_9_pass, "cavp_ccm_aes256_16_9_pass",Ccm<Aes256, U16, U9>);
+aead::new_fail_test!(cavp_ccm_aes256_16_9_fail, "cavp_ccm_aes256_16_9_fail",Ccm<Aes256, U16, U9>);
+aead::new_pass_test!(cavp_ccm_aes256_16_10_pass, "cavp_ccm_aes256_16_10_pass", Ccm<Aes256, U16, U10>);
+aead::new_fail_test!(cavp_ccm_aes256_16_10_fail, "cavp_ccm_aes256_16_10_fail", Ccm<Aes256, U16, U10>);
+aead::new_pass_test!(cavp_ccm_aes256_16_11_pass, "cavp_ccm_aes256_16_11_pass", Ccm<Aes256, U16, U11>);
+aead::new_fail_test!(cavp_ccm_aes256_16_11_fail, "cavp_ccm_aes256_16_11_fail", Ccm<Aes256, U16, U11>);
+aead::new_pass_test!(cavp_ccm_aes256_16_12_pass, "cavp_ccm_aes256_16_12_pass", Ccm<Aes256, U16, U12>);
+aead::new_fail_test!(cavp_ccm_aes256_16_12_fail, "cavp_ccm_aes256_16_12_fail", Ccm<Aes256, U16, U12>);
+aead::new_pass_test!(cavp_ccm_aes256_16_13_pass, "cavp_ccm_aes256_16_13_pass", Ccm<Aes256, U16, U13>);
+aead::new_fail_test!(cavp_ccm_aes256_16_13_fail, "cavp_ccm_aes256_16_13_fail", Ccm<Aes256, U16, U13>);
diff --git a/chacha20poly1305/tests/data/wycheproof_chacha20poly1305.blb b/chacha20poly1305/tests/data/wycheproof_chacha20poly1305.blb
deleted file mode 100644
index 0c8d33061f1d7627fbbea90061160ef392509da6..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/chacha20poly1305/tests/data/wycheproof_chacha20poly1305_fail.blb b/chacha20poly1305/tests/data/wycheproof_chacha20poly1305_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..1922bbf88954a0bfdba6cd589ab67bd6180a6f05
GIT binary patch
diff --git a/chacha20poly1305/tests/data/wycheproof_chacha20poly1305_pass.blb b/chacha20poly1305/tests/data/wycheproof_chacha20poly1305_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..b0f191b9c6c98e2549414837c0837b19d955d4d8
GIT binary patch
diff --git a/chacha20poly1305/tests/data/wycheproof_xchacha20poly1305.blb b/chacha20poly1305/tests/data/wycheproof_xchacha20poly1305.blb
deleted file mode 100644
index cf0a2646feff9132758229a52f1419aba6143482..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/chacha20poly1305/tests/data/wycheproof_xchacha20poly1305_fail.blb b/chacha20poly1305/tests/data/wycheproof_xchacha20poly1305_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..f9c3458d56722de33b4977c709c50ca0d6bebf96
GIT binary patch
diff --git a/chacha20poly1305/tests/data/wycheproof_xchacha20poly1305_pass.blb b/chacha20poly1305/tests/data/wycheproof_xchacha20poly1305_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..8d1137c8b2309f577164d6ec602d3ca2dfb8f1ae
GIT binary patch
diff --git a/chacha20poly1305/tests/lib.rs b/chacha20poly1305/tests/lib.rs
index 0abd82c1..98d4184c 100644
--- a/chacha20poly1305/tests/lib.rs
+++ b/chacha20poly1305/tests/lib.rs
@@ -6,14 +6,24 @@ use chacha20poly1305::ChaCha20Poly1305;
 use chacha20poly1305::XChaCha20Poly1305;
 
 // Test vectors from Wycheproof
-aead::new_test!(
-    wycheproof_chacha20poly1305,
-    "wycheproof_chacha20poly1305",
+aead::new_pass_test!(
+    wycheproof_chacha20poly1305_pass,
+    "wycheproof_chacha20poly1305_pass",
     ChaCha20Poly1305
 );
-aead::new_test!(
-    wycheproof_xchacha20poly1305,
-    "wycheproof_xchacha20poly1305",
+aead::new_fail_test!(
+    wycheproof_chacha20poly1305_fail,
+    "wycheproof_chacha20poly1305_fail",
+    ChaCha20Poly1305
+);
+aead::new_pass_test!(
+    wycheproof_xchacha20poly1305_pass,
+    "wycheproof_xchacha20poly1305_pass",
+    XChaCha20Poly1305
+);
+aead::new_fail_test!(
+    wycheproof_xchacha20poly1305_fail,
+    "wycheproof_xchacha20poly1305_fail",
     XChaCha20Poly1305
 );
 
diff --git a/eax/tests/aes128eax.rs b/eax/tests/aes128eax.rs
index 656648ae..1e871731 100644
--- a/eax/tests/aes128eax.rs
+++ b/eax/tests/aes128eax.rs
@@ -5,4 +5,5 @@
 use aes::Aes128;
 use eax::Eax;
 
-aead::new_test!(aes128eax, "aes128eax", Eax<Aes128>);
+aead::new_pass_test!(aes128eax_pass, "aes128eax_pass", Eax<Aes128>);
+aead::new_fail_test!(aes128eax_fail, "aes128eax_fail", Eax<Aes128>);
diff --git a/eax/tests/data/aes128eax.blb b/eax/tests/data/aes128eax.blb
deleted file mode 100644
index 3e1a3dec6abd597807e6daf0f3a6752237ad116d..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/eax/tests/data/aes128eax_fail.blb b/eax/tests/data/aes128eax_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/eax/tests/data/aes128eax_pass.blb b/eax/tests/data/aes128eax_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..3fa2d031ac17efe1a3be06454c248fac0b1a967d
GIT binary patch
diff --git a/ocb3/tests/data/rfc7253_ocb_aes.blb b/ocb3/tests/data/rfc7253_ocb_aes.blb
deleted file mode 100644
index 3b69db1ab5f5e71349c89939dcf8960295682719..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/ocb3/tests/data/rfc7253_ocb_aes_fail.blb b/ocb3/tests/data/rfc7253_ocb_aes_fail.blb
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/ocb3/tests/data/rfc7253_ocb_aes_pass.blb b/ocb3/tests/data/rfc7253_ocb_aes_pass.blb
new file mode 100644
index 0000000000000000000000000000000000000000..1685bb00535a58a175bb414cdcb853d4de5f3dc8
GIT binary patch
diff --git a/ocb3/tests/kats.rs b/ocb3/tests/kats.rs
index 1b30c726..1b4355d2 100644
--- a/ocb3/tests/kats.rs
+++ b/ocb3/tests/kats.rs
@@ -9,7 +9,8 @@ use hex_literal::hex;
 use ocb3::{Array, Ocb3};
 
 // Test vectors from https://www.rfc-editor.org/rfc/rfc7253.html#appendix-A
-aead::new_test!(rfc7253_ocb_aes, "rfc7253_ocb_aes", Aes128Ocb3);
+aead::new_pass_test!(rfc7253_ocb_aes_pass, "rfc7253_ocb_aes_pass", Aes128Ocb3);
+aead::new_fail_test!(rfc7253_ocb_aes_fail, "rfc7253_ocb_aes_fail", Aes128Ocb3);
 
 fn num2str96(num: usize) -> [u8; 12] {
     let num: u32 = num.try_into().unwrap();
