Botan 1.10.17
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
16namespace Botan {
17
18/**
19* This class represents TR03110 (EAC) v1.1 CV Certificates
20*/
21class 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*/
79inline 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*/
98EAC1_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*/
112
113}
114
115#endif
116
EAC1_1_CVC(DataSource &source)
Definition cvc_cert.cpp:70
ASN1_Cex get_cex() const
Definition cvc_cert.cpp:22
u32bit get_chat_value() const
Definition cvc_cert.cpp:26
bool operator==(const EAC1_1_CVC &) const
Definition cvc_cert.cpp:85
virtual ~EAC1_1_CVC()
Definition cvc_cert.h:64
ASN1_Ced get_ced() const
Definition cvc_cert.cpp:18
ASN1_Car get_car() const
Definition cvc_cert.cpp:13
ECDSA_PublicKey * decode_eac1_1_key(const MemoryRegion< byte > &, AlgorithmIdentifier &)
Definition cvc_cert.cpp:91
bool operator!=(const OctetString &s1, const OctetString &s2)
Definition symkey.cpp:106
unsigned int u32bit
Definition types.h:32
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