#[non_exhaustive]pub enum SymmetricAlgorithm {
}Expand description
The symmetric-key algorithms as defined in Section 9.3 of RFC 9580.
The values can be converted into and from their corresponding values of the serialized format.
Use SymmetricAlgorithm::from to translate a numeric value to a
symbolic one.
§Examples
Use SymmetricAlgorithm to set the preferred symmetric algorithms on a signature:
use sequoia_openpgp as openpgp;
use openpgp::packet::signature::SignatureBuilder;
use openpgp::types::{HashAlgorithm, SymmetricAlgorithm, SignatureType};
let mut builder = SignatureBuilder::new(SignatureType::DirectKey)
.set_hash_algo(HashAlgorithm::SHA512)
.set_preferred_symmetric_algorithms(vec![
SymmetricAlgorithm::AES256,
])?;Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Unencrypted
Null encryption.
IDEA
Use a newer symmetric algorithm instead.
IDEA block cipher, deprecated in RFC 9580.
TripleDES
Use a newer symmetric algorithm instead.
3-DES in EDE configuration, deprecated in RFC 9580.
CAST5
Use a newer symmetric algorithm instead.
CAST5/CAST128 block cipher, deprecated in RFC 9580.
Blowfish
Schneier et.al. Blowfish block cipher.
AES128
10-round AES.
AES192
12-round AES.
AES256
14-round AES.
Twofish
Twofish block cipher.
Camellia128
18 rounds of NESSIEs Camellia.
Camellia192
24 rounds of NESSIEs Camellia w/192 bit keys.
Camellia256
24 rounds of NESSIEs Camellia w/256 bit keys.
Private(u8)
Private algorithm identifier.
Unknown(u8)
Unknown algorithm identifier.
Implementations§
Source§impl SymmetricAlgorithm
impl SymmetricAlgorithm
Sourcepub fn variants() -> impl Iterator<Item = SymmetricAlgorithm>
pub fn variants() -> impl Iterator<Item = SymmetricAlgorithm>
Returns an iterator over all valid variants.
Returns an iterator over all known variants. This does not
include the SymmetricAlgorithm::Unencrypted,
SymmetricAlgorithm::Private, or
SymmetricAlgorithm::Unknown variants.
Sourcepub fn is_supported(&self) -> bool
pub fn is_supported(&self) -> bool
Returns whether this algorithm is supported by the crypto backend.
All backends support all the AES variants.
§Examples
use sequoia_openpgp as openpgp;
use openpgp::types::SymmetricAlgorithm;
assert!(SymmetricAlgorithm::AES128.is_supported());
assert!(SymmetricAlgorithm::AES192.is_supported());
assert!(SymmetricAlgorithm::AES256.is_supported());
assert!(!SymmetricAlgorithm::Unencrypted.is_supported());
assert!(!SymmetricAlgorithm::Private(101).is_supported());Sourcepub fn key_size(self) -> Result<usize, Error>
pub fn key_size(self) -> Result<usize, Error>
Length of a key for this algorithm in bytes.
Fails if the algorithm isn’t known to Sequoia.
Sourcepub fn block_size(self) -> Result<usize, Error>
pub fn block_size(self) -> Result<usize, Error>
Length of a block for this algorithm in bytes.
Fails if the algorithm isn’t known to Sequoia.
Trait Implementations§
Source§impl Clone for SymmetricAlgorithm
impl Clone for SymmetricAlgorithm
Source§fn clone(&self) -> SymmetricAlgorithm
fn clone(&self) -> SymmetricAlgorithm
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SymmetricAlgorithm
Source§impl Debug for SymmetricAlgorithm
impl Debug for SymmetricAlgorithm
Source§impl Default for SymmetricAlgorithm
impl Default for SymmetricAlgorithm
Source§fn default() -> SymmetricAlgorithm
fn default() -> SymmetricAlgorithm
Source§impl Display for SymmetricAlgorithm
Formats the symmetric algorithm name.
impl Display for SymmetricAlgorithm
Formats the symmetric algorithm name.
There are two ways the symmetric algorithm name can be formatted. By default the short name is used. The alternate format uses the full algorithm name.
§Examples
use sequoia_openpgp as openpgp;
use openpgp::types::SymmetricAlgorithm;
// default, short format
assert_eq!("AES-128", format!("{}", SymmetricAlgorithm::AES128));
// alternate, long format
assert_eq!("AES with 128-bit key", format!("{:#}", SymmetricAlgorithm::AES128));impl Eq for SymmetricAlgorithm
Source§impl From<u8> for SymmetricAlgorithm
impl From<u8> for SymmetricAlgorithm
Source§fn from(u: u8) -> SymmetricAlgorithm
fn from(u: u8) -> SymmetricAlgorithm
Source§impl Hash for SymmetricAlgorithm
impl Hash for SymmetricAlgorithm
Source§impl Ord for SymmetricAlgorithm
impl Ord for SymmetricAlgorithm
Source§fn cmp(&self, other: &SymmetricAlgorithm) -> Ordering
fn cmp(&self, other: &SymmetricAlgorithm) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for SymmetricAlgorithm
impl PartialEq for SymmetricAlgorithm
Source§impl PartialOrd for SymmetricAlgorithm
impl PartialOrd for SymmetricAlgorithm
impl StructuralPartialEq for SymmetricAlgorithm
Auto Trait Implementations§
impl Freeze for SymmetricAlgorithm
impl RefUnwindSafe for SymmetricAlgorithm
impl Send for SymmetricAlgorithm
impl Sync for SymmetricAlgorithm
impl Unpin for SymmetricAlgorithm
impl UnsafeUnpin for SymmetricAlgorithm
impl UnwindSafe for SymmetricAlgorithm
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> MaybeSend for T
impl<T> MaybeSync for T
impl<T> Package for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read more