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::*;