Enum sequoia_openpgp::types::HashAlgorithm
source · #[non_exhaustive]
pub enum HashAlgorithm {
MD5,
SHA1,
RipeMD,
SHA256,
SHA384,
SHA512,
SHA224,
Private(u8),
Unknown(u8),
}
Expand description
The OpenPGP hash algorithms as defined in Section 9.4 of RFC 4880.
Note: This enum cannot be exhaustively matched to allow future extensions.
Examples
Use HashAlgorithm
to set the preferred hash algorithms on a signature:
use sequoia_openpgp as openpgp;
use openpgp::packet::signature::SignatureBuilder;
use openpgp::types::{HashAlgorithm, SignatureType};
let mut builder = SignatureBuilder::new(SignatureType::DirectKey)
.set_hash_algo(HashAlgorithm::SHA512);
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
MD5
Rivest et.al. message digest 5.
SHA1
NIST Secure Hash Algorithm (deprecated)
RipeMD
RIPEMD-160
SHA256
256-bit version of SHA2
SHA384
384-bit version of SHA2
SHA512
512-bit version of SHA2
SHA224
224-bit version of SHA2
Private(u8)
Private hash algorithm identifier.
Unknown(u8)
Unknown hash algorithm identifier.
Implementations§
source§impl HashAlgorithm
impl HashAlgorithm
sourcepub fn is_supported(self) -> bool
pub fn is_supported(self) -> bool
Whether Sequoia supports this algorithm.
source§impl HashAlgorithm
impl HashAlgorithm
sourcepub fn context(self) -> Result<Box<dyn Digest>>
pub fn context(self) -> Result<Box<dyn Digest>>
Creates a new hash context for this algorithm.
Errors
Fails with Error::UnsupportedHashAlgorithm
if Sequoia does
not support this algorithm. See
HashAlgorithm::is_supported
.
sourcepub fn oid(self) -> Result<&'static [u8]>
pub fn oid(self) -> Result<&'static [u8]>
Returns the prefix of a serialized DigestInfo
structure
that contains the ASN.1 OID of this hash algorithm.
The prefix is used for encoding RSA signatures according to
the EMSA-PKCS1-v1_5
algorithm as specified in RFC 8017.
let algo = HashAlgorithm::SHA512;
let digest = // raw bytes of the digest
let digest_info = Vec::from(algo.oid()?).extend(digest);
Errors
Fails with Error::UnsupportedHashAlgorithm
for unknown or
private hash algorithms.
source§impl HashAlgorithm
impl HashAlgorithm
sourcepub fn text_name(&self) -> Result<&str>
pub fn text_name(&self) -> Result<&str>
Returns the text name of this algorithm.
Section 9.4 of RFC 4880 defines a textual representation of hash algorithms. This is used in cleartext signed messages (see Section 7 of RFC 4880).
Examples
assert_eq!(HashAlgorithm::RipeMD.text_name()?, "RIPEMD160");
sourcepub fn variants() -> impl Iterator<Item = Self>
pub fn variants() -> impl Iterator<Item = Self>
Returns an iterator over all valid variants.
Returns an iterator over all known variants. This does not
include the HashAlgorithm::Private
, or
HashAlgorithm::Unknown
variants.
Trait Implementations§
source§impl Clone for HashAlgorithm
impl Clone for HashAlgorithm
source§fn clone(&self) -> HashAlgorithm
fn clone(&self) -> HashAlgorithm
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for HashAlgorithm
impl Debug for HashAlgorithm
source§impl Default for HashAlgorithm
impl Default for HashAlgorithm
source§impl Display for HashAlgorithm
impl Display for HashAlgorithm
source§impl From<HashAlgorithm> for u8
impl From<HashAlgorithm> for u8
source§fn from(h: HashAlgorithm) -> u8
fn from(h: HashAlgorithm) -> u8
source§impl From<u8> for HashAlgorithm
impl From<u8> for HashAlgorithm
source§impl FromStr for HashAlgorithm
impl FromStr for HashAlgorithm
source§impl Hash for HashAlgorithm
impl Hash for HashAlgorithm
source§impl Ord for HashAlgorithm
impl Ord for HashAlgorithm
source§fn cmp(&self, other: &HashAlgorithm) -> Ordering
fn cmp(&self, other: &HashAlgorithm) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq<HashAlgorithm> for HashAlgorithm
impl PartialEq<HashAlgorithm> for HashAlgorithm
source§fn eq(&self, other: &HashAlgorithm) -> bool
fn eq(&self, other: &HashAlgorithm) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd<HashAlgorithm> for HashAlgorithm
impl PartialOrd<HashAlgorithm> for HashAlgorithm
source§fn partial_cmp(&self, other: &HashAlgorithm) -> Option<Ordering>
fn partial_cmp(&self, other: &HashAlgorithm) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more