pub struct LAPublicKey { /* private fields */ }Expand description
Managed wrapper around Apple’s LAPublicKey.
Implementations§
Source§impl LAPublicKey
impl LAPublicKey
Sourcepub fn export_bytes(&self) -> Result<Vec<u8>>
pub fn export_bytes(&self) -> Result<Vec<u8>>
Examples found in repository?
examples/09_public_key.rs (line 24)
12fn main() -> Result<(), Box<dyn std::error::Error>> {
13 let store = LARightStore::shared()?;
14 let right = LARight::new()?;
15 let identifier = unique_identifier("public-key");
16
17 match store.save_right(&right, &identifier) {
18 Ok(persisted) => {
19 let public_key = persisted.public_key()?;
20 let sign = SecKeyAlgorithm::ecdsa_signature_message_x962_sha256();
21 let encrypt =
22 SecKeyAlgorithm::ecies_encryption_cofactor_variable_iv_x963_sha256_aes_gcm();
23
24 println!("public key bytes: {}", public_key.export_bytes()?.len());
25 println!("can verify: {}", public_key.can_verify_using(&sign)?);
26 println!("can encrypt: {}", public_key.can_encrypt_using(&encrypt)?);
27 println!(
28 "private key can sign: {}",
29 persisted.key()?.can_sign_using(&sign)?
30 );
31 store.remove_right(&persisted)?;
32 }
33 Err(error) => {
34 println!("public-key APIs need entitlements on many systems: {error}");
35 }
36 }
37
38 println!("✅ public-key smoke OK");
39 Ok(())
40}Sourcepub fn can_encrypt_using(&self, algorithm: &SecKeyAlgorithm) -> Result<bool>
pub fn can_encrypt_using(&self, algorithm: &SecKeyAlgorithm) -> Result<bool>
Check whether an algorithm can encrypt with this key.
§Errors
Returns an error if the Swift bridge rejects the request.
Examples found in repository?
examples/09_public_key.rs (line 26)
12fn main() -> Result<(), Box<dyn std::error::Error>> {
13 let store = LARightStore::shared()?;
14 let right = LARight::new()?;
15 let identifier = unique_identifier("public-key");
16
17 match store.save_right(&right, &identifier) {
18 Ok(persisted) => {
19 let public_key = persisted.public_key()?;
20 let sign = SecKeyAlgorithm::ecdsa_signature_message_x962_sha256();
21 let encrypt =
22 SecKeyAlgorithm::ecies_encryption_cofactor_variable_iv_x963_sha256_aes_gcm();
23
24 println!("public key bytes: {}", public_key.export_bytes()?.len());
25 println!("can verify: {}", public_key.can_verify_using(&sign)?);
26 println!("can encrypt: {}", public_key.can_encrypt_using(&encrypt)?);
27 println!(
28 "private key can sign: {}",
29 persisted.key()?.can_sign_using(&sign)?
30 );
31 store.remove_right(&persisted)?;
32 }
33 Err(error) => {
34 println!("public-key APIs need entitlements on many systems: {error}");
35 }
36 }
37
38 println!("✅ public-key smoke OK");
39 Ok(())
40}Sourcepub fn can_verify_using(&self, algorithm: &SecKeyAlgorithm) -> Result<bool>
pub fn can_verify_using(&self, algorithm: &SecKeyAlgorithm) -> Result<bool>
Check whether an algorithm can verify signatures with this key.
§Errors
Returns an error if the Swift bridge rejects the request.
Examples found in repository?
examples/09_public_key.rs (line 25)
12fn main() -> Result<(), Box<dyn std::error::Error>> {
13 let store = LARightStore::shared()?;
14 let right = LARight::new()?;
15 let identifier = unique_identifier("public-key");
16
17 match store.save_right(&right, &identifier) {
18 Ok(persisted) => {
19 let public_key = persisted.public_key()?;
20 let sign = SecKeyAlgorithm::ecdsa_signature_message_x962_sha256();
21 let encrypt =
22 SecKeyAlgorithm::ecies_encryption_cofactor_variable_iv_x963_sha256_aes_gcm();
23
24 println!("public key bytes: {}", public_key.export_bytes()?.len());
25 println!("can verify: {}", public_key.can_verify_using(&sign)?);
26 println!("can encrypt: {}", public_key.can_encrypt_using(&encrypt)?);
27 println!(
28 "private key can sign: {}",
29 persisted.key()?.can_sign_using(&sign)?
30 );
31 store.remove_right(&persisted)?;
32 }
33 Err(error) => {
34 println!("public-key APIs need entitlements on many systems: {error}");
35 }
36 }
37
38 println!("✅ public-key smoke OK");
39 Ok(())
40}Trait Implementations§
Auto Trait Implementations§
impl Freeze for LAPublicKey
impl RefUnwindSafe for LAPublicKey
impl !Send for LAPublicKey
impl !Sync for LAPublicKey
impl Unpin for LAPublicKey
impl UnsafeUnpin for LAPublicKey
impl UnwindSafe for LAPublicKey
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