pub struct PrivateKey { /* private fields */ }Expand description
Wraps a private SecKeyRef.
Implementations§
Source§impl PrivateKey
impl PrivateKey
Sourcepub fn type_id() -> usize
pub fn type_id() -> usize
Wraps the corresponding private SecKeyRef operation.
Examples found in repository?
examples/15_key_encrypt_export.rs (line 34)
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 from_data(
data: &[u8],
key_type: KeyType,
key_size_bits: usize,
) -> Result<Self>
pub fn from_data( data: &[u8], key_type: KeyType, key_size_bits: usize, ) -> Result<Self>
Wraps the corresponding private SecKeyRef operation.
Examples found in repository?
examples/14_key_import_sign_verify.rs (lines 7-11)
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 6-10)
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 import_item(
data: &[u8],
file_name_or_extension: Option<&str>,
format: ExternalFormat,
item_type: ExternalItemType,
) -> Result<Self>
pub fn import_item( data: &[u8], file_name_or_extension: Option<&str>, format: ExternalFormat, item_type: ExternalItemType, ) -> Result<Self>
Wraps the corresponding private SecKeyRef operation.
Sourcepub fn import_pem(pem: &[u8]) -> Result<Self>
pub fn import_pem(pem: &[u8]) -> Result<Self>
Wraps the corresponding private SecKeyRef operation.
Sourcepub fn public_key(&self) -> Result<PublicKey>
pub fn public_key(&self) -> Result<PublicKey>
Wraps the corresponding private SecKeyRef operation.
Examples found in repository?
examples/15_key_encrypt_export.rs (line 11)
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 attributes(&self) -> Result<Value>
pub fn attributes(&self) -> Result<Value>
Wraps the corresponding private SecKeyRef operation.
Sourcepub fn block_size(&self) -> usize
pub fn block_size(&self) -> usize
Wraps the corresponding private SecKeyRef operation.
Sourcepub fn external_representation(&self) -> Result<Vec<u8>>
pub fn external_representation(&self) -> Result<Vec<u8>>
Wraps the corresponding private SecKeyRef operation.
Examples found in repository?
examples/15_key_encrypt_export.rs (line 36)
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 sign(
&self,
algorithm: SignatureAlgorithm,
data: &[u8],
) -> Result<Vec<u8>>
pub fn sign( &self, algorithm: SignatureAlgorithm, data: &[u8], ) -> Result<Vec<u8>>
Wraps the corresponding private SecKeyRef operation.
Examples found in repository?
examples/14_key_import_sign_verify.rs (lines 12-15)
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 21-24)
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 decrypt(
&self,
algorithm: EncryptionAlgorithm,
ciphertext: &[u8],
) -> Result<Vec<u8>>
pub fn decrypt( &self, algorithm: EncryptionAlgorithm, ciphertext: &[u8], ) -> Result<Vec<u8>>
Wraps the corresponding private SecKeyRef operation.
Examples found in repository?
examples/15_key_encrypt_export.rs (line 18)
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 PrivateKey
impl RefUnwindSafe for PrivateKey
impl !Send for PrivateKey
impl !Sync for PrivateKey
impl Unpin for PrivateKey
impl UnsafeUnpin for PrivateKey
impl UnwindSafe for PrivateKey
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