8#ifndef BOTAN_ISO9796_H_
9#define BOTAN_ISO9796_H_
11#include <botan/internal/sig_padding.h>
30 ISO_9796_DS2(std::unique_ptr<HashFunction> hash,
bool implicit,
size_t salt_size) :
31 m_hash(std::move(hash)), m_implicit(implicit), m_salt_len(salt_size) {}
35 std::string
name()
const override;
38 void update(
const uint8_t input[],
size_t length)
override;
40 std::vector<uint8_t>
raw_data()
override;
42 std::vector<uint8_t> encoding_of(std::span<const uint8_t> msg,
46 bool verify(std::span<const uint8_t> coded, std::span<const uint8_t> raw,
size_t key_bits)
override;
48 std::unique_ptr<HashFunction> m_hash;
51 std::vector<uint8_t> m_msg_buffer;
63 explicit ISO_9796_DS3(std::unique_ptr<HashFunction> hash,
bool implicit =
false) :
64 m_hash(std::move(hash)), m_implicit(implicit) {}
66 std::string
name()
const override;
71 void update(
const uint8_t input[],
size_t length)
override;
73 std::vector<uint8_t>
raw_data()
override;
75 std::vector<uint8_t> encoding_of(std::span<const uint8_t> msg,
79 bool verify(std::span<const uint8_t> coded, std::span<const uint8_t> raw,
size_t key_bits)
override;
81 std::unique_ptr<HashFunction> m_hash;
83 std::vector<uint8_t> m_msg_buffer;
std::string name() const override
ISO_9796_DS2(std::unique_ptr< HashFunction > hash, bool implicit, size_t salt_size)
std::string hash_function() const override
std::string hash_function() const override
std::string name() const override
ISO_9796_DS3(std::unique_ptr< HashFunction > hash, bool implicit=false)
virtual std::vector< uint8_t > raw_data()=0