Botan 3.1.1
Crypto and TLS for C&
Public Member Functions | Protected Member Functions | List of all members
Botan::ASN1_Formatter Class Referenceabstract

#include <asn1_print.h>

Inheritance diagram for Botan::ASN1_Formatter:

Public Member Functions

 ASN1_Formatter (bool print_context_specific, size_t max_depth)
template<typename Alloc >
std::string print (const std::vector< uint8_t, Alloc > &vec) const
std::string print (const uint8_t in[], size_t len) const
void print_to_stream (std::ostream &out, const uint8_t in[], size_t len) const
virtual ~ASN1_Formatter ()=default

Protected Member Functions

virtual std::string format (ASN1_Type type_tag, ASN1_Class class_tag, size_t level, size_t length, std::string_view value) const =0
virtual std::string format_bin (ASN1_Type type_tag, ASN1_Class class_tag, const std::vector< uint8_t > &vec) const =0
virtual std::string format_bn (const BigInt &bn) const =0

Detailed Description

Format ASN.1 data and call a virtual to format

Definition at line 23 of file asn1_print.h.

Constructor & Destructor Documentation

◆ ~ASN1_Formatter()

virtual Botan::ASN1_Formatter::~ASN1_Formatter ( )

◆ ASN1_Formatter()

Botan::ASN1_Formatter::ASN1_Formatter ( bool  print_context_specific,
size_t  max_depth 
print_context_specificif true, try to parse nested context specific data.
max_depthdo not recurse more than this many times. If zero, recursion is unbounded.

Definition at line 32 of file asn1_print.h.

32 :
33 m_print_context_specific(print_context_specific), m_max_depth(max_depth) {}

Member Function Documentation

◆ format()

virtual std::string Botan::ASN1_Formatter::format ( ASN1_Type  type_tag,
ASN1_Class  class_tag,
size_t  level,
size_t  length,
std::string_view  value 
) const
protectedpure virtual

This is called for each element

◆ format_bin()

virtual std::string Botan::ASN1_Formatter::format_bin ( ASN1_Type  type_tag,
ASN1_Class  class_tag,
const std::vector< uint8_t > &  vec 
) const
protectedpure virtual

This is called to format binary elements that we don't know how to convert to a string. The result will be passed as value to format; the tags are included as a hint to aid decoding.

◆ format_bn()

virtual std::string Botan::ASN1_Formatter::format_bn ( const BigInt bn) const
protectedpure virtual

This is called to format integers

◆ print() [1/2]

template<typename Alloc >
std::string Botan::ASN1_Formatter::print ( const std::vector< uint8_t, Alloc > &  vec) const

Definition at line 40 of file asn1_print.h.

40 {
41 return print(, vec.size());
42 }
std::string print(const uint8_t in[], size_t len) const
Definition: asn1_print.cpp:61

◆ print() [2/2]

std::string Botan::ASN1_Formatter::print ( const uint8_t  in[],
size_t  len 
) const

Definition at line 61 of file asn1_print.cpp.

61 {
62 std::ostringstream output;
63 print_to_stream(output, in, len);
64 return output.str();
void print_to_stream(std::ostream &out, const uint8_t in[], size_t len) const
Definition: asn1_print.cpp:67

References print_to_stream().

◆ print_to_stream()

void Botan::ASN1_Formatter::print_to_stream ( std::ostream &  out,
const uint8_t  in[],
size_t  len 
) const

Definition at line 67 of file asn1_print.cpp.

67 {
68 BER_Decoder dec(in, len);
69 decode(output, dec, 0);

Referenced by print().

The documentation for this class was generated from the following files: