From f3954a574674be5c04b4b6fd30d060e3aaeb4486 Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Mon, 23 Apr 2007 18:03:16 +0000 Subject: [PATCH] Move credential/criteria matching to criteria classes. --- xmltooling/Makefile.am | 2 +- xmltooling/security/Credential.h | 8 -------- xmltooling/security/CredentialCriteria.h | 10 +++++++++- .../{Credential.cpp => CredentialCriteria.cpp} | 22 +++++++++++----------- .../security/impl/FilesystemCredentialResolver.cpp | 4 ++-- xmltooling/xmltooling.vcproj | 2 +- 6 files changed, 24 insertions(+), 24 deletions(-) rename xmltooling/security/impl/{Credential.cpp => CredentialCriteria.cpp} (83%) diff --git a/xmltooling/Makefile.am b/xmltooling/Makefile.am index 1959236..080f2cf 100644 --- a/xmltooling/Makefile.am +++ b/xmltooling/Makefile.am @@ -116,7 +116,7 @@ xmlsec_sources = \ security/impl/AbstractPKIXTrustEngine.cpp \ security/impl/BasicX509Credential.cpp \ security/impl/ChainingTrustEngine.cpp \ - security/impl/Credential.cpp \ + security/impl/CredentialCriteria.cpp \ security/impl/CredentialResolver.cpp \ security/impl/ExplicitKeyTrustEngine.cpp \ security/impl/FilesystemCredentialResolver.cpp \ diff --git a/xmltooling/security/Credential.h b/xmltooling/security/Credential.h index 85c6505..42b20d4 100644 --- a/xmltooling/security/Credential.h +++ b/xmltooling/security/Credential.h @@ -114,14 +114,6 @@ namespace xmltooling { virtual const CredentialContext* getCredentalContext() const { return NULL; } - - /** - * Determines whether the supplied CredentialCriteria matches this Credential. - * - * @param criteria the CredentialCriteria to evaluate - * @return true iff this Credential is consistent with the criteria - */ - virtual bool matches(const CredentialCriteria& criteria) const; }; }; diff --git a/xmltooling/security/CredentialCriteria.h b/xmltooling/security/CredentialCriteria.h index d304597..44e9f4d 100644 --- a/xmltooling/security/CredentialCriteria.h +++ b/xmltooling/security/CredentialCriteria.h @@ -17,7 +17,7 @@ /** * @file xmltooling/security/CredentialCriteria.h * - * Class for specifying criteria by which a CredentialResolver should resolve credentials. + * Class for specifying criteria by which a CredentialResolver should resolve credentials. */ #if !defined(__xmltooling_credcrit_h__) && !defined(XMLTOOLING_NO_XMLSEC) @@ -49,6 +49,14 @@ namespace xmltooling { delete m_credential; } + /** + * Determines whether the supplied Credential matches this CredentialCriteria. + * + * @param credential the Credential to evaluate + * @return true iff the Credential is consistent with this criteria + */ + virtual bool matches(const Credential& credential) const; + enum UsageType { UNSPECIFIED_CREDENTIAL, SIGNING_CREDENTIAL, diff --git a/xmltooling/security/impl/Credential.cpp b/xmltooling/security/impl/CredentialCriteria.cpp similarity index 83% rename from xmltooling/security/impl/Credential.cpp rename to xmltooling/security/impl/CredentialCriteria.cpp index 9e759bd..f7521a0 100644 --- a/xmltooling/security/impl/Credential.cpp +++ b/xmltooling/security/impl/CredentialCriteria.cpp @@ -15,9 +15,9 @@ */ /** - * Credential.cpp + * CredentialCriteria.cpp * - * Wraps keys and related functionality. + * Class for specifying criteria by which a CredentialResolver should resolve credentials. */ #include "internal.h" @@ -34,24 +34,24 @@ using namespace xmltooling; using namespace std; -bool Credential::matches(const CredentialCriteria& criteria) const +bool CredentialCriteria::matches(const Credential& credential) const { // Algorithm check, if specified and we have one. - const char* alg = criteria.getKeyAlgorithm(); + const char* alg = getKeyAlgorithm(); if (alg && *alg) { - const char* alg2 = getAlgorithm(); + const char* alg2 = credential.getAlgorithm(); if (alg2 && *alg2) if (strcmp(alg,alg2)) return false; } // KeySize check, if specified and we have one. - if (criteria.getKeySize()>0 && getKeySize()>0 && criteria.getKeySize() != getKeySize()) + if (credential.getKeySize()>0 && getKeySize()>0 && credential.getKeySize() != getKeySize()) return false; // See if we can test key names. - const set& critnames = criteria.getKeyNames(); - const set& crednames = getKeyNames(); + const set& critnames = getKeyNames(); + const set& crednames = credential.getKeyNames(); if (!critnames.empty() && !crednames.empty()) { bool found = false; for (set::const_iterator n = critnames.begin(); n!=critnames.end(); ++n) { @@ -65,11 +65,11 @@ bool Credential::matches(const CredentialCriteria& criteria) const } // See if we have to match a specific key. - XSECCryptoKey* key1 = criteria.getPublicKey(); + XSECCryptoKey* key1 = getPublicKey(); if (!key1) return true; // no key to compare against, so we're done - XSECCryptoKey* key2 = getPublicKey(); + XSECCryptoKey* key2 = credential.getPublicKey(); if (!key2) return true; // no key here, so we can't test it @@ -95,6 +95,6 @@ bool Credential::matches(const CredentialCriteria& criteria) const return (BN_cmp(dsa1->pub_key,dsa2->pub_key) == 0); } - log4cpp::Category::getInstance(XMLTOOLING_LOGCAT".Credential").warn("unsupported key type for comparison"); + log4cpp::Category::getInstance(XMLTOOLING_LOGCAT".CredentialCriteria").warn("unsupported key type for comparison"); return false; } diff --git a/xmltooling/security/impl/FilesystemCredentialResolver.cpp b/xmltooling/security/impl/FilesystemCredentialResolver.cpp index b1247d4..f34677f 100644 --- a/xmltooling/security/impl/FilesystemCredentialResolver.cpp +++ b/xmltooling/security/impl/FilesystemCredentialResolver.cpp @@ -100,13 +100,13 @@ namespace xmltooling { void unlock() {} const Credential* resolve(const CredentialCriteria* criteria=NULL) const { - return (criteria ? (m_credential->matches(*criteria) ? m_credential : NULL) : m_credential); + return (criteria ? (criteria->matches(*m_credential) ? m_credential : NULL) : m_credential); } virtual vector::size_type resolve( vector& results, const CredentialCriteria* criteria=NULL ) const { - if (!criteria || m_credential->matches(*criteria)) { + if (!criteria || criteria->matches(*m_credential)) { results.push_back(m_credential); return 1; } diff --git a/xmltooling/xmltooling.vcproj b/xmltooling/xmltooling.vcproj index bcc3c75..837e651 100644 --- a/xmltooling/xmltooling.vcproj +++ b/xmltooling/xmltooling.vcproj @@ -382,7 +382,7 @@ >