7#include <initializer_list>
12#include <userver/crypto/basic_types.hpp>
13#include <userver/crypto/certificate.hpp>
14#include <userver/crypto/exception.hpp>
15#include <userver/crypto/public_key.hpp>
16#include <userver/utils/flags.hpp>
18USERVER_NAMESPACE_BEGIN
25 explicit Verifier(
const std::string& name);
29 virtual void Verify(std::initializer_list<std::string_view> data, std::string_view raw_signature)
const = 0;
38 void Verify(std::initializer_list<std::string_view> data, std::string_view raw_signature)
const override;
42template <DigestSize Bits>
47 ~HmacShaVerifier()
override;
50 void Verify(std::initializer_list<std::string_view> data, std::string_view raw_signature)
const override;
58using VerifierHs1 = HmacShaVerifier<DigestSize::k160>;
59using VerifierHs256 = HmacShaVerifier<DigestSize::k256>;
60using VerifierHs384 = HmacShaVerifier<DigestSize::k384>;
61using VerifierHs512 = HmacShaVerifier<DigestSize::k512>;
65template <DsaType Type, DigestSize Bits>
75 void Verify(std::initializer_list<std::string_view> data, std::string_view raw_signature)
const override;
81 void VerifyDigest(std::string_view digest, std::string_view raw_signature)
const;
89using VerifierRs256 = DsaVerifier<DsaType::kRsa, DigestSize::k256>;
90using VerifierRs384 = DsaVerifier<DsaType::kRsa, DigestSize::k384>;
91using VerifierRs512 = DsaVerifier<DsaType::kRsa, DigestSize::k512>;
99using VerifierEs256 = DsaVerifier<DsaType::kEc, DigestSize::k256>;
100using VerifierEs384 = DsaVerifier<DsaType::kEc, DigestSize::k384>;
101using VerifierEs512 = DsaVerifier<DsaType::kEc, DigestSize::k512>;
109using VerifierPs256 = DsaVerifier<DsaType::kRsaPss, DigestSize::k256>;
110using VerifierPs384 = DsaVerifier<DsaType::kRsaPss, DigestSize::k384>;
111using VerifierPs512 = DsaVerifier<DsaType::kRsaPss, DigestSize::k512>;
115class CmsVerifier
final :
public NamedAlgo {
125 enum class InForm { kDer, kPem, kSMime };
130 ~CmsVerifier()
override;
133 void Verify(std::initializer_list<std::string_view> data, utils::Flags<
Flags> flags,
InForm in_form)
const;
142using VerifierRs1 = DsaVerifier<DsaType::kRsa, DigestSize::k160>;
148using VerifierPs1 = DsaVerifier<DsaType::kRsaPss, DigestSize::k160>;