2 unstable releases
0.2.0 | Dec 29, 2020 |
---|---|
0.1.0 | Dec 28, 2020 |
#1322 in Algorithms
26 downloads per month
19KB
312 lines
AES Key Wrap for Rust
This crate implements the AES KeyWrap(RFC 3394 / RFC 5649) using AES Block function(128/192/256 ECB mode) of Crypto2.
Usage
Keywrap
let kek = hex::decode("000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F").unwrap();
let encrypted = hex::decode("A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1").unwrap();
let plain = hex::decode("00112233445566778899AABBCCDDEEFF0001020304050607").unwrap();
let encrypted_out = aes_wrap_key(&kek, &plain).unwrap();
let plain_out = aes_unwrap_key(&kek, &encrypted).unwrap();
Keywrap with Padding(RFC5649)
let encrypted_out = aes_wrap_key_with_pad(&kek, &plain).unwrap();
let plain_out = aes_unwrap_key_with_pad(&kek, &encrypted).unwrap();
References
- RFC3394
- Advanced Encryption Standard (AES) Key Wrap Algorithm
- RFC5649
- Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm
- Rust AES Keywrap
- It doesn't support RFC3394 now. issue #2
- aes-keywrap-py
- Strongly inspired by this python module.
- AesKeyWrap(C++) and AesKeyWrap Test(C++)
- (C++) AES Key Wrap / Unwrap example
- FreeBSD Crypto
License
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Dependencies
~600KB
~12K SLoC