Botan  1.11.15
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends
Botan::EAC1_1_Req Class Reference

#include <cvc_req.h>

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

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
 EAC1_1_Req (DataSource &source)
 EAC1_1_Req (const std::string &str)
void encode (Pipe &out, X509_Encoding encoding) const
ASN1_Chr get_chr () const
std::vector< byteget_concat_sig () const
bool is_self_signed () const
bool operator== (const EAC1_1_Req &other) const
std::string PEM_encode () const
AlgorithmIdentifier signature_algorithm () const
Public_Keysubject_public_key () const
std::vector< bytetbs_data () const
virtual ~EAC1_1_Req ()

Static Public Member Functions

static std::vector< bytebuild_cert_body (const std::vector< byte > &tbs)
static std::vector< bytemake_signed (PK_Signer &signer, const std::vector< 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, std::vector< 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
std::vector< bytetbs_bits

Friends

class EAC1_1_ADO
class EAC1_1_obj< EAC1_1_Req >

Detailed Description

This class represents TR03110 v1.1 EAC CV Certificate Requests.

Definition at line 19 of file cvc_req.h.


Constructor & Destructor Documentation

Construct a CVC request from a data source.

Parameters:
sourcethe data source

Definition at line 38 of file cvc_req.cpp.

References Botan::EAC_Signed_Object::do_decode(), Botan::EAC1_1_obj< EAC1_1_Req >::init(), and Botan::EAC1_1_gen_CVC< EAC1_1_Req >::self_signed.

   {
   init(in);
   self_signed = true;
   do_decode();
   }
Botan::EAC1_1_Req::EAC1_1_Req ( const std::string &  str)

Construct a CVC request from a DER encoded CVC request file.

Parameters:
strthe path to the DER encoded file

Definition at line 45 of file cvc_req.cpp.

References Botan::EAC_Signed_Object::do_decode(), Botan::EAC1_1_obj< EAC1_1_Req >::init(), and Botan::EAC1_1_gen_CVC< EAC1_1_Req >::self_signed.

   {
   DataSource_Stream stream(in, true);
   init(stream);
   self_signed = true;
   do_decode();
   }
virtual Botan::EAC1_1_Req::~EAC1_1_Req ( ) [inline, virtual]

Definition at line 43 of file cvc_req.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());
   }
static std::vector<byte> Botan::EAC1_1_gen_CVC< EAC1_1_Req >::build_cert_body ( const std::vector< byte > &  tbs) [static, inherited]

Build the DER encoded certifcate body of an object

Parameters:
tbsthe data to be signed
Returns:
the correctly encoded body of the object
bool Botan::EAC1_1_obj< EAC1_1_Req >::check_signature ( class Public_Key key) const [inline, inherited]

Definition at line 30 of file eac_obj.h.

References Botan::EAC1_1_obj< Derived >::check_signature(), Botan::ECDSA_Signature::DER_encode(), and Botan::EAC1_1_obj< Derived >::m_sig.

         {
         return EAC_Signed_Object::check_signature(key, m_sig.DER_encode());
         }
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;
      }
   }
static void Botan::EAC1_1_gen_CVC< EAC1_1_Req >::decode_info ( DataSource source,
std::vector< byte > &  res_tbs_bits,
ECDSA_Signature res_sig 
) [static, protected, inherited]
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 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 + ")");
      }
   }
void Botan::EAC1_1_gen_CVC< EAC1_1_Req >::encode ( Pipe out,
X509_Encoding  encoding 
) const [virtual, inherited]

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.

ASN1_Chr Botan::EAC1_1_gen_CVC< EAC1_1_Req >::get_chr ( ) const [inherited]

Get the CHR of the certificate.

Returns:
the CHR of the certificate
std::vector<byte> Botan::EAC1_1_obj< EAC1_1_Req >::get_concat_sig ( ) const [inline, virtual, inherited]

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.

References Botan::ECDSA_Signature::get_concatenation(), and Botan::EAC1_1_obj< Derived >::m_sig.

Referenced by operator==().

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

Definition at line 38 of file eac_obj.h.

References Botan::EAC1_1_obj< Derived >::m_sig, Botan::EAC_Signed_Object::PEM_label_pref, and Botan::EAC_Signed_Object::tbs_bits.

Referenced by EAC1_1_Req().

         {
         try
            {
            Derived::decode_info(in, tbs_bits, m_sig);
            }
         catch(Decoding_Error)
            {
            throw Decoding_Error(PEM_label_pref + " decoding failed");
            }
         }
bool Botan::EAC1_1_gen_CVC< EAC1_1_Req >::is_self_signed ( ) const [inherited]

Find out whether this object is self signed.

Returns:
true if this object is self signed
static std::vector<byte> Botan::EAC1_1_gen_CVC< EAC1_1_Req >::make_signed ( PK_Signer signer,
const std::vector< byte > &  tbs_bits,
RandomNumberGenerator rng 
) [static, inherited]

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
bool Botan::EAC1_1_Req::operator== ( const EAC1_1_Req other) const

Compare for equality with other

Parameters:
othercompare for equality with this object

Definition at line 14 of file cvc_req.cpp.

References Botan::EAC1_1_obj< EAC1_1_Req >::get_concat_sig(), Botan::EAC1_1_obj< Derived >::get_concat_sig(), Botan::EAC1_1_gen_CVC< EAC1_1_Req >::tbs_data(), and Botan::EAC1_1_gen_CVC< Derived >::tbs_data().

   {
   return (this->tbs_data() == rhs.tbs_data() &&
           this->get_concat_sig() == rhs.get_concat_sig());
   }
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;
   }

Get this certificates public key.

Returns:
this certificates public key
std::vector<byte> Botan::EAC1_1_gen_CVC< EAC1_1_Req >::tbs_data ( ) const [virtual, inherited]

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

Returns:
the TBS data of this object

Implements Botan::EAC_Signed_Object.

Referenced by operator==().


Friends And Related Function Documentation

friend class EAC1_1_ADO [friend]

Definition at line 22 of file cvc_req.h.

friend class EAC1_1_obj< EAC1_1_Req > [friend]

Definition at line 23 of file cvc_req.h.


Member Data Documentation

ASN1_Chr Botan::EAC1_1_gen_CVC< EAC1_1_Req >::m_chr [protected, inherited]

Definition at line 87 of file cvc_gen_cert.h.

Definition at line 86 of file cvc_gen_cert.h.

ECDSA_Signature Botan::EAC1_1_obj< EAC1_1_Req >::m_sig [protected, inherited]

Definition at line 36 of file eac_obj.h.

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.

bool Botan::EAC1_1_gen_CVC< EAC1_1_Req >::self_signed [protected, inherited]

Definition at line 88 of file cvc_gen_cert.h.

Referenced by EAC1_1_Req().

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

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