Botan 2.19.3
Crypto and TLS for C&
Functions
Botan::ASN1 Namespace Reference

Functions

bool maybe_BER (DataSource &source)
 
std::vector< uint8_t > put_in_sequence (const std::vector< uint8_t > &contents)
 
std::vector< uint8_t > put_in_sequence (const uint8_t bits[], size_t len)
 
std::string to_string (const BER_Object &obj)
 

Function Documentation

◆ maybe_BER()

bool Botan::ASN1::maybe_BER ( DataSource src)

Heuristics tests; is this object possibly BER?

Parameters
srca data source that will be peeked at but not modified

Definition at line 222 of file asn1_obj.cpp.

223 {
224 uint8_t first_u8;
225 if(!source.peek_byte(first_u8))
226 {
227 BOTAN_ASSERT_EQUAL(source.read_byte(first_u8), 0, "Expected EOF");
228 throw Stream_IO_Error("ASN1::maybe_BER: Source was empty");
229 }
230
231 if(first_u8 == (SEQUENCE | CONSTRUCTED))
232 return true;
233 return false;
234 }
#define BOTAN_ASSERT_EQUAL(expr1, expr2, assertion_made)
Definition assert.h:81

References BOTAN_ASSERT_EQUAL, Botan::CONSTRUCTED, Botan::DataSource::peek_byte(), Botan::DataSource::read_byte(), and Botan::SEQUENCE.

Referenced by Botan::X509_Object::load_data(), and Botan::X509::load_key().

◆ put_in_sequence() [1/2]

std::vector< uint8_t > Botan::ASN1::put_in_sequence ( const std::vector< uint8_t > &  contents)

Definition at line 195 of file asn1_obj.cpp.

196 {
197 return ASN1::put_in_sequence(contents.data(), contents.size());
198 }

References put_in_sequence().

Referenced by put_in_sequence(), Botan::X509_Object::tbs_data(), and Botan::OCSP::Response::verify_signature().

◆ put_in_sequence() [2/2]

std::vector< uint8_t > Botan::ASN1::put_in_sequence ( const uint8_t  bits[],
size_t  len 
)

Definition at line 200 of file asn1_obj.cpp.

201 {
202 std::vector<uint8_t> output;
203 DER_Encoder(output)
204 .start_cons(SEQUENCE)
205 .raw_bytes(bits, len)
206 .end_cons();
207 return output;
208 }
DER_Encoder & start_cons(ASN1_Tag type_tag, ASN1_Tag class_tag=UNIVERSAL)
Definition der_enc.cpp:181
DER_Encoder & raw_bytes(const uint8_t val[], size_t len)
Definition der_enc.cpp:228
DER_Encoder & end_cons()
Definition der_enc.cpp:191

References Botan::DER_Encoder::end_cons(), Botan::DER_Encoder::raw_bytes(), Botan::SEQUENCE, and Botan::DER_Encoder::start_cons().

◆ to_string()

std::string Botan::ASN1::to_string ( const BER_Object obj)

Definition at line 213 of file asn1_obj.cpp.

214 {
215 return std::string(cast_uint8_ptr_to_char(obj.bits()),
216 obj.length());
217 }
size_t length() const
Definition asn1_obj.h:121
const uint8_t * bits() const
Definition asn1_obj.h:119
const char * cast_uint8_ptr_to_char(const uint8_t *b)
Definition mem_ops.h:195

References Botan::BER_Object::bits(), Botan::cast_uint8_ptr_to_char(), and Botan::BER_Object::length().

Referenced by Botan::ASN1_Time::decode_from(), Botan::AlternativeName::decode_from(), Botan::GeneralName::decode_from(), and Botan::ASN1_String::decode_from().