use synta_certificate::{CMPMessageBuilder, GeneralNameSpec};
#[test]
fn cmp_pkiconf_with_sender_recipient() {
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.body_pkiconf()
.build()
.expect("pkiConf message must build");
assert_eq!(der[0], 0x30);
assert!(der.len() > 4);
}
#[test]
fn cmp_default_equals_new() {
let r1 = CMPMessageBuilder::new().build();
let r2 = CMPMessageBuilder::default().build();
assert!(r1.is_err());
assert!(r2.is_err());
}
#[test]
fn cmp_missing_sender_returns_error() {
let result = CMPMessageBuilder::new()
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.build();
assert!(result.is_err());
}
#[test]
fn cmp_missing_recipient_returns_error() {
let result = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.build();
assert!(result.is_err());
}
#[test]
fn cmp_with_transaction_id() {
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.transaction_id(b"\x01\x02\x03\x04\x05\x06\x07\x08")
.body_pkiconf()
.build()
.expect("message with transactionID must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_with_sender_and_recip_nonce() {
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.sender_nonce(b"\xAA\xBB\xCC\xDD")
.recip_nonce(b"\x11\x22\x33\x44")
.body_pkiconf()
.build()
.expect("message with nonces must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_pvno_3() {
let der = CMPMessageBuilder::new()
.pvno(3)
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.body_pkiconf()
.build()
.expect("cmp2021 message must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_body_ir() {
let cert_req_msgs = &[0x30u8, 0x00];
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.body_ir(cert_req_msgs)
.build()
.expect("ir body message must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_body_cr() {
let cert_req_msgs = &[0x30u8, 0x00];
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.body_cr(cert_req_msgs)
.build()
.expect("cr body message must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_body_kur() {
let cert_req_msgs = &[0x30u8, 0x00];
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.body_kur(cert_req_msgs)
.build()
.expect("kur body message must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_body_p10cr() {
let csr_der = &[0x30u8, 0x00];
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.body_p10cr(csr_der)
.build()
.expect("p10cr body message must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_body_genm() {
let gen_msg = &[0x30u8, 0x00];
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.body_genm(gen_msg)
.build()
.expect("genm body message must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_sender_dns_name() {
let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::dns("ca.example.com"))
.recipient(GeneralNameSpec::dns("ee.example.com"))
.body_pkiconf()
.build()
.expect("message with DNS names must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_sender_directory_name() {
let name_der = &[0x30u8, 0x00]; let der = CMPMessageBuilder::new()
.sender(GeneralNameSpec::directory_name(name_der))
.recipient(GeneralNameSpec::directory_name(name_der))
.body_pkiconf()
.build()
.expect("message with directory names must build");
assert_eq!(der[0], 0x30);
}
#[test]
fn cmp_all_optional_fields() {
let der = CMPMessageBuilder::new()
.pvno(3)
.sender(GeneralNameSpec::rfc822("ca@example.com"))
.recipient(GeneralNameSpec::rfc822("ee@example.com"))
.transaction_id(b"\x01\x02\x03\x04")
.sender_nonce(b"\xAA\xBB")
.recip_nonce(b"\x11\x22")
.body_pkiconf()
.build()
.expect("message with all optional fields must build");
assert_eq!(der[0], 0x30);
}