15_key_encrypt_export/
15_key_encrypt_export.rs1mod support;
2
3use security::{Certificate, EncryptionAlgorithm, KeyType, PrivateKey, SignatureAlgorithm};
4
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let private_key = PrivateKey::from_data(
7 &std::fs::read("tests/fixtures/test-key-rsa.pkcs1.der")?,
8 KeyType::Rsa,
9 2048,
10 )?;
11 let public_key = private_key.public_key()?;
12
13 let ciphertext = public_key.encrypt(
14 EncryptionAlgorithm::RsaEncryptionOaepSha256,
15 b"security-rs example",
16 )?;
17 let plaintext =
18 private_key.decrypt(EncryptionAlgorithm::RsaEncryptionOaepSha256, &ciphertext)?;
19 assert_eq!(plaintext, b"security-rs example");
20
21 let signature = private_key.sign(
22 SignatureAlgorithm::RsaSignatureMessagePkcs1v15Sha256,
23 b"security-rs example",
24 )?;
25 let certificate = Certificate::from_pem(&std::fs::read("tests/fixtures/test-cert.pem")?)?;
26 assert!(certificate.public_key()?.verify_signature(
27 SignatureAlgorithm::RsaSignatureMessagePkcs1v15Sha256,
28 b"security-rs example",
29 &signature,
30 )?);
31
32 println!(
33 "key_type_id={} block_size={} exported_private={} exported_public={}",
34 PrivateKey::type_id(),
35 public_key.block_size(),
36 private_key.external_representation()?.len(),
37 public_key.external_representation()?.len(),
38 );
39
40 Ok(())
41}