Botan 3.7.1
Crypto and TLS for C&
Botan::PK_Ops::Verification_with_Hash Class Referenceabstract

#include <pk_ops_impl.h>

Inheritance diagram for Botan::PK_Ops::Verification_with_Hash:
Botan::PK_Ops::Verification

Public Member Functions

std::string hash_function () const final
 
bool is_valid_signature (std::span< const uint8_t > sig) override
 
void update (std::span< const uint8_t > input) override
 
 ~Verification_with_Hash () override
 

Protected Member Functions

 Verification_with_Hash (const AlgorithmIdentifier &alg_id, std::string_view pk_algo, bool allow_null_parameters=false)
 
 Verification_with_Hash (std::string_view hash)
 
virtual bool verify (std::span< const uint8_t > msg, std::span< const uint8_t > sig)=0
 

Detailed Description

Definition at line 55 of file pk_ops_impl.h.

Constructor & Destructor Documentation

◆ ~Verification_with_Hash()

Botan::PK_Ops::Verification_with_Hash::~Verification_with_Hash ( )
overridedefault

◆ Verification_with_Hash() [1/2]

Botan::PK_Ops::Verification_with_Hash::Verification_with_Hash ( std::string_view hash)
explicitprotected

Definition at line 157 of file pk_ops.cpp.

157 :
158 Verification(), m_hash(create_signature_hash(padding)) {}

◆ Verification_with_Hash() [2/2]

Botan::PK_Ops::Verification_with_Hash::Verification_with_Hash ( const AlgorithmIdentifier & alg_id,
std::string_view pk_algo,
bool allow_null_parameters = false )
explicitprotected

Definition at line 166 of file pk_ops.cpp.

168 {
169 const auto oid_info = split_on(alg_id.oid().to_formatted_string(), '/');
170
171 if(oid_info.size() != 2 || oid_info[0] != pk_algo) {
172 throw Decoding_Error(
173 fmt("Unexpected AlgorithmIdentifier OID {} in association with {} key", alg_id.oid(), pk_algo));
174 }
175
176 if(!alg_id.parameters_are_empty()) {
177 if(alg_id.parameters_are_null()) {
178 if(!allow_null_parameters) {
179 throw Decoding_Error(fmt("Unexpected NULL AlgorithmIdentifier parameters for {}", pk_algo));
180 }
181 } else {
182 throw Decoding_Error(fmt("Unexpected AlgorithmIdentifier parameters for {}", pk_algo));
183 }
184 }
185
186 m_hash = HashFunction::create_or_throw(oid_info[1]);
187}
static std::unique_ptr< HashFunction > create_or_throw(std::string_view algo_spec, std::string_view provider="")
Definition hash.cpp:298
std::string fmt(std::string_view format, const T &... args)
Definition fmt.h:53
std::vector< std::string > split_on(std::string_view str, char delim)
Definition parsing.cpp:111

References Botan::HashFunction::create_or_throw(), Botan::fmt(), Botan::AlgorithmIdentifier::oid(), Botan::AlgorithmIdentifier::parameters_are_empty(), Botan::AlgorithmIdentifier::parameters_are_null(), Botan::split_on(), and Botan::OID::to_formatted_string().

Member Function Documentation

◆ hash_function()

std::string Botan::PK_Ops::Verification_with_Hash::hash_function ( ) const
finalvirtual

Return the hash function being used by this signer

Implements Botan::PK_Ops::Verification.

Definition at line 162 of file pk_ops.cpp.

162 {
163 return m_hash->name();
164}

◆ is_valid_signature()

bool Botan::PK_Ops::Verification_with_Hash::is_valid_signature ( std::span< const uint8_t > sig)
overridevirtual

Perform a verification operation

Parameters
sigthe signature to be checked with respect to the input

Implements Botan::PK_Ops::Verification.

Definition at line 193 of file pk_ops.cpp.

193 {
194 const std::vector<uint8_t> msg = m_hash->final_stdvec();
195 return verify(msg, sig);
196}
virtual bool verify(std::span< const uint8_t > msg, std::span< const uint8_t > sig)=0

◆ update()

void Botan::PK_Ops::Verification_with_Hash::update ( std::span< const uint8_t > input)
overridevirtual

Add more data to the message currently being signed

Parameters
inputthe input to be hashed/verified

Implements Botan::PK_Ops::Verification.

Definition at line 189 of file pk_ops.cpp.

189 {
190 m_hash->update(msg);
191}

◆ verify()

virtual bool Botan::PK_Ops::Verification_with_Hash::verify ( std::span< const uint8_t > msg,
std::span< const uint8_t > sig )
protectedpure virtual

Perform a signature check operation

Parameters
msgthe message
sigthe signature
Returns
if sig is a valid signature for msg

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