Botan  1.10.9
cvc_cert.h
Go to the documentation of this file.
1 /*
2 * EAC1_1 CVC
3 * (C) 2008 Falko Strenzke
4 * 2008 Jack Lloyd
5 *
6 * Distributed under the terms of the Botan license
7 */
8 
9 #ifndef BOTAN_CVC_EAC_H__
10 #define BOTAN_CVC_EAC_H__
11 
12 #include <botan/cvc_gen_cert.h>
13 #include <botan/ecdsa.h>
14 #include <string>
15 
16 namespace Botan {
17 
18 /**
19 * This class represents TR03110 (EAC) v1.1 CV Certificates
20 */
21 class BOTAN_DLL EAC1_1_CVC : public EAC1_1_gen_CVC<EAC1_1_CVC>//Signed_Object
22  {
23  public:
24  friend class EAC1_1_obj<EAC1_1_CVC>;
25 
26  /**
27  * Get the CAR of the certificate.
28  * @result the CAR of the certificate
29  */
30  ASN1_Car get_car() const;
31 
32  /**
33  * Get the CED of this certificate.
34  * @result the CED this certificate
35  */
36  ASN1_Ced get_ced() const;
37 
38  /**
39  * Get the CEX of this certificate.
40  * @result the CEX this certificate
41  */
42  ASN1_Cex get_cex() const;
43 
44  /**
45  * Get the CHAT value.
46  * @result the CHAT value
47  */
48  u32bit get_chat_value() const;
49 
50  bool operator==(const EAC1_1_CVC&) const;
51 
52  /**
53  * Construct a CVC from a data source
54  * @param source the data source
55  */
56  EAC1_1_CVC(DataSource& source);
57 
58  /**
59  * Construct a CVC from a file
60  * @param str the path to the certificate file
61  */
62  EAC1_1_CVC(const std::string& str);
63 
64  virtual ~EAC1_1_CVC() {}
65  private:
66  void force_decode();
67  EAC1_1_CVC() {}
68 
69  ASN1_Car m_car;
70  ASN1_Ced m_ced;
71  ASN1_Cex m_cex;
72  byte m_chat_val;
73  OID m_chat_oid;
74  };
75 
76 /*
77 * Comparison
78 */
79 inline bool operator!=(EAC1_1_CVC const& lhs, EAC1_1_CVC const& rhs)
80  {
81  return !(lhs == rhs);
82  }
83 
84 /**
85 * Create an arbitrary EAC 1.1 CVC.
86 * The desired key encoding must be set within the key (if applicable).
87 * @param signer the signer used to sign the certificate
88 * @param public_key the DER encoded public key to appear in
89 * the certificate
90 * @param car the CAR of the certificate
91 * @param chr the CHR of the certificate
92 * @param holder_auth_templ the holder authorization value byte to
93 * appear in the CHAT of the certificate
94 * @param ced the CED to appear in the certificate
95 * @param cex the CEX to appear in the certificate
96 * @param rng a random number generator
97 */
98 EAC1_1_CVC BOTAN_DLL make_cvc_cert(PK_Signer& signer,
99  const MemoryRegion<byte>& public_key,
100  ASN1_Car const& car,
101  ASN1_Chr const& chr,
102  byte holder_auth_templ,
103  ASN1_Ced ced,
104  ASN1_Cex cex,
105  RandomNumberGenerator& rng);
106 
107 /**
108 * Decode an EAC encoding ECDSA key
109 */
110 BOTAN_DLL ECDSA_PublicKey* decode_eac1_1_key(const MemoryRegion<byte>& enc_key,
111  AlgorithmIdentifier& sig_algo);
112 
113 }
114 
115 #endif
116 
bool operator!=(const OctetString &s1, const OctetString &s2)
Definition: symkey.cpp:106
bool operator==(const OctetString &s1, const OctetString &s2)
Definition: symkey.cpp:98
EAC1_1_CVC make_cvc_cert(PK_Signer &signer, MemoryRegion< byte > const &public_key, ASN1_Car const &car, ASN1_Chr const &chr, byte holder_auth_templ, ASN1_Ced ced, ASN1_Cex cex, RandomNumberGenerator &rng)
Definition: cvc_cert.cpp:98
unsigned char byte
Definition: types.h:22
RandomNumberGenerator * rng
Definition: global_rng.cpp:165
ECDSA_PublicKey * decode_eac1_1_key(const MemoryRegion< byte > &, AlgorithmIdentifier &)
Definition: cvc_cert.cpp:91
unsigned int u32bit
Definition: types.h:32
virtual ~EAC1_1_CVC()
Definition: cvc_cert.h:64