LIEF: Library to Instrument Executable Formats Version 0.15.1
Loading...
Searching...
No Matches
GenericType.hpp
Go to the documentation of this file.
1/* Copyright 2017 - 2024 R. Thomas
2 * Copyright 2017 - 2024 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_GENERIC_TYPE_H
17#define LIEF_PE_ATTRIBUTES_GENERIC_TYPE_H
18#include <memory>
19#include <vector>
20
21#include "LIEF/visibility.h"
22#include "LIEF/span.hpp"
25
26namespace LIEF {
27class VectorStream;
28namespace PE {
29
32 friend class Parser;
33 friend class SignatureParser;
34
35 public:
37 Attribute(Attribute::TYPE::GENERIC_TYPE)
38 {}
39 GenericType(oid_t oid, std::vector<uint8_t> raw) :
40 Attribute(Attribute::TYPE::GENERIC_TYPE),
41 oid_{std::move(oid)},
42 raw_{std::move(raw)}
43 {}
44 GenericType(const GenericType&) = default;
45 GenericType& operator=(const GenericType&) = default;
46
47 std::unique_ptr<Attribute> clone() const override {
48 return std::unique_ptr<Attribute>(new GenericType{*this});
49 }
50
52 const oid_t& oid() const {
53 return oid_;
54 }
55
58 return raw_;
59 }
60
62 std::string print() const override;
63
64 void accept(Visitor& visitor) const override;
65
66 ~GenericType() override = default;
67
68 static bool classof(const Attribute* attr) {
69 return attr->type() == Attribute::TYPE::GENERIC_TYPE;
70 }
71
72 private:
73 oid_t oid_;
74 std::vector<uint8_t> raw_;
75};
76
77}
78}
79
80#endif
Interface over PKCS #7 attribute.
Definition PE/signature/Attribute.hpp:28
TYPE
Definition PE/signature/Attribute.hpp:34
virtual TYPE type() const
Concrete type of the attribute.
Definition PE/signature/Attribute.hpp:61
Interface over an attribute for which the internal structure is not supported by LIEF.
Definition GenericType.hpp:31
GenericType & operator=(const GenericType &)=default
std::unique_ptr< Attribute > clone() const override
Definition GenericType.hpp:47
~GenericType() override=default
void accept(Visitor &visitor) const override
GenericType()
Definition GenericType.hpp:36
span< const uint8_t > raw_content() const
Original DER blob of the attribute.
Definition GenericType.hpp:57
GenericType(const GenericType &)=default
GenericType(oid_t oid, std::vector< uint8_t > raw)
Definition GenericType.hpp:39
const oid_t & oid() const
OID of the original attribute.
Definition GenericType.hpp:52
std::string print() const override
Print information about the attribute.
static bool classof(const Attribute *attr)
Definition GenericType.hpp:68
Main interface to parse PE binaries. In particular the static functions: Parser::parse should be used...
Definition PE/Parser.hpp:47
Definition SignatureParser.hpp:37
Definition Visitor.hpp:224
std::string oid_t
Definition PE/signature/types.hpp:23
LIEF namespace.
Definition Abstract/Binary.hpp:32
tcb::span< ElementType, Extent > span
Definition span.hpp:22
#define LIEF_API
Definition visibility.h:41