Botan 1.10.17
Botan::EAC1_1_gen_CVC< Derived > Class Template Reference

#include <cvc_gen_cert.h>

Inheritance diagram for Botan::EAC1_1_gen_CVC< Derived >:
Botan::EAC1_1_obj< Derived > Botan::EAC_Signed_Object

Public Member Functions

SecureVector< byteBER_encode () const
bool check_signature (class Public_Key &key) const
bool check_signature (class Public_Key &key, const MemoryRegion< byte > &sig) const
 EAC1_1_gen_CVC ()
void encode (Pipe &out, X509_Encoding encoding) const
ASN1_Chr get_chr () const
SecureVector< byteget_concat_sig () const
bool is_self_signed () const
std::string PEM_encode () const
AlgorithmIdentifier signature_algorithm () const
Public_Keysubject_public_key () const
SecureVector< bytetbs_data () const
virtual ~EAC1_1_gen_CVC ()

Static Public Member Functions

static SecureVector< bytebuild_cert_body (MemoryRegion< byte > const &tbs)
static MemoryVector< bytemake_signed (PK_Signer &signer, const MemoryRegion< byte > &tbs_bits, RandomNumberGenerator &rng)

Protected Member Functions

void do_decode ()
void init (DataSource &in)

Static Protected Member Functions

static void decode_info (DataSource &source, SecureVector< byte > &res_tbs_bits, ECDSA_Signature &res_sig)

Protected Attributes

ASN1_Chr m_chr
ECDSA_PublicKeym_pk
ECDSA_Signature m_sig
std::string PEM_label_pref
std::vector< std::string > PEM_labels_allowed
bool self_signed
AlgorithmIdentifier sig_algo
SecureVector< bytetbs_bits

Friends

class EAC1_1_obj< EAC1_1_gen_CVC >

Detailed Description

template<typename Derived>
class Botan::EAC1_1_gen_CVC< Derived >

This class represents TR03110 (EAC) v1.1 generalized CV Certificates

Definition at line 23 of file cvc_gen_cert.h.

Constructor & Destructor Documentation

◆ EAC1_1_gen_CVC()

template<typename Derived>
Botan::EAC1_1_gen_CVC< Derived >::EAC1_1_gen_CVC ( )
inline

Definition at line 80 of file cvc_gen_cert.h.

80{ m_pk = 0; }
ECDSA_PublicKey * m_pk

References m_pk.

◆ ~EAC1_1_gen_CVC()

template<typename Derived>
virtual Botan::EAC1_1_gen_CVC< Derived >::~EAC1_1_gen_CVC ( )
inlinevirtual

Definition at line 80 of file cvc_gen_cert.h.

83 { delete m_pk; }

Member Function Documentation

◆ BER_encode()

SecureVector< byte > Botan::EAC_Signed_Object::BER_encode ( ) const
inherited

BER encode this object.

Returns
result containing the BER representation of this object.

Definition at line 19 of file signed_obj.cpp.

20 {
21 Pipe ber;
22 ber.start_msg();
23 encode(ber, RAW_BER);
24 ber.end_msg();
25 return ber.read_all();
26 }
virtual void encode(Pipe &pipe, X509_Encoding encoding=PEM) const =0

References encode(), Botan::Pipe::end_msg(), Botan::RAW_BER, Botan::Pipe::read_all(), and Botan::Pipe::start_msg().

Referenced by Botan::CVC_EAC::create_ado_req(), and encode().

◆ build_cert_body()

template<typename Derived>
SecureVector< byte > Botan::EAC1_1_gen_CVC< Derived >::build_cert_body ( MemoryRegion< byte > const & tbs)
static

Build the DER encoded certifcate body of an object

Parameters
tbsthe data to be signed
Returns
the correctly encoded body of the object

Definition at line 128 of file cvc_gen_cert.h.

129 {
130 return DER_Encoder()
131 .start_cons(ASN1_Tag(78), APPLICATION)
132 .raw_bytes(tbs)
133 .end_cons().get_contents();
134 }

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

Referenced by Botan::CVC_EAC::create_cvc_req(), and tbs_data().

◆ check_signature() [1/2]

template<typename Derived>
bool Botan::EAC1_1_obj< Derived >::check_signature ( class Public_Key & key) const
inlineinherited

Definition at line 30 of file eac_obj.h.

31 {
32 return EAC_Signed_Object::check_signature(key, m_sig.DER_encode());
33 }
ECDSA_Signature m_sig
Definition eac_obj.h:36
bool check_signature(class Public_Key &key, const MemoryRegion< byte > &sig) const

References Botan::EAC_Signed_Object::check_signature(), Botan::ECDSA_Signature::DER_encode(), and m_sig.

◆ check_signature() [2/2]

bool Botan::EAC_Signed_Object::check_signature ( class Public_Key & key,
const MemoryRegion< byte > & sig ) const
inherited

Check the signature of this object.

Parameters
keythe public key associated with this signed object
sigthe signature we are checking
Returns
true if the signature was created by the private key associated with this public key

Definition at line 48 of file signed_obj.cpp.

50 {
51 try
52 {
53 std::vector<std::string> sig_info =
55
56 if(sig_info.size() != 2 || sig_info[0] != pub_key.algo_name())
57 {
58 return false;
59 }
60
61 std::string padding = sig_info[1];
62 Signature_Format format =
63 (pub_key.message_parts() >= 2) ? DER_SEQUENCE : IEEE_1363;
64
65 SecureVector<byte> to_sign = tbs_data();
66
67 PK_Verifier verifier(pub_key, padding, format);
68 return verifier.verify_message(to_sign, sig);
69 }
70 catch(...)
71 {
72 return false;
73 }
74 }
virtual SecureVector< byte > tbs_data() const =0
AlgorithmIdentifier sig_algo
Definition signed_obj.h:85
std::string lookup(const OID &oid)
Definition oids.cpp:31
std::vector< std::string > split_on(const std::string &str, char delim)
Definition parsing.cpp:152
Signature_Format
Definition pubkey.h:24
@ DER_SEQUENCE
Definition pubkey.h:24
@ IEEE_1363
Definition pubkey.h:24

References Botan::Public_Key::algo_name(), Botan::OIDS::lookup(), Botan::AlgorithmIdentifier::oid, sig_algo, and Botan::split_on().

Referenced by Botan::EAC1_1_obj< Derived >::check_signature(), and get_concat_sig().

◆ decode_info()

template<typename Derived>
void Botan::EAC1_1_gen_CVC< Derived >::decode_info ( DataSource & source,
SecureVector< byte > & res_tbs_bits,
ECDSA_Signature & res_sig )
staticprotected

Definition at line 160 of file cvc_gen_cert.h.

164 {
167 .start_cons(ASN1_Tag(33))
168 .start_cons(ASN1_Tag(78))
169 .raw_bytes(res_tbs_bits)
170 .end_cons()
172 .end_cons();
174 }
BER_Decoder(DataSource &)
Definition ber_dec.cpp:264

References Botan::APPLICATION, Botan::BER_Decoder::BER_Decoder(), Botan::decode_concatenation(), and Botan::OCTET_STRING.

◆ do_decode()

void Botan::EAC_Signed_Object::do_decode ( )
protectedinherited

Definition at line 79 of file signed_obj.cpp.

80 {
81 try {
82 force_decode();
83 }
84 catch(Decoding_Error& e)
85 {
86 const std::string what = e.what();
87 throw Decoding_Error(PEM_label_pref + " decoding failed (" + what + ")");
88 }
89 catch(Invalid_Argument& e)
90 {
91 const std::string what = e.what();
92 throw Decoding_Error(PEM_label_pref + " decoding failed (" + what + ")");
93 }
94 }
std::string PEM_label_pref
Definition signed_obj.h:87
std::invalid_argument Invalid_Argument
Definition exceptn.h:20
Decoding_Error(const std::string &name)
Definition exceptn.h:140

◆ encode()

template<typename Derived>
void Botan::EAC1_1_gen_CVC< Derived >::encode ( Pipe & out,
X509_Encoding encoding ) const
virtual

Put the DER encoded version of this object into a pipe. PEM is not supported.

Parameters
outthe pipe to push the DER encoded version into
encodingthe encoding to use. Must be DER.

Implements Botan::EAC_Signed_Object.

Definition at line 141 of file cvc_gen_cert.h.

142 {
145 .start_cons(ASN1_Tag(33), APPLICATION)
146 .start_cons(ASN1_Tag(78), APPLICATION)
148 .end_cons()
150 .end_cons()
151 .get_contents();
152
153 if (encoding == PEM)
154 throw Invalid_Argument("EAC1_1_gen_CVC::encode() cannot PEM encode an EAC object");
155 else
156 out.write(der);
157 }
void encode(Pipe &out, X509_Encoding encoding) const

References Botan::APPLICATION, Botan::DER_Encoder::encode(), Botan::DER_Encoder::end_cons(), Botan::DER_Encoder::get_contents(), Botan::EAC1_1_obj< Derived >::m_sig, Botan::OCTET_STRING, Botan::PEM, Botan::DER_Encoder::raw_bytes(), Botan::DER_Encoder::start_cons(), Botan::EAC_Signed_Object::tbs_bits, and Botan::Pipe::write().

◆ get_chr()

template<typename Derived>
ASN1_Chr Botan::EAC1_1_gen_CVC< Derived >::get_chr ( ) const

Get the CHR of the certificate.

Returns
the CHR of the certificate

Definition at line 96 of file cvc_gen_cert.h.

97 {
98 return m_chr;
99 }

References m_chr.

Referenced by Botan::DE_EAC::link_cvca(), and Botan::DE_EAC::sign_request().

◆ get_concat_sig()

template<typename Derived>
SecureVector< byte > Botan::EAC1_1_obj< Derived >::get_concat_sig ( ) const
inlinevirtualinherited

Return the signature as a concatenation of the encoded parts.

Returns
the concatenated signature

Implements Botan::EAC_Signed_Object.

Definition at line 27 of file eac_obj.h.

28 { return m_sig.get_concatenation(); }

References Botan::ECDSA_Signature::get_concatenation(), and m_sig.

Referenced by Botan::EAC1_1_ADO::operator==(), Botan::EAC1_1_CVC::operator==(), and Botan::EAC1_1_Req::operator==().

◆ init()

template<typename Derived>
void Botan::EAC1_1_obj< Derived >::init ( DataSource & in)
inlineprotectedinherited

Definition at line 38 of file eac_obj.h.

39 {
40 try
41 {
43 }
44 catch(Decoding_Error)
45 {
46 throw Decoding_Error(PEM_label_pref + " decoding failed");
47 }
48 }
SecureVector< byte > tbs_bits
Definition signed_obj.h:86

References Botan::Decoding_Error::Decoding_Error(), m_sig, Botan::EAC_Signed_Object::PEM_label_pref, and Botan::EAC_Signed_Object::tbs_bits.

◆ is_self_signed()

template<typename Derived>
bool Botan::EAC1_1_gen_CVC< Derived >::is_self_signed ( ) const

Find out whether this object is self signed.

Returns
true if this object is self signed

Definition at line 101 of file cvc_gen_cert.h.

102 {
103 return self_signed;
104 }

References self_signed.

◆ make_signed()

template<typename Derived>
MemoryVector< byte > Botan::EAC1_1_gen_CVC< Derived >::make_signed ( PK_Signer & signer,
const MemoryRegion< byte > & tbs_bits,
RandomNumberGenerator & rng )
static

Create a signed generalized CVC object.

Parameters
signerthe signer used to sign this object
tbs_bitsthe body the generalized CVC object to be signed
rnga random number generator
Returns
the DER encoded signed generalized CVC object

Definition at line 107 of file cvc_gen_cert.h.

111 {
113
114 return DER_Encoder()
115 .start_cons(ASN1_Tag(33), APPLICATION)
116 .raw_bytes(tbs_bits)
118 .end_cons()
119 .get_contents();
120 }

References Botan::APPLICATION, Botan::DER_Encoder::encode(), Botan::DER_Encoder::end_cons(), Botan::DER_Encoder::get_contents(), Botan::OCTET_STRING, Botan::DER_Encoder::raw_bytes(), Botan::PK_Signer::sign_message(), Botan::DER_Encoder::start_cons(), and Botan::EAC_Signed_Object::tbs_bits.

Referenced by Botan::CVC_EAC::create_cvc_req().

◆ PEM_encode()

std::string Botan::EAC_Signed_Object::PEM_encode ( ) const
inherited

PEM encode this object.

Returns
result containing the PEM representation of this object.

Definition at line 31 of file signed_obj.cpp.

32 {
33 Pipe pem;
34 pem.start_msg();
35 encode(pem, PEM);
36 pem.end_msg();
37 return pem.read_all_as_string();
38 }

References encode(), Botan::Pipe::end_msg(), Botan::PEM, Botan::Pipe::read_all_as_string(), and Botan::Pipe::start_msg().

Referenced by encode().

◆ signature_algorithm()

AlgorithmIdentifier Botan::EAC_Signed_Object::signature_algorithm ( ) const
inherited

Get the signature algorithm identifier used to sign this object.

Returns
the signature algorithm identifier

Definition at line 43 of file signed_obj.cpp.

44 {
45 return sig_algo;
46 }

References sig_algo.

Referenced by Botan::CVC_EAC::create_ado_req(), get_concat_sig(), Botan::DE_EAC::link_cvca(), and Botan::DE_EAC::sign_request().

◆ subject_public_key()

template<typename Derived>
Public_Key * Botan::EAC1_1_gen_CVC< Derived >::subject_public_key ( ) const

Get this certificates public key.

Returns
this certificates public key

Definition at line 123 of file cvc_gen_cert.h.

124 {
125 return new ECDSA_PublicKey(*m_pk);
126 }

References Botan::ECDSA_PublicKey::ECDSA_PublicKey(), and m_pk.

Referenced by Botan::DE_EAC::link_cvca(), and Botan::DE_EAC::sign_request().

◆ tbs_data()

template<typename Derived>
SecureVector< byte > Botan::EAC1_1_gen_CVC< Derived >::tbs_data ( ) const
virtual

Get the to-be-signed (TBS) data of this object.

Returns
the TBS data of this object

Implements Botan::EAC_Signed_Object.

Definition at line 136 of file cvc_gen_cert.h.

137 {
139 }
static SecureVector< byte > build_cert_body(MemoryRegion< byte > const &tbs)

References build_cert_body(), and Botan::EAC_Signed_Object::tbs_bits.

Referenced by Botan::EAC1_1_CVC::operator==(), and Botan::EAC1_1_Req::operator==().

◆ EAC1_1_obj< EAC1_1_gen_CVC >

template<typename Derived>
friend class EAC1_1_obj< EAC1_1_gen_CVC >
friend

Definition at line 160 of file cvc_gen_cert.h.

Member Data Documentation

◆ m_chr

template<typename Derived>
ASN1_Chr Botan::EAC1_1_gen_CVC< Derived >::m_chr
protected

Definition at line 87 of file cvc_gen_cert.h.

Referenced by get_chr().

◆ m_pk

template<typename Derived>
ECDSA_PublicKey* Botan::EAC1_1_gen_CVC< Derived >::m_pk
protected

Definition at line 86 of file cvc_gen_cert.h.

Referenced by EAC1_1_gen_CVC(), and subject_public_key().

◆ m_sig

template<typename Derived>
ECDSA_Signature Botan::EAC1_1_obj< Derived >::m_sig
protectedinherited

◆ PEM_label_pref

std::string Botan::EAC_Signed_Object::PEM_label_pref
protectedinherited

Definition at line 87 of file signed_obj.h.

Referenced by Botan::EAC1_1_obj< Derived >::init().

◆ PEM_labels_allowed

std::vector<std::string> Botan::EAC_Signed_Object::PEM_labels_allowed
protectedinherited

Definition at line 88 of file signed_obj.h.

◆ self_signed

template<typename Derived>
bool Botan::EAC1_1_gen_CVC< Derived >::self_signed
protected

Definition at line 88 of file cvc_gen_cert.h.

Referenced by is_self_signed().

◆ sig_algo

AlgorithmIdentifier Botan::EAC_Signed_Object::sig_algo
protectedinherited

Definition at line 85 of file signed_obj.h.

Referenced by check_signature(), and signature_algorithm().

◆ tbs_bits


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