Botan  2.6.0
Crypto and TLS for C++11
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:
Botan::ASN1_Pretty_Printer

Public Member Functions

 ASN1_Formatter (bool print_context_specific, size_t max_depth)
 
std::string print (const uint8_t in[], size_t len) const
 
template<typename Alloc >
std::string print (const std::vector< uint8_t, Alloc > &vec) 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_Tag type_tag, ASN1_Tag class_tag, size_t level, size_t length, const std::string &value) const =0
 
virtual std::string format_bin (ASN1_Tag type_tag, ASN1_Tag class_tag, const std::vector< uint8_t > &vec) const =0
 

Detailed Description

Format ASN.1 data and call a virtual to format

Definition at line 22 of file asn1_print.h.

Constructor & Destructor Documentation

◆ ~ASN1_Formatter()

virtual Botan::ASN1_Formatter::~ASN1_Formatter ( )
virtualdefault

◆ ASN1_Formatter()

Botan::ASN1_Formatter::ASN1_Formatter ( bool  print_context_specific,
size_t  max_depth 
)
inline
Parameters
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),
34  m_max_depth(max_depth)
35  {}

Member Function Documentation

◆ format()

virtual std::string Botan::ASN1_Formatter::format ( ASN1_Tag  type_tag,
ASN1_Tag  class_tag,
size_t  level,
size_t  length,
const std::string &  value 
) const
protectedpure virtual

This is called for each element

◆ format_bin()

virtual std::string Botan::ASN1_Formatter::format_bin ( ASN1_Tag  type_tag,
ASN1_Tag  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.

◆ print() [1/2]

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

Definition at line 59 of file asn1_print.cpp.

References print_to_stream().

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

◆ print() [2/2]

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

Definition at line 44 of file asn1_print.h.

45  {
46  return print(vec.data(), vec.size());
47  }
std::string print(const uint8_t in[], size_t len) const
Definition: asn1_print.cpp:59

◆ print_to_stream()

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

Definition at line 66 of file asn1_print.cpp.

Referenced by print().

69  {
70  BER_Decoder dec(in, len);
71  decode(output, dec, 0);
72  }

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