kyber 0.1.1+deprecated

DEPRECATED: use the `ml-kem` crate instead
Documentation
use rand::Rng;
use ::params::{ PUBLICKEYBYTES, SECRETKEYBYTES, SHAREDKEYBYTES, BYTES };
use ::kyber;


pub mod uake {
    use ::params::{ UAKE_SENDABYTES, UAKE_SENDBBYTES };
    use super::*;

    pub fn init_a(
        rng: &mut Rng,
        send: &mut [u8; UAKE_SENDABYTES],
        tk: &mut [u8; SHAREDKEYBYTES],
        sk: &mut [u8; SECRETKEYBYTES],
        pkb: &[u8; PUBLICKEYBYTES]
    ) {
        kyber::keypair(rng, send, sk);
        kyber::enc(rng, &mut send[PUBLICKEYBYTES..], tk, pkb);
    }

    pub fn shared_b(
        rng: &mut Rng,
        send: &mut [u8; UAKE_SENDBBYTES],
        k: &mut [u8; SHAREDKEYBYTES],
        recv: &[u8; UAKE_SENDABYTES],
        skb: &[u8; SECRETKEYBYTES]
    ) {
        let mut buf = [0; SHAREDKEYBYTES];
        let mut buf2 = [0; SHAREDKEYBYTES];
        kyber::enc(rng, send, &mut buf, recv);
        kyber::dec(&mut buf2, &recv[PUBLICKEYBYTES..], skb);
        shake128!(k; &buf, &buf2);
    }

    pub fn shared_a(
        k: &mut [u8; SHAREDKEYBYTES],
        recv: &[u8; UAKE_SENDBBYTES],
        tk: &[u8; SHAREDKEYBYTES],
        sk: &[u8; SECRETKEYBYTES]
    ) {
        let mut buf = [0; SHAREDKEYBYTES];
        let mut buf2 = [0; SHAREDKEYBYTES];
        kyber::dec(&mut buf, recv, sk);
        buf2.copy_from_slice(&tk[..SHAREDKEYBYTES]);
        shake128!(k; &buf, &buf2);
    }
}

pub mod ake {
    use ::params::{ AKE_SENDABYTES, AKE_SENDBBYTES };
    use super::*;

    pub fn init_a(
        rng: &mut Rng,
        send: &mut [u8; AKE_SENDABYTES],
        tk: &mut [u8; SHAREDKEYBYTES],
        sk: &mut [u8; SECRETKEYBYTES],
        pkb: &[u8; PUBLICKEYBYTES]
    ) {
        kyber::keypair(rng, send, sk);
        kyber::enc(rng, &mut send[PUBLICKEYBYTES..], tk, pkb);
    }

    pub fn shared_b(
        rng: &mut Rng,
        send: &mut [u8; AKE_SENDBBYTES],
        k: &mut [u8; SHAREDKEYBYTES],
        recv: &[u8; AKE_SENDABYTES],
        skb: &[u8; SECRETKEYBYTES],
        pka: &[u8; PUBLICKEYBYTES]
    ) {
        let mut buf = [0; SHAREDKEYBYTES];
        let mut buf2 = [0; SHAREDKEYBYTES];
        let mut buf3 = [0; SHAREDKEYBYTES];
        kyber::enc(rng, send, &mut buf, recv);
        kyber::enc(rng, &mut send[BYTES..], &mut buf2, pka);
        kyber::dec(&mut buf3, &recv[PUBLICKEYBYTES..], skb);
        shake128!(k; &buf, &buf2, &buf3);
    }

    pub fn shared_a(
        k: &mut [u8; SHAREDKEYBYTES],
        recv: &[u8; AKE_SENDBBYTES],
        tk: &[u8; SHAREDKEYBYTES],
        sk: &[u8; SECRETKEYBYTES],
        ska: &[u8; SECRETKEYBYTES]
    ) {
        let mut buf = [0; SHAREDKEYBYTES];
        let mut buf2 = [0; SHAREDKEYBYTES];
        let mut buf3 = [0; SHAREDKEYBYTES];
        kyber::dec(&mut buf, recv, sk);
        kyber::dec(&mut buf2, &recv[BYTES..], ska);
        buf3.copy_from_slice(&tk[..SHAREDKEYBYTES]);
        shake128!(k; &buf, &buf2, &buf3);
    }
}