Botan 3.0.0-alpha0
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, const std::string &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 33 of file asn1_print.h.

33 :
34 m_print_context_specific(print_context_specific),
35 m_max_depth(max_depth)
36 {}

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,
const std::string &  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 45 of file asn1_print.h.

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

◆ print() [2/2]

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

Definition at line 57 of file asn1_print.cpp.

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

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 64 of file asn1_print.cpp.

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

Referenced by print().

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