diff options
Diffstat (limited to 'src/cert/x509cert')
-rw-r--r-- | src/cert/x509cert/x509_ext.h | 2 | ||||
-rw-r--r-- | src/cert/x509cert/x509_obj.cpp | 5 | ||||
-rw-r--r-- | src/cert/x509cert/x509cert.cpp | 10 | ||||
-rw-r--r-- | src/cert/x509cert/x509cert.h | 10 |
4 files changed, 19 insertions, 8 deletions
diff --git a/src/cert/x509cert/x509_ext.h b/src/cert/x509cert/x509_ext.h index 8799c5921..714e29562 100644 --- a/src/cert/x509cert/x509_ext.h +++ b/src/cert/x509cert/x509_ext.h @@ -12,7 +12,7 @@ #include <botan/asn1_oid.h> #include <botan/asn1_obj.h> #include <botan/datastor.h> -#include <botan/pubkey_enums.h> +#include <botan/crl_ent.h> namespace Botan { diff --git a/src/cert/x509cert/x509_obj.cpp b/src/cert/x509cert/x509_obj.cpp index 13193f09c..c58081225 100644 --- a/src/cert/x509cert/x509_obj.cpp +++ b/src/cert/x509cert/x509_obj.cpp @@ -16,6 +16,8 @@ #include <algorithm> #include <memory> +#include <stdio.h> + namespace Botan { /* @@ -192,8 +194,9 @@ bool X509_Object::check_signature(Public_Key& pub_key) const return verifier.verify_message(tbs_data(), signature()); } - catch(...) + catch(std::exception& e) { + printf("Failure during validation %s\n", e.what()); return false; } } diff --git a/src/cert/x509cert/x509cert.cpp b/src/cert/x509cert/x509cert.cpp index 7d9370f2a..52115a1a8 100644 --- a/src/cert/x509cert/x509cert.cpp +++ b/src/cert/x509cert/x509cert.cpp @@ -206,9 +206,15 @@ bool X509_Certificate::is_CA_cert() const { if(!subject.get1_u32bit("X509v3.BasicConstraints.is_ca")) return false; - if((constraints() & KEY_CERT_SIGN) || (constraints() == NO_CONSTRAINTS)) + + return allowed_usage(KEY_CERT_SIGN); + } + +bool X509_Certificate::allowed_usage(Key_Constraints restriction) const + { + if(constraints() == NO_CONSTRAINTS) return true; - return false; + return (constraints() & restriction); } /* diff --git a/src/cert/x509cert/x509cert.h b/src/cert/x509cert/x509cert.h index 8798ef1c2..d25b97694 100644 --- a/src/cert/x509cert/x509cert.h +++ b/src/cert/x509cert/x509cert.h @@ -23,10 +23,10 @@ namespace Botan { class BOTAN_DLL X509_Certificate : public X509_Object { public: - /** - * Get the public key associated with this certificate. - * @return subject public key of this certificate - */ + /** + * Get the public key associated with this certificate. + * @return subject public key of this certificate + */ Public_Key* subject_public_key() const; /** @@ -111,6 +111,8 @@ class BOTAN_DLL X509_Certificate : public X509_Object */ bool is_CA_cert() const; + bool allowed_usage(Key_Constraints restriction) const; + /** * Get the path limit as defined in the BasicConstraints extension of * this certificate. |