|
Botan
1.11.15
|
#include <x509_ext.h>
Public Member Functions | |
| void | add (Certificate_Extension *extn, bool critical=false) |
| void | contents_to (Data_Store &, Data_Store &) const |
| void | decode_from (class BER_Decoder &) |
| void | encode_into (class DER_Encoder &) const |
| Extensions (const Extensions &) | |
| Extensions (bool st=true) | |
| Extensions & | operator= (const Extensions &) |
| ~Extensions () | |
X.509 Certificate Extension List
Definition at line 60 of file x509_ext.h.
| Botan::Extensions::Extensions | ( | const Extensions & | extensions | ) |
Definition at line 47 of file x509_ext.cpp.
: ASN1_Object()
{
*this = extensions;
}
| Botan::Extensions::Extensions | ( | bool | st = true | ) | [inline] |
Definition at line 73 of file x509_ext.h.
: m_throw_on_unknown_critical(st) {}
Definition at line 169 of file x509_ext.cpp.
{
for(size_t i = 0; i != extensions.size(); ++i)
delete extensions[i].first;
}
| void Botan::Extensions::add | ( | Certificate_Extension * | extn, |
| bool | critical = false |
||
| ) |
Definition at line 79 of file x509_ext.cpp.
Referenced by Botan::TLS::Client_Hello::Client_Hello(), Botan::X509::create_cert_req(), Botan::TLS::Extensions::deserialize(), Botan::CRL_Entry::encode_into(), Botan::TLS::Server_Hello::Server_Hello(), and Botan::X509_CA::sign_request().
{
extensions.push_back(std::make_pair(extn, critical));
}
| void Botan::Extensions::contents_to | ( | Data_Store & | subject_info, |
| Data_Store & | issuer_info | ||
| ) | const |
Definition at line 159 of file x509_ext.cpp.
Referenced by Botan::CRL_Entry::decode_from().
{
for(size_t i = 0; i != extensions.size(); ++i)
extensions[i].first->contents_to(subject_info, issuer_info);
}
| void Botan::Extensions::decode_from | ( | class BER_Decoder & | from | ) | [virtual] |
Decode whatever this object is from from
| from | the BER_Decoder that will be read from |
Implements Botan::ASN1_Object.
Definition at line 110 of file x509_ext.cpp.
References Botan::OID::as_string(), Botan::BOOLEAN, Botan::BER_Decoder::decode(), Botan::Certificate_Extension::decode_inner(), Botan::BER_Decoder::decode_optional(), e, Botan::BER_Decoder::end_cons(), Botan::BER_Decoder::more_items(), Botan::OCTET_STRING, Botan::SEQUENCE, Botan::BER_Decoder::start_cons(), Botan::UNIVERSAL, and Botan::BER_Decoder::verify_end().
{
for(size_t i = 0; i != extensions.size(); ++i)
delete extensions[i].first;
extensions.clear();
BER_Decoder sequence = from_source.start_cons(SEQUENCE);
while(sequence.more_items())
{
OID oid;
std::vector<byte> value;
bool critical;
sequence.start_cons(SEQUENCE)
.decode(oid)
.decode_optional(critical, BOOLEAN, UNIVERSAL, false)
.decode(value, OCTET_STRING)
.verify_end()
.end_cons();
Certificate_Extension* ext = get_extension(oid);
if(!ext && critical && m_throw_on_unknown_critical)
throw Decoding_Error("Encountered unknown X.509 extension marked "
"as critical; OID = " + oid.as_string());
if(ext)
{
try
{
ext->decode_inner(value);
}
catch(std::exception& e)
{
throw Decoding_Error("Exception while decoding extension " +
oid.as_string() + ": " + e.what());
}
extensions.push_back(std::make_pair(ext, critical));
}
}
sequence.verify_end();
}
| void Botan::Extensions::encode_into | ( | class DER_Encoder & | to | ) | const [virtual] |
Encode whatever this object is into to
| to | the DER_Encoder that will be written to |
Implements Botan::ASN1_Object.
Definition at line 87 of file x509_ext.cpp.
References Botan::DER_Encoder::encode(), Botan::Certificate_Extension::encode_inner(), Botan::OCTET_STRING, Botan::Certificate_Extension::oid_of(), Botan::SEQUENCE, Botan::Certificate_Extension::should_encode(), and Botan::DER_Encoder::start_cons().
{
for(size_t i = 0; i != extensions.size(); ++i)
{
const Certificate_Extension* ext = extensions[i].first;
const bool is_critical = extensions[i].second;
const bool should_encode = ext->should_encode();
if(should_encode)
{
to_object.start_cons(SEQUENCE)
.encode(ext->oid_of())
.encode_optional(is_critical, false)
.encode(ext->encode_inner(), OCTET_STRING)
.end_cons();
}
}
}
| Extensions & Botan::Extensions::operator= | ( | const Extensions & | other | ) |
Definition at line 55 of file x509_ext.cpp.
{
for(size_t i = 0; i != extensions.size(); ++i)
delete extensions[i].first;
extensions.clear();
for(size_t i = 0; i != other.extensions.size(); ++i)
extensions.push_back(
std::make_pair(other.extensions[i].first->copy(),
other.extensions[i].second));
m_throw_on_unknown_critical = other.m_throw_on_unknown_critical;
return (*this);
}
1.7.6.1