7#ifndef BOTAN_ASN1_PRINT_H_
8#define BOTAN_ASN1_PRINT_H_
10#include <botan/asn1_obj.h>
33 ASN1_Formatter(
bool print_context_specific,
size_t max_depth,
bool require_der =
false) :
34 m_print_context_specific(print_context_specific), m_max_depth(max_depth), m_require_der(require_der) {}
36 void print_to_stream(std::ostream& out,
const uint8_t in[],
size_t len)
const;
38 std::string print(
const uint8_t in[],
size_t len)
const;
40 template <
typename Alloc>
41 std::string
print(
const std::vector<uint8_t, Alloc>& vec)
const {
42 return print(vec.data(), vec.size());
50 ASN1_Type type_tag,
ASN1_Class class_tag,
size_t level,
size_t length, std::string_view value)
const = 0;
61 const std::vector<uint8_t>& vec)
const = 0;
69 void decode(std::ostream& output,
BER_Decoder& decoder,
size_t level)
const;
71 const bool m_print_context_specific;
72 const size_t m_max_depth;
73 const bool m_require_der;
93 size_t print_binary_limit = 2048,
94 bool print_context_specific =
true,
95 size_t initial_level = 0,
96 size_t value_column = 60,
97 size_t max_depth = 64,
98 bool require_der =
false) :
100 m_print_limit(print_limit),
101 m_print_binary_limit(print_binary_limit),
102 m_initial_level(initial_level),
103 m_value_column(value_column) {}
107 ASN1_Type type_tag,
ASN1_Class class_tag,
size_t level,
size_t length, std::string_view value)
const override;
109 std::string format_bin(
ASN1_Type type_tag,
ASN1_Class class_tag,
const std::vector<uint8_t>& vec)
const override;
111 std::string format_bn(
const BigInt& bn)
const override;
113 const size_t m_print_limit;
114 const size_t m_print_binary_limit;
115 const size_t m_initial_level;
116 const size_t m_value_column;
#define BOTAN_PUBLIC_API(maj, min)
ASN1_Pretty_Printer(size_t print_limit=4096, size_t print_binary_limit=2048, bool print_context_specific=true, size_t initial_level=0, size_t value_column=60, size_t max_depth=64, bool require_der=false)