Skip to content

Latest commit

 

History

History

belt-mac

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

RustCrypto: belt-mac

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

Pure Rust implementation of [belt-mac].

Example

use belt_mac::{digest::KeyInit, BeltMac, Mac};
use hex_literal::hex;

let key = [0x42; 32];
let msg = b"input message";
let expected_tag = hex!("9f5c9623b4eff8802195e81bcd841959");

// To get the authentication code:
let mut mac: BeltMac = BeltMac::new_from_slice(&key).unwrap();
mac.update(msg);
let tag = mac.finalize();
let tag_bytes = tag.into_bytes();
assert_eq!(&tag_bytes[..], &expected_tag[..]);

// To verify the message:
let mut mac: BeltMac = BeltMac::new_from_slice(&key).unwrap();
mac.update(b"input message");
mac.verify(&tag_bytes).unwrap();

Minimum Supported Rust Version

Rust 1.81 or higher.

Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump.

SemVer Policy

  • All on-by-default features of this library are covered by SemVer
  • MSRV is considered exempt from SemVer as noted above

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.