summaryrefslogtreecommitdiffstats
path: root/openpgp/src/crypto/backend/nettle/asymmetric.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openpgp/src/crypto/backend/nettle/asymmetric.rs')
-rw-r--r--openpgp/src/crypto/backend/nettle/asymmetric.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/openpgp/src/crypto/backend/nettle/asymmetric.rs b/openpgp/src/crypto/backend/nettle/asymmetric.rs
index 2e631edd..dc1a54f2 100644
--- a/openpgp/src/crypto/backend/nettle/asymmetric.rs
+++ b/openpgp/src/crypto/backend/nettle/asymmetric.rs
@@ -12,7 +12,10 @@ use crate::packet::{key, Key};
use crate::crypto::asymmetric::KeyPair;
use crate::crypto::backend::interface::Asymmetric;
use crate::crypto::mpi::{self, MPI, PublicKey};
-use crate::crypto::SessionKey;
+use crate::crypto::{
+ SessionKey,
+ mem::Protected,
+};
use crate::types::{Curve, HashAlgorithm};
impl Asymmetric for super::Backend {
@@ -20,8 +23,10 @@ impl Asymmetric for super::Backend {
use PublicKeyAlgorithm::*;
#[allow(deprecated)]
match algo {
+ X25519 | Ed25519 |
RSAEncryptSign | RSAEncrypt | RSASign | DSA | ECDH | ECDSA | EdDSA
=> true,
+ X448 | Ed448 |
ElGamalEncrypt | ElGamalEncryptSign | Private(_) | Unknown(_)
=> false,
}
@@ -273,11 +278,13 @@ impl<P: key::KeyParts, R: key::KeyRole> Key<P, R> {
ECDH => crate::crypto::ecdh::encrypt(self.parts_as_public(),
data),
- RSASign | DSA | ECDSA | EdDSA =>
+ RSASign | DSA | ECDSA | EdDSA | Ed25519 | Ed448 =>
Err(Error::InvalidOperation(
format!("{} is not an encryption algorithm", self.pk_algo())
).into()),
+ X25519 | // Handled in common code.
+ X448 | // Handled in common code.
ElGamalEncrypt | ElGamalEncryptSign |
Private(_) | Unknown(_) =>
Err(Error::UnsupportedPublicKeyAlgorithm(self.pk_algo()).into()),
@@ -338,7 +345,6 @@ impl<P: key::KeyParts, R: key::KeyRole> Key<P, R> {
}
use std::time::SystemTime;
-use crate::crypto::mem::Protected;
use crate::packet::key::{Key4, SecretParts};
use crate::types::PublicKeyAlgorithm;