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
54
55
56
//! Internal key definitions
//!
//! These APIs do not provide guaranteed RFC 9580 compliance,
//! since hashing is to be done externally.
//!
//!
//! # Generating a signed secret key and deriving a public key
//!
//! ```rust
//! use vpgp::composed::{
//! key::SecretKeyParamsBuilder, KeyDetails, KeyType, SecretKey, SecretSubkey,
//! };
//! use vpgp::crypto::{hash::HashAlgorithm, sym::SymmetricKeyAlgorithm};
//! use vpgp::errors::Result;
//! use vpgp::packet::{KeyFlags, UserAttribute, UserId};
//! use vpgp::types::{CompressionAlgorithm, PublicKeyTrait, SecretKeyTrait};
//! use rand::thread_rng;
//! use smallvec::*;
//!
//! let mut key_params = SecretKeyParamsBuilder::default();
//! key_params
//! .key_type(KeyType::Rsa(2048))
//! .can_certify(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(thread_rng())
//! .expect("Failed to generate a plain key.");
//! let passwd_fn = || String::new();
//! let signed_secret_key = secret_key
//! .sign(&mut thread_rng(), 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 separately.
//!
//! [Packet based signing and verifying]: super::super::packet
//! [signing and verifying with external hashing]: super::signed_key
pub use *;
pub use *;
pub use *;
pub use *;