pub mod constants;
pub mod ctr;
pub mod error;
pub mod gcm;
pub mod random;
pub mod types;

use gcm::Aes256Gcm;
use random::{gen_key as gk, gen_nonce as gn};

use pyo3::prelude::*;

#[pyfunction]
fn gen_nonce() -> PyResult<Vec<u8>> {
    Ok(gn())
}

#[pyfunction]
fn gen_key() -> PyResult<Vec<u8>> {
    Ok(gk())
}

#[pyclass]
#[allow(dead_code)]
struct Gcm(Aes256Gcm);

#[pymodule]
#[pyo3(name = "_lib_name")]
fn pyrust(_py: Python, m: &PyModule) -> PyResult<()> {
    m.add_function(wrap_pyfunction!(gen_nonce, m)?)?;
    m.add_function(wrap_pyfunction!(gen_key, m)?)?;
    m.add_class::<Gcm>()?;
    Ok(())
}
