Botan 1.10.17
Botan::EAC_Signed_Object Class Referenceabstract

#include <signed_obj.h>

Inheritance diagram for Botan::EAC_Signed_Object:
Botan::EAC1_1_obj< EAC1_1_ADO > Botan::EAC1_1_obj< EAC1_1_CVC > Botan::EAC1_1_obj< EAC1_1_Req > Botan::EAC1_1_obj< Derived > Botan::EAC1_1_ADO Botan::EAC1_1_gen_CVC< EAC1_1_CVC > Botan::EAC1_1_gen_CVC< EAC1_1_Req > Botan::EAC1_1_gen_CVC< Derived > Botan::EAC1_1_CVC Botan::EAC1_1_Req

Public Member Functions

SecureVector< byteBER_encode () const
bool check_signature (class Public_Key &key, const MemoryRegion< byte > &sig) const
virtual void encode (Pipe &pipe, X509_Encoding encoding=PEM) const =0
virtual SecureVector< byteget_concat_sig () const =0
std::string PEM_encode () const
AlgorithmIdentifier signature_algorithm () const
virtual SecureVector< bytetbs_data () const =0
virtual ~EAC_Signed_Object ()

Protected Member Functions

void do_decode ()
 EAC_Signed_Object ()

Protected Attributes

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

Detailed Description

This class represents abstract signed EAC object

Definition at line 22 of file signed_obj.h.

Constructor & Destructor Documentation

◆ ~EAC_Signed_Object()

virtual Botan::EAC_Signed_Object::~EAC_Signed_Object ( )
inlinevirtual

Definition at line 80 of file signed_obj.h.

80{}

◆ EAC_Signed_Object()

Botan::EAC_Signed_Object::EAC_Signed_Object ( )
inlineprotected

Definition at line 83 of file signed_obj.h.

83{}

Member Function Documentation

◆ BER_encode()

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

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

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

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

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 virtual

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

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

Get the signature of this object as a concatenation, i.e. if the signature consists of multiple parts (like in the case of ECDSA) these will be concatenated.

Returns
signature as a concatenation of its parts

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

References check_signature(), and signature_algorithm().

◆ PEM_encode()

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

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

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 virtual

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

◆ PEM_label_pref

std::string Botan::EAC_Signed_Object::PEM_label_pref
protected

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
protected

Definition at line 88 of file signed_obj.h.

◆ sig_algo

AlgorithmIdentifier Botan::EAC_Signed_Object::sig_algo
protected

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