mod provider;
pub use provider::CryptoProvider;
#[derive(Debug, Clone, Default)]
pub struct CryptoParameter {
pub name: String,
pub value: String,
}
impl CryptoParameter {
#[must_use]
pub fn new(name: impl Into<String>, value: impl Into<String>) -> Self {
Self {
name: name.into(),
value: value.into(),
}
}
}
#[derive(Debug, Clone, Default)]
pub struct SigParameter {
pub name: String,
pub value: String,
}
impl SigParameter {
#[must_use]
pub fn new(name: impl Into<String>, value: impl Into<String>) -> Self {
Self {
name: name.into(),
value: value.into(),
}
}
}
#[derive(Debug, Clone, Default)]
pub struct SigParameters {
pub parameters: Vec<SigParameter>,
}
impl SigParameters {
#[must_use]
pub fn new() -> Self {
Self::default()
}
pub fn add(&mut self, param: SigParameter) {
self.parameters.push(param);
}
#[must_use]
pub fn len(&self) -> usize {
self.parameters.len()
}
#[must_use]
pub fn is_empty(&self) -> bool {
self.parameters.is_empty()
}
}
#[derive(Debug, Clone, Default)]
pub struct UserInfo {
pub user_name: Option<String>,
pub cert: Option<String>,
}
impl UserInfo {
#[must_use]
pub fn new() -> Self {
Self::default()
}
#[must_use]
pub fn user_name(mut self, name: impl Into<String>) -> Self {
self.user_name = Some(name.into());
self
}
}
#[derive(Debug, Clone, Default)]
pub struct Encryptions {
pub items: Vec<String>,
}
impl Encryptions {
#[must_use]
pub fn new() -> Self {
Self::default()
}
pub fn add(&mut self, item: impl Into<String>) {
self.items.push(item.into());
}
}
#[derive(Debug, Clone, Default)]
pub struct ExtendParams {
pub params: Vec<(String, String)>,
}
impl ExtendParams {
#[must_use]
pub fn new() -> Self {
Self::default()
}
pub fn add(&mut self, key: impl Into<String>, value: impl Into<String>) {
self.params.push((key.into(), value.into()));
}
}
#[derive(Debug, Clone, Default)]
pub struct DecyptSeed {
pub seed: Vec<u8>,
}
impl DecyptSeed {
#[must_use]
pub fn new(seed: Vec<u8>) -> Self {
Self { seed }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn crypto_parameter_new() {
let p = CryptoParameter::new("key", "value");
assert_eq!(p.name, "key");
assert_eq!(p.value, "value");
}
#[test]
fn sig_parameter_new() {
let p = SigParameter::new("algo", "SM2");
assert_eq!(p.name, "algo");
}
#[test]
fn sig_parameters_add() {
let mut params = SigParameters::new();
params.add(SigParameter::new("a", "1"));
assert_eq!(params.len(), 1);
}
#[test]
fn user_info_builder() {
let ui = UserInfo::new().user_name("test");
assert_eq!(ui.user_name.unwrap(), "test");
}
#[test]
fn encryptions_add() {
let mut e = Encryptions::new();
e.add("entry1");
assert_eq!(e.items.len(), 1);
}
#[test]
fn extend_params_add() {
let mut ep = ExtendParams::new();
ep.add("k", "v");
assert_eq!(ep.params.len(), 1);
}
#[test]
fn decypt_seed_new() {
let ds = DecyptSeed::new(vec![1, 2, 3]);
assert_eq!(ds.seed.len(), 3);
}
}