Skip to content

Commit

Permalink
move xaes-256-gcm to its own crate
Browse files Browse the repository at this point in the history
  • Loading branch information
SergioBenitez committed Aug 9, 2024
1 parent 87797c2 commit f4afbbc
Show file tree
Hide file tree
Showing 14 changed files with 460 additions and 30 deletions.
69 changes: 69 additions & 0 deletions .github/workflows/xaes-256-gcm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: xaes-256-gcm

on:
pull_request:
paths:
- ".github/workflows/xaes-256-gcm.yml"
- "xaes-256-gcm/**"
- "Cargo.*"
push:
branches: master

defaults:
run:
working-directory: xaes-256-gcm

env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-Dwarnings"

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- 1.65.0 # MSRV
- stable
target:
- armv7a-none-eabi
- thumbv7em-none-eabi
- wasm32-unknown-unknown
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
targets: ${{ matrix.target }}
- run: cargo build --no-default-features --release --target ${{ matrix.target }}

test:
runs-on: ubuntu-latest
strategy:
matrix:
include:
# 32-bit Linux
- target: i686-unknown-linux-gnu
rust: 1.72.0 # MSRV
deps: sudo apt update && sudo apt install gcc-multilib
- target: i686-unknown-linux-gnu
rust: stable
deps: sudo apt update && sudo apt install gcc-multilib

# 64-bit Linux
- target: x86_64-unknown-linux-gnu
rust: 1.72.0 # MSRV
- target: x86_64-unknown-linux-gnu
rust: stable
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
targets: ${{ matrix.target }}
- 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 stream,std,zeroize
- run: cargo test --target ${{ matrix.target }} --release --all-features
- run: cargo build --target ${{ matrix.target }} --benches
53 changes: 39 additions & 14 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ members = [
"deoxys",
"eax",
"ocb3",
"xaes-256-gcm",
]
resolver = "2"
6 changes: 0 additions & 6 deletions aes-gcm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,17 +108,11 @@
//! [`aead::Buffer`] for `arrayvec::ArrayVec` (re-exported from the [`aead`] crate as
//! [`aead::arrayvec::ArrayVec`]).

#[cfg(feature = "aes")]
mod xaes;

pub use aead::{self, AeadCore, AeadInPlace, Error, Key, KeyInit, KeySizeUser};

#[cfg(feature = "aes")]
pub use aes;

#[cfg(feature = "aes")]
pub use xaes::XaesGcm256;

use cipher::{
array::{Array, ArraySize},
consts::{U0, U16},
Expand Down
2 changes: 1 addition & 1 deletion aes-gcm/tests/aes128gcm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use hex_literal::hex;
/// <https://csrc.nist.gov/Projects/cryptographic-algorithm-validation-program/CAVP-TESTING-BLOCK-CIPHER-MODES>
///
/// From: `gcmEncryptExtIV128.rsp`
const TEST_VECTORS: &[TestVector<[u8; 16]>] = &[
const TEST_VECTORS: &[TestVector<[u8; 16], [u8; 12]>] = &[
TestVector {
key: &hex!("11754cd72aec309bf52f7687212e8957"),
nonce: &hex!("3c819d9a9bed087615030b65"),
Expand Down
2 changes: 1 addition & 1 deletion aes-gcm/tests/aes256gcm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use hex_literal::hex;
/// <https://csrc.nist.gov/Projects/cryptographic-algorithm-validation-program/CAVP-TESTING-BLOCK-CIPHER-MODES>
///
/// From: `gcmEncryptExtIV256.rsp`
const TEST_VECTORS: &[TestVector<[u8; 32]>] = &[
const TEST_VECTORS: &[TestVector<[u8; 32], [u8; 12]>] = &[
TestVector {
key: &hex!("b52c505a37d78eda5dd34f20c22540ea1b58963cf8e5bf8ffa85f9f2492505b4"),
nonce: &hex!("516c33929df5a3284ff463d7"),
Expand Down
4 changes: 2 additions & 2 deletions aes-gcm/tests/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

/// Test vectors
#[derive(Debug)]
pub struct TestVector<K: 'static> {
pub struct TestVector<K: 'static, N: 'static> {
pub key: &'static K,
pub nonce: &'static [u8],
pub nonce: &'static N,
pub aad: &'static [u8],
pub plaintext: &'static [u8],
pub ciphertext: &'static [u8],
Expand Down
8 changes: 8 additions & 0 deletions xaes-256-gcm/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.1.0 (TBD)
- Initial release
40 changes: 40 additions & 0 deletions xaes-256-gcm/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
[package]
name = "xaes-256-gcm"
version = "0.0.1-pre.0"
description = """
Pure Rust implementation of the XAES-256-GCM extended-nonce Authenticated
Encryption with Associated Data (AEAD).
"""
authors = ["RustCrypto Developers"]
edition = "2021"
license = "Apache-2.0 OR MIT"
readme = "README.md"
documentation = "https://docs.rs/xaes-256-gcm"
repository = "https://github.com/RustCrypto/AEADs"
keywords = ["aead", "aes", "xaes", "encryption", "extended-nonce"]
categories = ["cryptography", "no-std"]
rust-version = "1.65"

[dependencies]
aead = { version = "0.6.0-rc.0", default-features = false }
aes = { version = "=0.9.0-pre.1", default-features = false }
aes-gcm = "=0.11.0-pre.1"
cipher = "=0.5.0-pre.6"

[dev-dependencies]
aead = { version = "0.6.0-rc.0", features = ["dev"], default-features = false }
hex-literal = "0.4"

[features]
default = ["alloc", "getrandom"]
std = ["aead/std", "aes-gcm/std", "cipher/std", "alloc"]
alloc = ["aead/alloc", "aes-gcm/alloc"]
arrayvec = ["aead/arrayvec", "aes-gcm/arrayvec"]
getrandom = ["aead/getrandom", "aes-gcm/getrandom", "rand_core"]
heapless = ["aead/heapless", "aes-gcm/heapless"]
rand_core = ["aead/rand_core", "aes-gcm/rand_core"]
stream = ["aead/stream", "aes-gcm/stream"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
Loading

0 comments on commit f4afbbc

Please sign in to comment.