Botan  1.10.9
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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

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

Definition at line 50 of file eac_obj.h.

50 {}

Member Function Documentation

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.

References Botan::EAC_Signed_Object::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().

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
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  {
33  }
ECDSA_Signature m_sig
Definition: eac_obj.h:36
MemoryVector< byte > DER_encode() const
Definition: ecdsa_sig.cpp:23
bool check_signature(class Public_Key &key, const MemoryRegion< byte > &sig) const
Definition: signed_obj.cpp:48
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.

References Botan::Public_Key::algo_name(), Botan::DER_SEQUENCE, Botan::IEEE_1363, Botan::OIDS::lookup(), Botan::Public_Key::message_parts(), Botan::AlgorithmIdentifier::oid, Botan::EAC_Signed_Object::sig_algo, Botan::split_on(), Botan::EAC_Signed_Object::tbs_data(), and Botan::PK_Verifier::verify_message().

Referenced by Botan::EAC1_1_obj< EAC1_1_Req >::check_signature().

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
Signature_Format
Definition: pubkey.h:24
std::vector< std::string > split_on(const std::string &str, char delim)
Definition: parsing.cpp:152
std::string lookup(const OID &oid)
Definition: oids.cpp:31
void Botan::EAC_Signed_Object::do_decode ( )
protectedinherited

Definition at line 79 of file signed_obj.cpp.

References Botan::EAC_Signed_Object::PEM_label_pref.

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

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::invalid_argument Invalid_Argument
Definition: exceptn.h:20
std::string PEM_label_pref
Definition: signed_obj.h:87
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 >.

Referenced by Botan::EAC_Signed_Object::BER_encode(), and Botan::EAC_Signed_Object::PEM_encode().

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.

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

28  { return m_sig.get_concatenation(); }
ECDSA_Signature m_sig
Definition: eac_obj.h:36
MemoryVector< byte > get_concatenation() const
Definition: ecdsa_sig.cpp:33
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  {
42  Derived::decode_info(in, tbs_bits, m_sig);
43  }
44  catch(Decoding_Error)
45  {
46  throw Decoding_Error(PEM_label_pref + " decoding failed");
47  }
48  }
ECDSA_Signature m_sig
Definition: eac_obj.h:36
std::string PEM_label_pref
Definition: signed_obj.h:87
SecureVector< byte > tbs_bits
Definition: signed_obj.h:86
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.

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

32  {
33  Pipe pem;
34  pem.start_msg();
35  encode(pem, PEM);
36  pem.end_msg();
37  return pem.read_all_as_string();
38  }
virtual void encode(Pipe &pipe, X509_Encoding encoding=PEM) const =0
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.

References Botan::EAC_Signed_Object::sig_algo.

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

44  {
45  return sig_algo;
46  }
AlgorithmIdentifier sig_algo
Definition: signed_obj.h:85
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 >.

Referenced by Botan::EAC_Signed_Object::check_signature().

Member Data Documentation

template<typename Derived>
ECDSA_Signature Botan::EAC1_1_obj< Derived >::m_sig
protected
std::string Botan::EAC_Signed_Object::PEM_label_pref
protectedinherited
std::vector<std::string> Botan::EAC_Signed_Object::PEM_labels_allowed
protectedinherited

Definition at line 88 of file signed_obj.h.

AlgorithmIdentifier Botan::EAC_Signed_Object::sig_algo
protectedinherited
SecureVector<byte> Botan::EAC_Signed_Object::tbs_bits
protectedinherited

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