pub struct PublicKey { /* private fields */ }Expand description
Wraps a public SecKeyRef.
Implementations§
Source§impl PublicKey
impl PublicKey
Sourcepub fn attributes(&self) -> Result<Value>
pub fn attributes(&self) -> Result<Value>
Wraps the corresponding public SecKeyRef operation.
Sourcepub fn block_size(&self) -> usize
pub fn block_size(&self) -> usize
Wraps the corresponding public SecKeyRef operation.
Examples found in repository?
examples/15_key_encrypt_export.rs (line 35)
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}Sourcepub fn external_representation(&self) -> Result<Vec<u8>>
pub fn external_representation(&self) -> Result<Vec<u8>>
Wraps the corresponding public SecKeyRef operation.
Examples found in repository?
examples/15_key_encrypt_export.rs (line 37)
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}Sourcepub fn encrypt(
&self,
algorithm: EncryptionAlgorithm,
plaintext: &[u8],
) -> Result<Vec<u8>>
pub fn encrypt( &self, algorithm: EncryptionAlgorithm, plaintext: &[u8], ) -> Result<Vec<u8>>
Wraps the corresponding public SecKeyRef operation.
Examples found in repository?
examples/15_key_encrypt_export.rs (lines 13-16)
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}Sourcepub fn verify_signature(
&self,
algorithm: SignatureAlgorithm,
signed_data: &[u8],
signature: &[u8],
) -> Result<bool>
pub fn verify_signature( &self, algorithm: SignatureAlgorithm, signed_data: &[u8], signature: &[u8], ) -> Result<bool>
Wraps the corresponding public SecKeyRef operation.
Examples found in repository?
examples/14_key_import_sign_verify.rs (lines 17-21)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let raw_key = PrivateKey::from_data(
8 &support::fixture("test-key-rsa.pkcs1.der"),
9 KeyType::Rsa,
10 2048,
11 )?;
12 let signature = raw_key.sign(
13 SignatureAlgorithm::RsaSignatureMessagePkcs1v15Sha256,
14 b"security-rs",
15 )?;
16 let certificate = Certificate::from_pem(&support::fixture("test-cert.pem"))?;
17 let verified = certificate.public_key()?.verify_signature(
18 SignatureAlgorithm::RsaSignatureMessagePkcs1v15Sha256,
19 b"security-rs",
20 &signature,
21 )?;
22 println!("signature_len={} verified={verified}", signature.len());
23 Ok(())
24}More examples
examples/15_key_encrypt_export.rs (lines 26-30)
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}Trait Implementations§
Auto Trait Implementations§
impl Freeze for PublicKey
impl RefUnwindSafe for PublicKey
impl !Send for PublicKey
impl !Sync for PublicKey
impl Unpin for PublicKey
impl UnsafeUnpin for PublicKey
impl UnwindSafe for PublicKey
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more