summaryrefslogtreecommitdiffstats
path: root/openpgp/src/packet/key.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openpgp/src/packet/key.rs')
-rw-r--r--openpgp/src/packet/key.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/openpgp/src/packet/key.rs b/openpgp/src/packet/key.rs
index 7f7217bc..83e94f81 100644
--- a/openpgp/src/packet/key.rs
+++ b/openpgp/src/packet/key.rs
@@ -1743,6 +1743,35 @@ mod tests {
}
#[test]
+ fn key_encrypt_decrypt() -> Result<()> {
+ let mut g = quickcheck::StdThreadGen::new(256);
+ let p: Password = Vec::<u8>::arbitrary(&mut g).into();
+
+ let check = |key: Key4<SecretParts, UnspecifiedRole>| -> Result<()> {
+ let key: Key<_, _> = key.into();
+ let encrypted = key.clone().encrypt_secret(&p)?;
+ let decrypted = encrypted.decrypt_secret(&p)?;
+ assert_eq!(key, decrypted);
+ Ok(())
+ };
+
+ use crate::types::Curve::*;
+ for curve in vec![NistP256, NistP384, NistP521, Ed25519] {
+ let key: Key4<_, key::UnspecifiedRole>
+ = Key4::generate_ecc(true, curve.clone())?;
+ check(key)?;
+ }
+
+ for bits in vec![2048, 3072] {
+ let key: Key4<_, key::UnspecifiedRole>
+ = Key4::generate_rsa(bits)?;
+ check(key)?;
+ }
+
+ Ok(())
+ }
+
+ #[test]
fn eq() {
use crate::types::Curve::*;