Skip to content

Commit 738d387

Browse files
committed
dsa: improve coverage of de-/serialisation methods
1 parent f73eee9 commit 738d387

File tree

3 files changed

+61
-0
lines changed

3 files changed

+61
-0
lines changed

openssl/src/dsa.rs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,8 @@ mod test {
539539
use crate::pkey::PKey;
540540
#[cfg(not(any(boringssl, awslc_fips)))]
541541
use crate::sign::{Signer, Verifier};
542+
use crate::symm::Cipher;
543+
use std::str::from_utf8;
542544

543545
#[test]
544546
pub fn test_generate() {
@@ -694,4 +696,63 @@ mod test {
694696
let s = format!("{:?}", sig);
695697
assert_eq!(s, "DsaSig { r: 774484690634577222213819810519929266740561094381, s: 910998676210681457251421818099943952372231273347 }");
696698
}
699+
700+
#[test]
701+
fn test_private_key_to_pem() {
702+
let key = Dsa::generate(512).unwrap();
703+
let pem = key.private_key_to_pem().unwrap();
704+
let pem_str = from_utf8(&pem).unwrap();
705+
assert!(
706+
pem_str.contains("-----BEGIN DSA PRIVATE KEY-----"),
707+
"{pem_str}"
708+
);
709+
}
710+
711+
#[test]
712+
fn test_private_key_to_pem_password() {
713+
let key = Dsa::generate(512).unwrap();
714+
let pem = key
715+
.private_key_to_pem_passphrase(Cipher::aes_128_cbc(), b"foobar")
716+
.unwrap();
717+
let pem_str = from_utf8(&pem).unwrap();
718+
assert!(
719+
pem_str.contains("-----BEGIN DSA PRIVATE KEY-----"),
720+
"{pem_str}"
721+
);
722+
assert!(pem_str.contains("ENCRYPTED"), "{pem_str}");
723+
assert!(pem_str.contains("AES-128-CBC"), "{pem_str}");
724+
}
725+
726+
#[test]
727+
fn test_private_key_to_der() {
728+
let key = Dsa::generate(512).unwrap();
729+
key.private_key_to_der().unwrap();
730+
}
731+
732+
#[test]
733+
fn test_public_key_from_pem() {
734+
Dsa::public_key_from_pem(include_bytes!("../test/dsa.pub.pem")).unwrap();
735+
}
736+
737+
#[test]
738+
fn test_public_key_from_der() {
739+
Dsa::public_key_from_der(include_bytes!("../test/dsa.pub.der")).unwrap();
740+
}
741+
742+
#[test]
743+
fn test_public_key_to_pem() {
744+
let key = Dsa::public_key_from_der(include_bytes!("../test/dsa.pub.der")).unwrap();
745+
let pem = key.public_key_to_pem().unwrap();
746+
assert_eq!(
747+
from_utf8(&pem).unwrap(),
748+
include_str!("../test/dsa.pub.pem").replace("\r\n", "\n")
749+
);
750+
}
751+
752+
#[test]
753+
fn test_public_key_to_der() {
754+
let key = Dsa::public_key_from_pem(include_bytes!("../test/dsa.pub.pem")).unwrap();
755+
let der = key.public_key_to_der().unwrap();
756+
assert_eq!(der, include_bytes!("../test/dsa.pub.der"));
757+
}
697758
}

openssl/test/dsa.pub.der

443 Bytes
Binary file not shown.
File renamed without changes.

0 commit comments

Comments
 (0)