Botan 1.10.17
Botan::EAC1_1_obj< Derived > Class Template Referenceabstract

#include <eac_obj.h>

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

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
virtual void encode (Pipe &pipe, X509_Encoding encoding=PEM) const =0
SecureVector< byteget_concat_sig () const
std::string PEM_encode () const
AlgorithmIdentifier signature_algorithm () const
virtual SecureVector< bytetbs_data () const =0

Protected Member Functions

void do_decode ()
void init (DataSource &in)
virtual ~EAC1_1_obj ()

Protected Attributes

ECDSA_Signature m_sig
std::string PEM_label_pref
std::vector< std::string > PEM_labels_allowed
AlgorithmIdentifier sig_algo
SecureVector< bytetbs_bits

Detailed Description

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

TR03110 v1.1 EAC CV Certificate

Definition at line 20 of file eac_obj.h.

Constructor & Destructor Documentation

◆ ~EAC1_1_obj()

template<typename Derived>
virtual Botan::EAC1_1_obj< Derived >::~EAC1_1_obj ( )
inlineprotectedvirtual

Definition at line 38 of file eac_obj.h.

50{}

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().

◆ check_signature() [1/2]

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

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().

◆ 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()

virtual void Botan::EAC_Signed_Object::encode ( Pipe & pipe,
X509_Encoding encoding = PEM ) const
pure virtualinherited

Write this object DER encoded into a specified pipe.

Parameters
pipethe pipe to write the encoded object to
encodingthe encoding type to use

Implemented in Botan::EAC1_1_ADO, Botan::EAC1_1_gen_CVC< Derived >, Botan::EAC1_1_gen_CVC< EAC1_1_CVC >, and Botan::EAC1_1_gen_CVC< EAC1_1_Req >.

References BER_encode(), Botan::PEM, and PEM_encode().

Referenced by BER_encode(), and PEM_encode().

◆ get_concat_sig()

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

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)
inlineprotected

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.

◆ 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().

◆ tbs_data()

virtual SecureVector< byte > Botan::EAC_Signed_Object::tbs_data ( ) const
pure virtualinherited

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

Returns
DER encoded TBS data of this object

Implemented in Botan::EAC1_1_ADO, Botan::EAC1_1_gen_CVC< Derived >, Botan::EAC1_1_gen_CVC< EAC1_1_CVC >, and Botan::EAC1_1_gen_CVC< EAC1_1_Req >.

Member Data Documentation

◆ m_sig

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

◆ 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.

◆ 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: