use std::str::FromStr;
use synta::ObjectIdentifier;
use synta_certificate::{identify_public_key_algorithm, identify_signature_algorithm, names, oids};
#[test]
fn test_identify_rsa_signature_algorithm() {
let cases = [
(oids::MD5_WITH_RSA, names::MD5_WITH_RSA),
(oids::SHA1_WITH_RSA, names::SHA1_WITH_RSA),
(oids::SHA256_WITH_RSA, names::SHA256_WITH_RSA),
(oids::SHA384_WITH_RSA, names::SHA384_WITH_RSA),
(oids::SHA512_WITH_RSA, names::SHA512_WITH_RSA),
(oids::RSA_ENCRYPTION, names::RSA),
];
for (oid_arcs, expected) in cases {
let oid = ObjectIdentifier::new(oid_arcs).unwrap();
assert_eq!(
identify_signature_algorithm(&oid),
expected,
"OID arcs: {oid_arcs:?}"
);
}
}
#[test]
fn test_identify_ecdsa_signature_algorithm() {
let cases = [
(oids::ECDSA_WITH_SHA1, names::ECDSA_WITH_SHA1),
(oids::ECDSA_WITH_SHA256, names::ECDSA_WITH_SHA256),
(oids::ECDSA_WITH_SHA384, names::ECDSA_WITH_SHA384),
(oids::ECDSA_WITH_SHA512, names::ECDSA_WITH_SHA512),
];
for (oid_arcs, expected) in cases {
let oid = ObjectIdentifier::new(oid_arcs).unwrap();
assert_eq!(
identify_signature_algorithm(&oid),
expected,
"OID arcs: {oid_arcs:?}"
);
}
}
#[test]
fn test_identify_ed25519_signature_algorithm() {
let oid = ObjectIdentifier::new(oids::ED25519).unwrap();
assert_eq!(identify_signature_algorithm(&oid), names::ED25519);
}
#[test]
fn test_identify_ed448_signature_algorithm() {
let oid = ObjectIdentifier::new(oids::ED448).unwrap();
assert_eq!(identify_signature_algorithm(&oid), names::ED448);
}
#[test]
fn test_identify_ml_dsa_44_signature_algorithm() {
let oid = ObjectIdentifier::new(oids::ML_DSA_44).unwrap();
assert_eq!(identify_signature_algorithm(&oid), names::ML_DSA_44);
}
#[test]
fn test_identify_ml_dsa_65_signature_algorithm() {
let oid = ObjectIdentifier::new(oids::ML_DSA_65).unwrap();
assert_eq!(identify_signature_algorithm(&oid), names::ML_DSA_65);
}
#[test]
fn test_identify_ml_dsa_87_signature_algorithm() {
let oid = ObjectIdentifier::new(oids::ML_DSA_87).unwrap();
assert_eq!(identify_signature_algorithm(&oid), names::ML_DSA_87);
}
#[test]
fn test_identify_dsa_signature_algorithm() {
let oid = ObjectIdentifier::from_str("1.2.840.10040.4.3").unwrap();
assert_eq!(identify_signature_algorithm(&oid), names::DSA);
}
#[test]
fn test_identify_unknown_signature_algorithm() {
let oid = ObjectIdentifier::from_str("1.2.3.4.5").unwrap();
assert_eq!(identify_signature_algorithm(&oid), names::OTHER);
}
#[test]
fn test_identify_rsa_public_key_algorithm() {
let oid = ObjectIdentifier::new(oids::RSA_ENCRYPTION).unwrap();
assert_eq!(identify_public_key_algorithm(&oid), Some(names::RSA));
}
#[test]
fn test_identify_ecdsa_public_key_algorithm() {
let oid = ObjectIdentifier::new(oids::EC_PUBLIC_KEY).unwrap();
assert_eq!(identify_public_key_algorithm(&oid), Some(names::ECDSA));
}
#[test]
fn test_identify_ml_kem_512_public_key_algorithm() {
let oid = ObjectIdentifier::new(oids::ML_KEM_512).unwrap();
assert_eq!(identify_public_key_algorithm(&oid), Some(names::ML_KEM_512));
}
#[test]
fn test_identify_ml_kem_768_public_key_algorithm() {
let oid = ObjectIdentifier::new(oids::ML_KEM_768).unwrap();
assert_eq!(identify_public_key_algorithm(&oid), Some(names::ML_KEM_768));
}
#[test]
fn test_identify_ml_kem_1024_public_key_algorithm() {
let oid = ObjectIdentifier::new(oids::ML_KEM_1024).unwrap();
assert_eq!(
identify_public_key_algorithm(&oid),
Some(names::ML_KEM_1024)
);
}
#[test]
fn test_identify_ml_dsa_public_key_algorithm() {
let cases = [
(oids::ML_DSA_44, names::ML_DSA_44),
(oids::ML_DSA_65, names::ML_DSA_65),
(oids::ML_DSA_87, names::ML_DSA_87),
];
for (oid_arcs, expected) in cases {
let oid = ObjectIdentifier::new(oid_arcs).unwrap();
assert_eq!(
identify_public_key_algorithm(&oid),
Some(expected),
"OID arcs: {oid_arcs:?}"
);
}
}
#[test]
fn test_identify_ed25519_public_key_algorithm() {
let oid = ObjectIdentifier::new(oids::ED25519).unwrap();
assert_eq!(identify_public_key_algorithm(&oid), Some(names::ED25519));
}
#[test]
fn test_identify_ed448_public_key_algorithm() {
let oid = ObjectIdentifier::new(oids::ED448).unwrap();
assert_eq!(identify_public_key_algorithm(&oid), Some(names::ED448));
}
#[test]
fn test_identify_dsa_public_key_algorithm() {
let oid = ObjectIdentifier::from_str("1.2.840.10040.4.1").unwrap();
assert_eq!(identify_public_key_algorithm(&oid), Some(names::DSA));
}
#[test]
fn test_identify_unknown_public_key_algorithm() {
let oid = ObjectIdentifier::from_str("1.2.3.4.5").unwrap();
assert_eq!(identify_public_key_algorithm(&oid), None);
}