pub use zks_crypt as crypto;
pub use zks_pqcrypto as pqcrypto;
pub use zks_wire as wire;
pub use zks_proto as proto;
pub use zks_types as types;
pub mod builder;
pub mod config;
pub mod connection;
pub mod error;
pub mod prefabs;
pub mod stream;
pub mod sdk_crypto;
pub mod prelude {
pub use crate::builder::ZkConnectionBuilder;
pub use crate::config::SecurityLevel;
pub use crate::error::Result;
pub use zks_crypt::wasif_vernam::WasifVernam;
pub use zks_pqcrypto::prelude::*;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_sdk_imports() {
let _builder = prelude::ZkConnectionBuilder::new();
}
#[tokio::test]
async fn test_zk_connection_builder() {
use crate::config::SecurityLevel;
use crate::prelude::{ZkConnectionBuilder, Result};
let result: Result<_> = ZkConnectionBuilder::new()
.url("zk://localhost:8080")
.security(SecurityLevel::PostQuantum)
.build()
.await;
assert!(result.is_err());
}
#[tokio::test]
async fn test_encryption_roundtrip() {
use zks_crypt::wasif_vernam::WasifVernam;
let key = [0u8; 32];
let mut cipher = WasifVernam::new(key).unwrap();
let plaintext = b"Hello, quantum world!";
let encrypted = cipher.encrypt(plaintext).unwrap();
let decrypted = cipher.decrypt(&encrypted).unwrap();
assert_eq!(plaintext.to_vec(), decrypted);
}
}