Botan 3.9.0
Crypto and TLS for C&
Botan::PSS_Params Class Referencefinal

#include <pss_params.h>

Inheritance diagram for Botan::PSS_Params:
Botan::ASN1_Object

Public Member Functions

std::vector< uint8_t > BER_encode () const
void encode_into (DER_Encoder &to) const override
const AlgorithmIdentifierhash_algid () const
std::string hash_function () const
const AlgorithmIdentifiermgf_algid () const
std::string mgf_function () const
const AlgorithmIdentifiermgf_hash_algid () const
BOTAN_FUTURE_EXPLICIT PSS_Params (std::span< const uint8_t > der)
 PSS_Params (std::string_view hash_fn, size_t salt_len)
size_t salt_length () const
std::vector< uint8_t > serialize () const
size_t trailer_field () const

Static Public Member Functions

static PSS_Params from_emsa_name (std::string_view padding_name)
static PSS_Params from_padding_name (std::string_view padding_name)

Detailed Description

PSS parameters type

Handles encoding/decoding of RSASSA-PSS-params from RFC 3447

Only MGF1 is supported, and the trailer field must 1 (ie the variant from IEEE 1363a using a hash identifier is not supported)

Definition at line 24 of file pss_params.h.

Constructor & Destructor Documentation

◆ PSS_Params() [1/2]

Botan::PSS_Params::PSS_Params ( std::string_view hash_fn,
size_t salt_len )

Definition at line 32 of file pss_params.cpp.

32 :
34 m_mgf("MGF1", m_hash.BER_encode()),
35 m_mgf_hash(m_hash),
36 m_salt_len(salt_len),
37 m_trailer_field(1) {}

References Botan::ASN1_Object::BER_encode().

Referenced by from_emsa_name(), and from_padding_name().

◆ PSS_Params() [2/2]

Botan::PSS_Params::PSS_Params ( std::span< const uint8_t > der)

Decode an encoded RSASSA-PSS-params

Definition at line 39 of file pss_params.cpp.

39 : m_salt_len(0), m_trailer_field(1) {
40 BER_Decoder decoder(der);
41 this->decode_from(decoder);
42}

Member Function Documentation

◆ BER_encode()

std::vector< uint8_t > Botan::ASN1_Object::BER_encode ( ) const
inherited

Return the encoding of this object. This is a convenience method when just one object needs to be serialized. Use DER_Encoder for complicated encodings.

Definition at line 19 of file asn1_obj.cpp.

19 {
20 std::vector<uint8_t> output;
21 DER_Encoder der(output);
22 this->encode_into(der);
23 return output;
24}
virtual void encode_into(DER_Encoder &to) const =0

References encode_into().

Referenced by decode_from(), Botan::Certificate_Store_In_SQL::find_all_certs(), Botan::Certificate_Store_In_SQL::find_cert(), Botan::X509_Certificate::fingerprint(), Botan::Certificate_Store_In_SQL::insert_cert(), Botan::X509_Object::PEM_encode(), Botan::PSS_Params::PSS_Params(), and Botan::Certificate_Store_In_SQL::revoke_cert().

◆ encode_into()

void Botan::PSS_Params::encode_into ( DER_Encoder & to) const
overridevirtual

Encode whatever this object is into to

Parameters
tothe DER_Encoder that will be written to

Implements Botan::ASN1_Object.

Definition at line 50 of file pss_params.cpp.

50 {
51 to.start_sequence()
52 .start_context_specific(0)
53 .encode(m_hash)
54 .end_cons()
55 .start_context_specific(1)
56 .encode(m_mgf)
57 .end_cons()
58 .start_context_specific(2)
59 .encode(m_salt_len)
60 .end_cons()
61 .end_cons();
62}

References Botan::DER_Encoder::encode(), Botan::DER_Encoder::end_cons(), Botan::DER_Encoder::start_context_specific(), and Botan::DER_Encoder::start_sequence().

◆ from_emsa_name()

PSS_Params Botan::PSS_Params::from_emsa_name ( std::string_view padding_name)
inlinestatic

Note that the only valid strings you can pass to this function are values returned by SignaturePaddingScheme::name() and these may change in a minor release.

Definition at line 39 of file pss_params.h.

39 {
40 return PSS_Params::from_padding_name(padding_name);
41 }
static PSS_Params from_padding_name(std::string_view padding_name)

References from_emsa_name(), from_padding_name(), and PSS_Params().

Referenced by from_emsa_name().

◆ from_padding_name()

PSS_Params Botan::PSS_Params::from_padding_name ( std::string_view padding_name)
static

Note that the only valid strings you can pass to this function are values returned by SignaturePaddingScheme::name() and these may change in a minor release.

Definition at line 19 of file pss_params.cpp.

19 {
20 SCAN_Name scanner(padding_name);
21
22 if((scanner.algo_name() != "PSS" && scanner.algo_name() != "PSS_Raw") || scanner.arg_count() != 3) {
23 throw Invalid_Argument(fmt("PSS_Params::from_padding_name unexpected param '{}'", padding_name));
24 }
25
26 const std::string hash_fn = scanner.arg(0);
27 BOTAN_ASSERT_NOMSG(scanner.arg(1) == "MGF1");
28 const size_t salt_len = scanner.arg_as_integer(2);
29 return PSS_Params(hash_fn, salt_len);
30}
#define BOTAN_ASSERT_NOMSG(expr)
Definition assert.h:75
PSS_Params(std::string_view hash_fn, size_t salt_len)
std::string fmt(std::string_view format, const T &... args)
Definition fmt.h:53

References Botan::SCAN_Name::algo_name(), Botan::SCAN_Name::arg(), Botan::SCAN_Name::arg_as_integer(), Botan::SCAN_Name::arg_count(), BOTAN_ASSERT_NOMSG, Botan::fmt(), and PSS_Params().

Referenced by from_emsa_name().

◆ hash_algid()

const AlgorithmIdentifier & Botan::PSS_Params::hash_algid ( ) const
inline

Definition at line 50 of file pss_params.h.

50{ return m_hash; }

Referenced by hash_function().

◆ hash_function()

std::string Botan::PSS_Params::hash_function ( ) const
inline

Definition at line 60 of file pss_params.h.

60{ return hash_algid().oid().to_formatted_string(); }
const OID & oid() const
Definition asn1_obj.h:479
std::string to_formatted_string() const
Definition asn1_oid.cpp:139
const AlgorithmIdentifier & hash_algid() const
Definition pss_params.h:50

References hash_algid().

◆ mgf_algid()

const AlgorithmIdentifier & Botan::PSS_Params::mgf_algid ( ) const
inline

Definition at line 52 of file pss_params.h.

52{ return m_mgf; }

Referenced by mgf_function().

◆ mgf_function()

std::string Botan::PSS_Params::mgf_function ( ) const
inline

Definition at line 62 of file pss_params.h.

62{ return mgf_algid().oid().to_formatted_string(); }
const AlgorithmIdentifier & mgf_algid() const
Definition pss_params.h:52

References mgf_algid().

◆ mgf_hash_algid()

const AlgorithmIdentifier & Botan::PSS_Params::mgf_hash_algid ( ) const
inline

Definition at line 54 of file pss_params.h.

54{ return m_mgf_hash; }

◆ salt_length()

size_t Botan::PSS_Params::salt_length ( ) const
inline

Definition at line 56 of file pss_params.h.

56{ return m_salt_len; }

◆ serialize()

std::vector< uint8_t > Botan::PSS_Params::serialize ( ) const

Definition at line 44 of file pss_params.cpp.

44 {
45 std::vector<uint8_t> output;
46 DER_Encoder(output).encode(*this);
47 return output;
48}

References Botan::DER_Encoder::encode().

◆ trailer_field()

size_t Botan::PSS_Params::trailer_field ( ) const
inline

Definition at line 58 of file pss_params.h.

58{ return m_trailer_field; }

The documentation for this class was generated from the following files: