diff options
-rw-r--r-- | src/cert/cvc/cvc_ado.h | 9 | ||||
-rw-r--r-- | src/cert/cvc/cvc_cert.h | 134 | ||||
-rw-r--r-- | src/cert/cvc/cvc_gen_cert.h | 32 | ||||
-rw-r--r-- | src/cert/cvc/cvc_self.h | 8 |
4 files changed, 95 insertions, 88 deletions
diff --git a/src/cert/cvc/cvc_ado.h b/src/cert/cvc/cvc_ado.h index f6e9de9ea..adfdb4ecb 100644 --- a/src/cert/cvc/cvc_ado.h +++ b/src/cert/cvc/cvc_ado.h @@ -24,13 +24,15 @@ namespace Botan { // CRTP continuation from EAC1_1_obj class BOTAN_DLL EAC1_1_ADO : public EAC1_1_obj<EAC1_1_ADO> { - friend class EAC1_1_obj<EAC1_1_ADO>; public: + friend class EAC1_1_obj<EAC1_1_ADO>; + /** * Construct a CVC ADO request from a DER encoded CVC ADO request file. * @param str the path to the DER encoded file */ EAC1_1_ADO(const std::string& str); + /** * Construct a CVC ADO request from a data source * @param source the data source @@ -46,6 +48,7 @@ class BOTAN_DLL EAC1_1_ADO : public EAC1_1_obj<EAC1_1_ADO> std::auto_ptr<PK_Signer> signer, const MemoryRegion<byte>& tbs_bits, RandomNumberGenerator& rng); + /** * Get the CAR of this CVC ADO request * @result the CAR of this CVC ADO request @@ -72,8 +75,8 @@ class BOTAN_DLL EAC1_1_ADO : public EAC1_1_obj<EAC1_1_ADO> * @result the TBS data */ SecureVector<byte> tbs_data() const; - virtual ~EAC1_1_ADO() - {} + + virtual ~EAC1_1_ADO() {} private: ASN1_Car m_car; EAC1_1_Req m_req; diff --git a/src/cert/cvc/cvc_cert.h b/src/cert/cvc/cvc_cert.h index 00bdd6679..65ee83d0e 100644 --- a/src/cert/cvc/cvc_cert.h +++ b/src/cert/cvc/cvc_cert.h @@ -1,7 +1,7 @@ /************************************************* * EAC1_1 CVC Header File * * (C) 2008 Falko Strenzke * -* [email protected] * +* 2008 Jack Lloyd * *************************************************/ #ifndef BOTAN_CVC_EAC_H__ @@ -10,87 +10,81 @@ #include <botan/x509_key.h> #include <botan/enums.h> #include <botan/signed_obj.h> -#include <string> #include <botan/pubkey.h> #include <botan/ecdsa.h> #include <botan/ecdsa_sig.h> #include <botan/eac_obj.h> #include <botan/cvc_gen_cert.h> -namespace Botan - { +#include <string> +namespace Botan { - /** - * This class represents TR03110 (EAC) v1.1 CV Certificates - */ - class EAC1_1_CVC : public EAC1_1_gen_CVC<EAC1_1_CVC>//Signed_Object +/** +* This class represents TR03110 (EAC) v1.1 CV Certificates +*/ +class BOTAN_DLL EAC1_1_CVC : public EAC1_1_gen_CVC<EAC1_1_CVC>//Signed_Object { - friend class EAC1_1_obj<EAC1_1_CVC>; - public: - - /** - * Get the CAR of the certificate. - * @result the CAR of the certificate - */ - ASN1_Car get_car() const; - - /** - * Get the CED of this certificate. - * @result the CED this certificate - */ - ASN1_Ced get_ced() const; - /** - * Get the CEX of this certificate. - * @result the CEX this certificate - */ - ASN1_Cex get_cex() const; - - /** - * Get the CHAT value. - * @result the CHAT value - */ - u32bit get_chat_value() const; - - bool operator==(const EAC1_1_CVC&) const; - - /** - * Construct a CVC from a data source - * @param source the data source - */ - EAC1_1_CVC(std::tr1::shared_ptr<DataSource>& source); - /** - * Construct a CVC from a file - * @param str the path to the certificate file - */ - EAC1_1_CVC(const std::string& str); - virtual ~EAC1_1_CVC() - {} - - protected: - + friend class EAC1_1_obj<EAC1_1_CVC>; + + /** + * Get the CAR of the certificate. + * @result the CAR of the certificate + */ + ASN1_Car get_car() const; + + /** + * Get the CED of this certificate. + * @result the CED this certificate + */ + ASN1_Ced get_ced() const; + + /** + * Get the CEX of this certificate. + * @result the CEX this certificate + */ + ASN1_Cex get_cex() const; + + /** + * Get the CHAT value. + * @result the CHAT value + */ + u32bit get_chat_value() const; + + bool operator==(const EAC1_1_CVC&) const; + + /** + * Construct a CVC from a data source + * @param source the data source + */ + EAC1_1_CVC(std::tr1::shared_ptr<DataSource>& source); + + /** + * Construct a CVC from a file + * @param str the path to the certificate file + */ + EAC1_1_CVC(const std::string& str); + + virtual ~EAC1_1_CVC() {} private: - void force_decode(); - friend class EAC1_1_CVC_CA; - EAC1_1_CVC() - {} - ASN1_Car m_car; - ASN1_Ced m_ced; - ASN1_Cex m_cex; - byte m_chat_val; - OID m_chat_oid; - - + void force_decode(); + friend class EAC1_1_CVC_CA; + EAC1_1_CVC() {} + + ASN1_Car m_car; + ASN1_Ced m_ced; + ASN1_Cex m_cex; + byte m_chat_val; + OID m_chat_oid; }; - /************************************************* - *Comparison * - *************************************************/ - inline bool operator!=(EAC1_1_CVC const& lhs, EAC1_1_CVC const& rhs) - { - return !(lhs == rhs); - } - +/************************************************* +* Comparison * +*************************************************/ +inline bool operator!=(EAC1_1_CVC const& lhs, EAC1_1_CVC const& rhs) + { + return !(lhs == rhs); + } } diff --git a/src/cert/cvc/cvc_gen_cert.h b/src/cert/cvc/cvc_gen_cert.h index 6d333e56c..007c80e26 100644 --- a/src/cert/cvc/cvc_gen_cert.h +++ b/src/cert/cvc/cvc_gen_cert.h @@ -1,18 +1,18 @@ /************************************************* * EAC1_1 general CVC Header File * * (C) 2008 Falko Strenzke * -* [email protected] * +* 2008 Jack Lloyd * *************************************************/ -#ifndef BOTAN_EAC_CVC_GCERT_H__ -#define BOTAN_EAC_CVC_GCERT_H__ +#ifndef BOTAN_EAC_CVC_GEN_CERT_H__ +#define BOTAN_EAC_CVC_GEN_CERT_H__ #include <botan/x509_key.h> #include <botan/eac_asn_obj.h> #include <botan/enums.h> -#include <string> #include <botan/pubkey.h> #include <botan/ecdsa_sig.h> +#include <string> #include <assert.h> namespace Botan { @@ -24,12 +24,7 @@ template<typename Derived> class BOTAN_DLL EAC1_1_gen_CVC : public EAC1_1_obj<Derived> // CRTP continuation from EAC1_1_obj { friend class EAC1_1_obj<EAC1_1_gen_CVC>; - protected: - ECDSA_PublicKey m_pk; // public key - ASN1_Chr m_chr; - bool self_signed; - static void decode_info(SharedPtrConverter<DataSource> source, SecureVector<byte> & res_tbs_bits, ECDSA_Signature & res_sig); public: /** @@ -84,16 +79,27 @@ class BOTAN_DLL EAC1_1_gen_CVC : public EAC1_1_obj<Derived> // CRTP continuation virtual ~EAC1_1_gen_CVC<Derived>() {} - } - ; + protected: + ECDSA_PublicKey m_pk; // public key + ASN1_Chr m_chr; + bool self_signed; + + static void decode_info(SharedPtrConverter<DataSource> source, + SecureVector<byte> & res_tbs_bits, + ECDSA_Signature & res_sig); + + }; + template<typename Derived> ASN1_Chr EAC1_1_gen_CVC<Derived>::get_chr() const { return m_chr; } + template<typename Derived> bool EAC1_1_gen_CVC<Derived>::is_self_signed() const { return self_signed; } + template<typename Derived> MemoryVector<byte> EAC1_1_gen_CVC<Derived>::make_signed( std::auto_ptr<PK_Signer> signer, const MemoryRegion<byte>& tbs_bits, @@ -108,10 +114,12 @@ template<typename Derived> MemoryVector<byte> EAC1_1_gen_CVC<Derived>::make_sign .end_cons() .get_contents(); } + template<typename Derived> std::auto_ptr<Public_Key> EAC1_1_gen_CVC<Derived>::subject_public_key() const { return std::auto_ptr<Public_Key>(new ECDSA_PublicKey(m_pk)); } + template<typename Derived> SecureVector<byte> EAC1_1_gen_CVC<Derived>::build_cert_body(MemoryRegion<byte> const& tbs) { return DER_Encoder() @@ -119,10 +127,12 @@ template<typename Derived> SecureVector<byte> EAC1_1_gen_CVC<Derived>::build_cer .raw_bytes(tbs) .end_cons().get_contents(); } + template<typename Derived> SecureVector<byte> EAC1_1_gen_CVC<Derived>::tbs_data() const { return build_cert_body(EAC1_1_obj<Derived>::tbs_bits); } + template<typename Derived> void EAC1_1_gen_CVC<Derived>::encode(Pipe& out, X509_Encoding encoding) const { SecureVector<byte> concat_sig(EAC1_1_obj<Derived>::m_sig.get_concatenation()); diff --git a/src/cert/cvc/cvc_self.h b/src/cert/cvc/cvc_self.h index 6b84e1f55..735301989 100644 --- a/src/cert/cvc/cvc_self.h +++ b/src/cert/cvc/cvc_self.h @@ -31,11 +31,11 @@ class BOTAN_DLL EAC1_1_CVC_Options ASN1_Cex cex; std::string hash_alg; }; + /** * This namespace represents general EAC 1.1 convenience functions. */ -namespace CVC_EAC -{ +namespace CVC_EAC { /** * Create a selfsigned CVCA @@ -81,8 +81,8 @@ EAC1_1_ADO create_ado_req(Private_Key const& priv_key, * This namespace represents EAC 1.1 CVC convenience functions following the specific german * requirements. */ -namespace DE_EAC -{ +namespace DE_EAC { + /** * Create a CVCA certificate. * @param priv_key the private key associated with the CVCA certificate |