mod builders;
mod functions;
mod parsed;
mod proof;
mod revocation;
mod validator;
use pyo3::prelude::*;
use synta::traits::Encode;
use synta_python_common::SyntaErr;
use synta_mtc::types::Name as MtcName;
pub(super) fn encode_to_der<T: Encode>(val: &T) -> PyResult<Vec<u8>> {
let mut enc = synta::Encoder::new(synta::Encoding::Der);
val.encode(&mut enc).map_err(SyntaErr)?;
Ok(enc.finish().map_err(SyntaErr)?)
}
pub(super) fn alg_oid_str(alg: &synta_certificate::AlgorithmIdentifier<'_>) -> String {
alg.algorithm.to_string()
}
pub(super) fn spki_to_der(spki: &synta_certificate::SubjectPublicKeyInfo<'_>) -> PyResult<Vec<u8>> {
encode_to_der(spki)
}
pub(super) fn tbs_cert_to_der(tbs: &synta_certificate::TBSCertificate<'_>) -> PyResult<Vec<u8>> {
encode_to_der(tbs)
}
pub(super) fn time_to_str(t: &synta_certificate::Time) -> String {
match t {
synta_certificate::Time::UtcTime(t) => t.to_string(),
synta_certificate::Time::GeneralTime(t) => t.to_string(),
}
}
pub(super) fn int_to_i64(i: &synta::Integer) -> PyResult<i64> {
Ok(i.as_i64().map_err(SyntaErr)?)
}
pub(super) fn mtc_name_to_der(name: &MtcName) -> PyResult<Vec<u8>> {
encode_to_der(name)
}
pub fn register_mtc_module(m: &Bound<'_, pyo3::types::PyModule>) -> PyResult<()> {
m.add_class::<proof::PyHashAlgorithm>()?;
m.add_class::<proof::PyMtcSignature>()?;
m.add_class::<proof::PyMtcProof>()?;
m.add_class::<parsed::PyProofNode>()?;
m.add_class::<parsed::PySubtree>()?;
m.add_class::<parsed::PySubtreeProof>()?;
m.add_class::<parsed::PyInclusionProof>()?;
m.add_class::<parsed::PyLogID>()?;
m.add_class::<parsed::PyCosignerID>()?;
m.add_class::<parsed::PyCheckpoint>()?;
m.add_class::<parsed::PySubtreeSignature>()?;
m.add_class::<parsed::PyTbsCertificateLogEntry>()?;
m.add_class::<parsed::PyMerkleTreeCertEntry>()?;
m.add_class::<parsed::PyLandmarkID>()?;
m.add_class::<parsed::PyStandaloneCertificate>()?;
m.add_class::<parsed::PyLandmarkCertificate>()?;
m.add_class::<builders::PyIssuanceLogBuilder>()?;
m.add_class::<builders::PyMtcX509CertificateBuilder>()?;
m.add_class::<builders::PyStandaloneCertificateBuilder>()?;
m.add_class::<builders::PyLandmarkCertificateBuilder>()?;
m.add_class::<revocation::PyRevokedRanges>()?;
m.add_class::<validator::PyValidationPolicy>()?;
m.add_class::<validator::PyTrustAnchor>()?;
m.add_class::<validator::PyCertificateValidator>()?;
m.add_function(wrap_pyfunction!(functions::extract_leaf_index, m)?)?;
m.add_function(wrap_pyfunction!(functions::extract_log_number, m)?)?;
m.add_function(wrap_pyfunction!(functions::build_mtc_ca_extension, m)?)?;
m.add_function(wrap_pyfunction!(functions::parse_mtc_ca_extension, m)?)?;
Ok(())
}