trivium 0.1.0

Small Rust implementation of the Trivium stream cipher.
Documentation
  • Coverage
  • 22.22%
    2 out of 9 items documented2 out of 2 items with examples
  • Size
  • Source code size: 17.36 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 2.07 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 18s Average build duration of successful builds.
  • all releases: 18s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • 1595901624/trivium-rs
    1 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • 1595901624

trivium

A small Rust implementation of the Trivium stream cipher.

  • Exported helper: trivium::trivium_xor(key, iv, data)
    • key and iv are arbitrary-length Vec<u8> values; they are truncated/padded to 10 bytes (80 bits)
    • Key/IV bits are interpreted MSB-first by default when using the helper.
  • Public types for advanced use:
    • trivium::Trivium — construct directly with Trivium::new(...) for custom options.
    • trivium::BitOrder and trivium::PackOrder — control how bits are read and packed.

Basic example (helper):

let key = vec![0u8; 10];
let iv = vec![0u8; 10];
let data = b"hello".to_vec();
let ct = trivium::trivium_xor(key.clone(), iv.clone(), data.clone()).unwrap();
let pt = trivium::trivium_xor(key, iv, ct).unwrap();
assert_eq!(pt, data);

Direct usage example (custom options):

use trivium::{Trivium, BitOrder, PackOrder};

let key = vec![0u8; 10];
let iv = vec![0u8; 10];
let data = b"hello".to_vec();

// Instantiate with LSB load order and LSB packing for output bytes
let ct = Trivium::new(&key, &iv, BitOrder::Lsb, PackOrder::Lsb).xor_bytes(&data);
let pt = Trivium::new(&key, &iv, BitOrder::Lsb, PackOrder::Lsb).xor_bytes(&ct);
assert_eq!(pt, data);

Note: The crate also exposes Trivium, BitOrder, and PackOrder and includes a direct-usage example in the crate documentation (see src/lib.rs doctests).

Migration / Breaking changes

  • The trivium_xor helper no longer accepts a bit_order parameter. It now defaults to MSB when reading key/IV bits within each byte.
  • For LSB loading or other custom behavior, construct directly with Trivium::new(&key, &iv, BitOrder::Lsb, PackOrder::Lsb) and call .xor_bytes(&data).
  • Trivium::new and Trivium::xor_bytes are public, and BitOrder/PackOrder are exported from the crate root.