LIEF: Library to Instrument Executable Formats Version 1.0.0
Loading...
Searching...
No Matches
MsCounterSign.hpp
Go to the documentation of this file.
1/* Copyright 2017 - 2026 R. Thomas
2 * Copyright 2017 - 2026 Quarkslab
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#ifndef LIEF_PE_ATTRIBUTES_MS_COUNTER_SIGNATURE_H
17#define LIEF_PE_ATTRIBUTES_MS_COUNTER_SIGNATURE_H
18
19#include "LIEF/visibility.h"
21
25
26#include <vector>
27
28namespace LIEF {
29namespace PE {
30
33 friend class Parser;
34 friend class SignatureParser;
35
36 public:
37 using certificates_t = std::vector<x509>;
40
41 using signers_t = std::vector<SignerInfo>;
44
46 Attribute(Attribute::TYPE::MS_COUNTER_SIGN) {}
47
48 MsCounterSign(const MsCounterSign&) = default;
50
51 std::unique_ptr<Attribute> clone() const override {
52 return std::unique_ptr<Attribute>(new MsCounterSign{*this});
53 }
54
55 uint32_t version() const {
56 return version_;
57 }
58
61 return certificates_;
62 }
63
65 return certificates_;
66 }
67
70 return signers_;
71 }
72
74 return signers_;
75 }
76
78 return digest_algorithm_;
79 }
80
81 const ContentInfo& content_info() const {
82 return content_info_;
83 }
84
85 std::string print() const override;
86
87 void accept(Visitor& visitor) const override;
88
89 static bool classof(const Attribute* attr) {
90 return attr->type() == Attribute::TYPE::MS_COUNTER_SIGN;
91 }
92
93 ~MsCounterSign() override = default;
94
95 private:
96 uint32_t version_ = 0;
97 ALGORITHMS digest_algorithm_ = ALGORITHMS::UNKNOWN;
98 ContentInfo content_info_;
99 certificates_t certificates_;
100 std::vector<SignerInfo> signers_;
101};
102
103}
104}
105
106#endif
TYPE
Definition PE/signature/Attribute.hpp:35
@ MS_COUNTER_SIGN
Definition PE/signature/Attribute.hpp:44
virtual TYPE type() const
Concrete type of the attribute.
Definition PE/signature/Attribute.hpp:62
Definition ContentInfo.hpp:81
MsCounterSign & operator=(const MsCounterSign &)=default
MsCounterSign(const MsCounterSign &)=default
it_certificates certificates()
Definition MsCounterSign.hpp:64
it_const_certificates certificates() const
Iterator over the LIEF::PE::x509 certificates of this counter signature.
Definition MsCounterSign.hpp:60
std::unique_ptr< Attribute > clone() const override
Definition MsCounterSign.hpp:51
ref_iterator< signers_t & > it_signers
Definition MsCounterSign.hpp:43
ref_iterator< certificates_t & > it_certificates
Definition MsCounterSign.hpp:39
static bool classof(const Attribute *attr)
Definition MsCounterSign.hpp:89
void accept(Visitor &visitor) const override
const_ref_iterator< const signers_t & > it_const_signers
Definition MsCounterSign.hpp:42
MsCounterSign()
Definition MsCounterSign.hpp:45
~MsCounterSign() override=default
uint32_t version() const
Definition MsCounterSign.hpp:55
friend class SignatureParser
Definition MsCounterSign.hpp:34
const_ref_iterator< const certificates_t & > it_const_certificates
Definition MsCounterSign.hpp:38
it_const_signers signers() const
Signer iterator (same as LIEF::PE::SignerInfo).
Definition MsCounterSign.hpp:69
friend class Parser
Definition MsCounterSign.hpp:33
ALGORITHMS digest_algorithm() const
Definition MsCounterSign.hpp:77
const ContentInfo & content_info() const
Definition MsCounterSign.hpp:81
it_signers signers()
Definition MsCounterSign.hpp:73
std::vector< x509 > certificates_t
Definition MsCounterSign.hpp:37
std::string print() const override
Print information about the underlying attribute.
std::vector< SignerInfo > signers_t
Definition MsCounterSign.hpp:41
Definition Visitor.hpp:212
Iterator which returns reference on container's values.
Definition iterators.hpp:45
Namespace related to the LIEF's PE module.
Definition Abstract/Header.hpp:32
ALGORITHMS
Cryptography algorithms.
Definition PE/enums.hpp:28
@ UNKNOWN
Definition PE/enums.hpp:29
LIEF namespace.
Definition Abstract/Binary.hpp:40
ref_iterator< CT, U, typename decay_t< CT >::const_iterator > const_ref_iterator
Iterator which return const ref on container's values.
Definition iterators.hpp:286
#define LIEF_API
Definition visibility.h:43