Botan 3.7.1
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
 
 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 emsa_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 31 of file pss_params.cpp.

31 :
33 m_mgf("MGF1", m_hash.BER_encode()),
34 m_mgf_hash(m_hash),
35 m_salt_len(salt_len) {}
std::vector< uint8_t > BER_encode() const
Definition asn1_obj.cpp:19

Referenced by from_emsa_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 37 of file pss_params.cpp.

37 {
38 BER_Decoder decoder(der);
39 this->decode_from(decoder);
40}

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 Botan::ASN1_Object::encode_into().

Referenced by 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(), 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 48 of file pss_params.cpp.

48 {
49 const size_t trailer_field = 1;
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 .start_context_specific(3)
62 .encode(trailer_field)
63 .end_cons()
64 .end_cons();
65}
size_t trailer_field() const
Definition pss_params.h:48

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

◆ from_emsa_name()

PSS_Params Botan::PSS_Params::from_emsa_name ( std::string_view emsa_name)
static

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

Definition at line 18 of file pss_params.cpp.

18 {
19 SCAN_Name scanner(emsa_name);
20
21 if((scanner.algo_name() != "PSS" && scanner.algo_name() != "PSS_Raw") || scanner.arg_count() != 3) {
22 throw Invalid_Argument(fmt("PSS_Params::from_emsa_name unexpected param '{}'", emsa_name));
23 }
24
25 const std::string hash_fn = scanner.arg(0);
26 BOTAN_ASSERT_NOMSG(scanner.arg(1) == "MGF1");
27 const size_t salt_len = scanner.arg_as_integer(2);
28 return PSS_Params(hash_fn, salt_len);
29}
#define BOTAN_ASSERT_NOMSG(expr)
Definition assert.h:59
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().

◆ hash_algid()

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

Definition at line 40 of file pss_params.h.

40{ return m_hash; }

◆ hash_function()

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

Definition at line 50 of file pss_params.h.

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

◆ mgf_algid()

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

Definition at line 42 of file pss_params.h.

42{ return m_mgf; }

◆ mgf_function()

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

Definition at line 52 of file pss_params.h.

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

◆ mgf_hash_algid()

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

Definition at line 44 of file pss_params.h.

44{ return m_mgf_hash; }

◆ salt_length()

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

Definition at line 46 of file pss_params.h.

46{ return m_salt_len; }

◆ serialize()

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

Definition at line 42 of file pss_params.cpp.

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

References Botan::DER_Encoder::encode().

◆ trailer_field()

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

Definition at line 48 of file pss_params.h.

48{ return m_trailer_field; }

Referenced by encode_into().


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