1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//! 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 //! //! ```rust //! 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. //! //! [Packet based signing and verifying]: super::super::packet //! [signing and verifying with external hashing]: super::signed_key mod builder; mod public; mod secret; mod shared; pub use self::builder::*; pub use self::public::*; pub use self::secret::*; pub use self::shared::*;