[−][src]Module pgp::composed::key
Internal key definitions
These APIs do not provide guaranteed RFC4880 compliance, since hashing is to be done externally.
Generating a signed secret key and deriving a public key
use pgp::composed::{KeyType, KeyDetails, SecretKey, SecretSubkey, key::SecretKeyParamsBuilder}; use pgp::errors::Result; use pgp::packet::{KeyFlags, UserAttribute, UserId}; use pgp::types::{PublicKeyTrait, SecretKeyTrait, CompressionAlgorithm}; use pgp::crypto::{sym::SymmetricKeyAlgorithm, hash::HashAlgorithm}; use smallvec::*; let mut key_params = SecretKeyParamsBuilder::default(); key_params .key_type(KeyType::Rsa(2048)) .can_create_certificates(false) .can_sign(true) .primary_user_id("Me <me@example.com>".into()) .preferred_symmetric_algorithms(smallvec![ SymmetricKeyAlgorithm::AES256, ]) .preferred_hash_algorithms(smallvec![ HashAlgorithm::SHA2_256, ]) .preferred_compression_algorithms(smallvec![ CompressionAlgorithm::ZLIB, ]); let secret_key_params = key_params.build().expect("Must be able to create secret key params"); let secret_key = secret_key_params.generate().expect("Failed to generate a plain key."); let passwd_fn = || String::new(); let signed_secret_key = secret_key.sign(passwd_fn).expect("Must be able to sign its own metadata"); let public_key = signed_secret_key.public_key();
Packet based signing and verifying as well as signing and verifying with external hashing are demoed seperately.
Structs
KeyDetails | |
PublicKey | User facing interface to work with a public key. |
PublicSubkey | |
SecretKey | User facing interface to work with a secret key. |
SecretKeyParams | |
SecretKeyParamsBuilder | Builder for |
SecretSubkey | |
SubkeyParams | |
SubkeyParamsBuilder | Builder for |
Enums
KeyType |