anubis-wormhole 1.0.0

A post-quantum secure file transfer tool based on the Magic Wormhole protocol.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use crate::providers::aes_gcm_siv::Aes256GcmSivProvider;
use crate::frame::Frame;
use crate::aead_policy::{AAD, RecordType, Role, Flags};

pub fn seal_data_record(key: &[u8;32], session_id: [u8;16], subchannel: u32, seq: u64, payload: &[u8], fin: bool, role: Role) -> Vec<u8> {
    let flags = if fin { Flags::FIN } else { Flags::empty() };
    let aad = AAD { version: 1, role, record_type: RecordType::Data, subchannel, seq, flags, session_id, capabilities_hash16: None };
    Frame::seal(&Aes256GcmSivProvider, key, &aad, payload).expect("seal data")
}

pub fn open_data_record(key: &[u8;32], session_id: [u8;16], subchannel: u32, seq: u64, flags: Flags, ct: &[u8], role: Role) -> Option<Vec<u8>> {
    let aad = AAD { version: 1, role, record_type: RecordType::Data, subchannel, seq, flags, session_id, capabilities_hash16: None };
    Frame::open(&Aes256GcmSivProvider, key, &aad, ct).ok()
}