Struct parsec_interface::operations::psa_key_attributes::Attributes [−][src]
pub struct Attributes {
pub lifetime: Lifetime,
pub key_type: Type,
pub bits: usize,
pub policy: Policy,
}Expand description
Native definition of the attributes needed to fully describe a cryptographic key.
Fields
lifetime: LifetimeLifetime of the key
key_type: TypeIntrinsic category and type of the key
bits: usizeSize of the key in bits
policy: PolicyPolicy restricting the permitted usage of the key
Implementations
Check if a key has permission to be exported
Check export in a fallible way
Example
use psa_crypto::types::key::{Attributes, Type, Lifetime, Policy, UsageFlags}; use psa_crypto::types::algorithm::{Algorithm, AsymmetricSignature, Hash}; let mut usage_flags: UsageFlags = Default::default(); let mut attributes = Attributes { key_type: Type::RsaKeyPair, bits: 1024, lifetime: Lifetime::Volatile, policy: Policy { usage_flags, permitted_algorithms: Algorithm::AsymmetricSignature(AsymmetricSignature::RsaPkcs1v15Sign { hash_alg: Hash::Sha256.into(), }), }, }; // Can not export because the export flag is set to false. attributes.can_export().unwrap_err();
Check if a key has permission to sign a message hash
Check hash signing permission in a fallible way
Check if a key has permission to verify a message hash
Check hash verifying permission in a fallible way
Check if a key has permission to sign a message
Check message signing permission in a fallible way
Check if a key has permission to verify a message
Check message verifying permission in a fallible way
Check if a key has permissions to encrypt a message
Check encrypt permission in a fallible way
Check if a key has permissions to decrypt a message
Check decrypt permission in a fallible way
Check if a key has permissions to be derived from
Check derive permission of a fallible way
Check if the alg given for a cryptographic operation is permitted to be used with the key
Check if alg is permitted in a fallible way
Check if the alg given for a cryptographic operation is compatible with the type of the key
Example
use psa_crypto::types::key::{Attributes, Type, Lifetime, Policy, UsageFlags}; use psa_crypto::types::algorithm::{Algorithm, AsymmetricSignature, Hash}; let permitted_alg = Algorithm::AsymmetricSignature(AsymmetricSignature::RsaPkcs1v15Sign { hash_alg: Hash::Sha256.into(), }); let alg = Algorithm::AsymmetricSignature(AsymmetricSignature::RsaPkcs1v15Sign { hash_alg: Hash::Sha256.into(), }); let mut usage_flags: UsageFlags = Default::default(); let mut attributes = Attributes { key_type: Type::RsaKeyPair, bits: 1024, lifetime: Lifetime::Volatile, policy: Policy { usage_flags, permitted_algorithms: permitted_alg, }, }; assert!(attributes.is_compatible_with_alg(alg)); attributes.key_type = Type::RsaPublicKey; assert!(attributes.is_compatible_with_alg(alg));
Trait Implementations
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<Attributes, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<Attributes, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
This method tests for self and other values to be equal, and is used
by ==. Read more
This method tests for !=.
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations
impl RefUnwindSafe for Attributes
impl Send for Attributes
impl Sync for Attributes
impl Unpin for Attributes
impl UnwindSafe for Attributes
Blanket Implementations
Mutably borrows from an owned value. Read more