-namespace {
- class SampleTrustEngine : public AbstractPKIXTrustEngine {
- public:
- SampleTrustEngine() {}
- ~SampleTrustEngine() {}
-
- class SampleIterator : public PKIXValidationInfoIterator {
- CredentialResolver* m_resolver;
- mutable vector<XSECCryptoX509CRL*> m_crls;
- bool m_done;
- public:
- SampleIterator() : m_resolver(NULL), m_done(false) {
- string config = data_path + "security/FilesystemCredentialResolver.xml";
- ifstream in(config.c_str());
- DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
- XercesJanitor<DOMDocument> janitor(doc);
- m_resolver = XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin(
- FILESYSTEM_CREDENTIAL_RESOLVER,doc->getDocumentElement()
- );
- m_resolver->lock();
- }
-
- ~SampleIterator() {
- m_resolver->unlock();
- delete m_resolver;
- }
-
- bool next() {
- if (m_done)
- return false;
- m_done = true;
- return true;
- }
-
- int getVerificationDepth() const {
- return 0;
- }
-
- const vector<XSECCryptoX509*>& getTrustAnchors() const {
- return dynamic_cast<const X509Credential*>(m_resolver->resolve())->getEntityCertificateChain();
- }
-
- const vector<XSECCryptoX509CRL*>& getCRLs() const {
- XSECCryptoX509CRL* crl = dynamic_cast<const X509Credential*>(m_resolver->resolve())->getCRL();
- if (crl)
- m_crls.push_back(crl);
- return m_crls;
- }
- };
-
- PKIXValidationInfoIterator* getPKIXValidationInfoIterator(
- const CredentialResolver& credResolver, CredentialCriteria* criteria=NULL
- ) const {
- dynamic_cast<const MetadataCredentialCriteria*>(criteria);
- return new SampleIterator();
- }
- };
-};
-
-class AbstractPKIXTrustEngineTest : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {