Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/source/common/ssl/matching/inputs.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include "envoy/extensions/matching/common_inputs/ssl/v3/ssl_inputs.pb.h"
4
#include "envoy/extensions/matching/common_inputs/ssl/v3/ssl_inputs.pb.validate.h"
5
#include "envoy/matcher/matcher.h"
6
7
#include "absl/strings/str_join.h"
8
9
namespace Envoy {
10
namespace Ssl {
11
namespace Matching {
12
13
template <class InputType, class ProtoType, class MatchingDataType>
14
class BaseFactory : public Matcher::DataInputFactory<MatchingDataType> {
15
protected:
16
60
  explicit BaseFactory(const std::string& name) : name_(name) {}
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Network::MatchingData>::BaseFactory(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
16
10
  explicit BaseFactory(const std::string& name) : name_(name) {}
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Network::MatchingData>::BaseFactory(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
16
10
  explicit BaseFactory(const std::string& name) : name_(name) {}
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Network::MatchingData>::BaseFactory(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
16
10
  explicit BaseFactory(const std::string& name) : name_(name) {}
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Http::HttpMatchingData>::BaseFactory(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
16
10
  explicit BaseFactory(const std::string& name) : name_(name) {}
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Http::HttpMatchingData>::BaseFactory(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
16
10
  explicit BaseFactory(const std::string& name) : name_(name) {}
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Http::HttpMatchingData>::BaseFactory(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
16
10
  explicit BaseFactory(const std::string& name) : name_(name) {}
17
18
public:
19
15.1k
  std::string name() const override { return "envoy.matching.inputs." + name_; }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Network::MatchingData>::name() const
Line
Count
Source
19
2.51k
  std::string name() const override { return "envoy.matching.inputs." + name_; }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Network::MatchingData>::name() const
Line
Count
Source
19
2.51k
  std::string name() const override { return "envoy.matching.inputs." + name_; }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Network::MatchingData>::name() const
Line
Count
Source
19
2.51k
  std::string name() const override { return "envoy.matching.inputs." + name_; }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Http::HttpMatchingData>::name() const
Line
Count
Source
19
2.51k
  std::string name() const override { return "envoy.matching.inputs." + name_; }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Http::HttpMatchingData>::name() const
Line
Count
Source
19
2.51k
  std::string name() const override { return "envoy.matching.inputs." + name_; }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Http::HttpMatchingData>::name() const
Line
Count
Source
19
2.51k
  std::string name() const override { return "envoy.matching.inputs." + name_; }
20
21
  Matcher::DataInputFactoryCb<MatchingDataType>
22
0
  createDataInputFactoryCb(const Protobuf::Message&, ProtobufMessage::ValidationVisitor&) override {
23
0
    return []() { return std::make_unique<InputType>(); };
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Network::MatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)::{lambda()#1}::operator()() const
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Network::MatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)::{lambda()#1}::operator()() const
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Network::MatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)::{lambda()#1}::operator()() const
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Http::HttpMatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)::{lambda()#1}::operator()() const
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Http::HttpMatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)::{lambda()#1}::operator()() const
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Http::HttpMatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)::{lambda()#1}::operator()() const
24
0
  };
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Network::MatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Network::MatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Network::MatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Http::HttpMatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Http::HttpMatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Http::HttpMatchingData>::createDataInputFactoryCb(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
25
12
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
26
12
    return std::make_unique<ProtoType>();
27
12
  }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Network::MatchingData>::createEmptyConfigProto()
Line
Count
Source
25
1
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
26
1
    return std::make_unique<ProtoType>();
27
1
  }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Network::MatchingData>::createEmptyConfigProto()
Line
Count
Source
25
1
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
26
1
    return std::make_unique<ProtoType>();
27
1
  }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Network::MatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Network::MatchingData>::createEmptyConfigProto()
Line
Count
Source
25
1
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
26
1
    return std::make_unique<ProtoType>();
27
1
  }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::UriSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput, Envoy::Http::HttpMatchingData>::createEmptyConfigProto()
Line
Count
Source
25
3
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
26
3
    return std::make_unique<ProtoType>();
27
3
  }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::DnsSanInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput, Envoy::Http::HttpMatchingData>::createEmptyConfigProto()
Line
Count
Source
25
3
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
26
3
    return std::make_unique<ProtoType>();
27
3
  }
Envoy::Ssl::Matching::BaseFactory<Envoy::Ssl::Matching::SubjectInput<Envoy::Http::HttpMatchingData>, envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput, Envoy::Http::HttpMatchingData>::createEmptyConfigProto()
Line
Count
Source
25
3
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
26
3
    return std::make_unique<ProtoType>();
27
3
  }
28
29
private:
30
  const std::string name_;
31
};
32
33
template <class MatchingDataType> class UriSanInput : public Matcher::DataInput<MatchingDataType> {
34
public:
35
0
  Matcher::DataInputGetResult get(const MatchingDataType& data) const override {
36
0
    const auto& ssl = data.ssl();
37
0
    if (!ssl) {
38
0
      return {Matcher::DataInputGetResult::DataAvailability::NotAvailable, absl::monostate()};
39
0
    }
40
0
    const auto& uri = ssl->uriSanPeerCertificate();
41
0
    if (!uri.empty()) {
42
0
      return {Matcher::DataInputGetResult::DataAvailability::AllDataAvailable,
43
0
              absl::StrJoin(uri, ",")};
44
0
    }
45
0
    return {Matcher::DataInputGetResult::DataAvailability::AllDataAvailable, absl::monostate()};
46
0
  }
Unexecuted instantiation: Envoy::Ssl::Matching::UriSanInput<Envoy::Network::MatchingData>::get(Envoy::Network::MatchingData const&) const
Unexecuted instantiation: Envoy::Ssl::Matching::UriSanInput<Envoy::Http::HttpMatchingData>::get(Envoy::Http::HttpMatchingData const&) const
47
};
48
49
template <class MatchingDataType>
50
class UriSanInputBaseFactory
51
    : public BaseFactory<UriSanInput<MatchingDataType>,
52
                         envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput,
53
                         MatchingDataType> {
54
public:
55
  UriSanInputBaseFactory()
56
      : BaseFactory<UriSanInput<MatchingDataType>,
57
                    envoy::extensions::matching::common_inputs::ssl::v3::UriSanInput,
58
20
                    MatchingDataType>("uri_san") {}
Envoy::Ssl::Matching::UriSanInputBaseFactory<Envoy::Network::MatchingData>::UriSanInputBaseFactory()
Line
Count
Source
58
10
                    MatchingDataType>("uri_san") {}
Envoy::Ssl::Matching::UriSanInputBaseFactory<Envoy::Http::HttpMatchingData>::UriSanInputBaseFactory()
Line
Count
Source
58
10
                    MatchingDataType>("uri_san") {}
59
};
60
61
template <class MatchingDataType> class DnsSanInput : public Matcher::DataInput<MatchingDataType> {
62
public:
63
0
  Matcher::DataInputGetResult get(const MatchingDataType& data) const override {
64
0
    const auto& ssl = data.ssl();
65
0
    if (!ssl) {
66
0
      return {Matcher::DataInputGetResult::DataAvailability::NotAvailable, absl::monostate()};
67
0
    }
68
0
    const auto& dns = ssl->dnsSansPeerCertificate();
69
0
    if (!dns.empty()) {
70
0
      return {Matcher::DataInputGetResult::DataAvailability::AllDataAvailable,
71
0
              absl::StrJoin(dns, ",")};
72
0
    }
73
0
    return {Matcher::DataInputGetResult::DataAvailability::AllDataAvailable, absl::monostate()};
74
0
  }
Unexecuted instantiation: Envoy::Ssl::Matching::DnsSanInput<Envoy::Network::MatchingData>::get(Envoy::Network::MatchingData const&) const
Unexecuted instantiation: Envoy::Ssl::Matching::DnsSanInput<Envoy::Http::HttpMatchingData>::get(Envoy::Http::HttpMatchingData const&) const
75
};
76
77
template <class MatchingDataType>
78
class DnsSanInputBaseFactory
79
    : public BaseFactory<DnsSanInput<MatchingDataType>,
80
                         envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput,
81
                         MatchingDataType> {
82
public:
83
  DnsSanInputBaseFactory()
84
      : BaseFactory<DnsSanInput<MatchingDataType>,
85
                    envoy::extensions::matching::common_inputs::ssl::v3::DnsSanInput,
86
20
                    MatchingDataType>("dns_san") {}
Envoy::Ssl::Matching::DnsSanInputBaseFactory<Envoy::Network::MatchingData>::DnsSanInputBaseFactory()
Line
Count
Source
86
10
                    MatchingDataType>("dns_san") {}
Envoy::Ssl::Matching::DnsSanInputBaseFactory<Envoy::Http::HttpMatchingData>::DnsSanInputBaseFactory()
Line
Count
Source
86
10
                    MatchingDataType>("dns_san") {}
87
};
88
89
template <class MatchingDataType> class SubjectInput : public Matcher::DataInput<MatchingDataType> {
90
public:
91
0
  Matcher::DataInputGetResult get(const MatchingDataType& data) const override {
92
0
    const auto& ssl = data.ssl();
93
0
    if (!ssl) {
94
0
      return {Matcher::DataInputGetResult::DataAvailability::NotAvailable, absl::monostate()};
95
0
    }
96
0
    const auto& subject = ssl->subjectPeerCertificate();
97
0
    if (!subject.empty()) {
98
0
      return {Matcher::DataInputGetResult::DataAvailability::AllDataAvailable,
99
0
              std::string(subject)};
100
0
    }
101
0
    return {Matcher::DataInputGetResult::DataAvailability::AllDataAvailable, absl::monostate()};
102
0
  }
Unexecuted instantiation: Envoy::Ssl::Matching::SubjectInput<Envoy::Network::MatchingData>::get(Envoy::Network::MatchingData const&) const
Unexecuted instantiation: Envoy::Ssl::Matching::SubjectInput<Envoy::Http::HttpMatchingData>::get(Envoy::Http::HttpMatchingData const&) const
103
};
104
105
template <class MatchingDataType>
106
class SubjectInputBaseFactory
107
    : public BaseFactory<SubjectInput<MatchingDataType>,
108
                         envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput,
109
                         MatchingDataType> {
110
public:
111
  SubjectInputBaseFactory()
112
      : BaseFactory<SubjectInput<MatchingDataType>,
113
                    envoy::extensions::matching::common_inputs::ssl::v3::SubjectInput,
114
20
                    MatchingDataType>("subject") {}
Envoy::Ssl::Matching::SubjectInputBaseFactory<Envoy::Network::MatchingData>::SubjectInputBaseFactory()
Line
Count
Source
114
10
                    MatchingDataType>("subject") {}
Envoy::Ssl::Matching::SubjectInputBaseFactory<Envoy::Http::HttpMatchingData>::SubjectInputBaseFactory()
Line
Count
Source
114
10
                    MatchingDataType>("subject") {}
115
};
116
117
} // namespace Matching
118
} // namespace Ssl
119
} // namespace Envoy