Botan  1.11.15
Public Member Functions | Protected Member Functions | Protected Attributes
Botan::EAC1_1_obj< Derived > Class Template Reference

#include <eac_obj.h>

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

List of all members.

Public Member Functions

std::vector< byteBER_encode () const
bool check_signature (class Public_Key &key) const
bool check_signature (class Public_Key &key, const std::vector< byte > &sig) const
virtual void encode (Pipe &pipe, X509_Encoding encoding=PEM) const =0
std::vector< byteget_concat_sig () const
std::string PEM_encode () const
AlgorithmIdentifier signature_algorithm () const
virtual std::vector< 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
std::vector< 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 ( ) [inline, protected, virtual]

Definition at line 50 of file eac_obj.h.

{}

Member Function Documentation

std::vector< 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 18 of file signed_obj.cpp.

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

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

   {
   Pipe ber;
   ber.start_msg();
   encode(ber, RAW_BER);
   ber.end_msg();
   return unlock(ber.read_all());
   }
template<typename Derived>
bool Botan::EAC1_1_obj< Derived >::check_signature ( class Public_Key key) const [inline]
bool Botan::EAC_Signed_Object::check_signature ( class Public_Key key,
const std::vector< 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 47 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().

   {
   try
      {
      std::vector<std::string> sig_info =
         split_on(OIDS::lookup(sig_algo.oid), '/');

      if(sig_info.size() != 2 || sig_info[0] != pub_key.algo_name())
         {
         return false;
         }

      std::string padding = sig_info[1];
      Signature_Format format =
         (pub_key.message_parts() >= 2) ? DER_SEQUENCE : IEEE_1363;

      std::vector<byte> to_sign = tbs_data();

      PK_Verifier verifier(pub_key, padding, format);
      return verifier.verify_message(to_sign, sig);
      }
   catch(...)
      {
      return false;
      }
   }
void Botan::EAC_Signed_Object::do_decode ( ) [protected, inherited]

Definition at line 78 of file signed_obj.cpp.

References e, and 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().

   {
   try {
      force_decode();
   }
   catch(Decoding_Error& e)
      {
      const std::string what = e.what();
      throw Decoding_Error(PEM_label_pref + " decoding failed (" + what + ")");
      }
   catch(Invalid_Argument& e)
      {
      const std::string what = e.what();
      throw Decoding_Error(PEM_label_pref + " decoding failed (" + what + ")");
      }
   }
virtual void Botan::EAC_Signed_Object::encode ( Pipe pipe,
X509_Encoding  encoding = PEM 
) const [pure virtual, inherited]

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>
std::vector<byte> Botan::EAC1_1_obj< Derived >::get_concat_sig ( ) const [inline, virtual]

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

         { return m_sig.get_concatenation(); }
template<typename Derived>
void Botan::EAC1_1_obj< Derived >::init ( DataSource in) [inline, protected]

Definition at line 38 of file eac_obj.h.

         {
         try
            {
            Derived::decode_info(in, tbs_bits, m_sig);
            }
         catch(Decoding_Error)
            {
            throw Decoding_Error(PEM_label_pref + " decoding failed");
            }
         }
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 30 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().

   {
   Pipe pem;
   pem.start_msg();
   encode(pem, PEM);
   pem.end_msg();
   return pem.read_all_as_string();
   }

Get the signature algorithm identifier used to sign this object.

Returns:
the signature algorithm identifier

Definition at line 42 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().

   {
   return sig_algo;
   }
virtual std::vector<byte> Botan::EAC_Signed_Object::tbs_data ( ) const [pure virtual, inherited]

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 [protected, inherited]
std::vector<std::string> Botan::EAC_Signed_Object::PEM_labels_allowed [protected, inherited]

Definition at line 89 of file signed_obj.h.

std::vector<byte> Botan::EAC_Signed_Object::tbs_bits [protected, inherited]

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