Convert from NULL macro to nullptr.
[shibboleth/cpp-xmltooling.git] / xmltooling / security / ChainingTrustEngine.h
index d0ea5b7..80e5849 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2007 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 #define __xmltooling_chaintrust_h__
 
 #include <xmltooling/security/OpenSSLTrustEngine.h>
+#include <xmltooling/security/SignatureTrustEngine.h>
+
+#include <vector>
 
 namespace xmltooling {
 
     /**
      * OpenSSLTrustEngine that uses multiple engines in sequence.
      */
-    class XMLTOOL_API ChainingTrustEngine : public OpenSSLTrustEngine {
+    class XMLTOOL_API ChainingTrustEngine : public SignatureTrustEngine, public OpenSSLTrustEngine {
     public:
         /**
          * Constructor.
@@ -45,7 +48,7 @@ namespace xmltooling {
          * 
          * @param e DOM to supply configuration for provider
          */
-        ChainingTrustEngine(const DOMElement* e=NULL);
+        ChainingTrustEngine(const xercesc::DOMElement* e=nullptr);
         
         /**
          * Destructor will delete any embedded engines.
@@ -57,9 +60,7 @@ namespace xmltooling {
          * 
          * @param newEngine trust engine to add
          */
-        void addTrustEngine(TrustEngine* newEngine) {
-            m_engines.push_back(newEngine);
-        }
+        void addTrustEngine(TrustEngine* newEngine);
 
         /**
          * Removes a trust engine. The caller must delete the engine if necessary.
@@ -67,20 +68,12 @@ namespace xmltooling {
          * @param oldEngine trust engine to remove
          * @return  the old engine
          */
-        TrustEngine* removeTrustEngine(TrustEngine* oldEngine) {
-            for (std::vector<TrustEngine*>::iterator i=m_engines.begin(); i!=m_engines.end(); i++) {
-                if (oldEngine==(*i)) {
-                    m_engines.erase(i);
-                    return oldEngine;
-                }
-            }
-            return NULL;
-        }
+        TrustEngine* removeTrustEngine(TrustEngine* oldEngine);
 
         bool validate(
             xmlsignature::Signature& sig,
-            const KeyInfoSource& keyInfoSource,
-            const xmlsignature::KeyResolver* keyResolver=NULL
+            const CredentialResolver& credResolver,
+            CredentialCriteria* criteria=nullptr
             ) const;
         bool validate(
             const XMLCh* sigAlgorithm,
@@ -88,25 +81,26 @@ namespace xmltooling {
             xmlsignature::KeyInfo* keyInfo,
             const char* in,
             unsigned int in_len,
-            const KeyInfoSource& keyInfoSource,
-            const xmlsignature::KeyResolver* keyResolver=NULL
+            const CredentialResolver& credResolver,
+            CredentialCriteria* criteria=nullptr
             ) const;
         bool validate(
             XSECCryptoX509* certEE,
             const std::vector<XSECCryptoX509*>& certChain,
-            const KeyInfoSource& keyInfoSource,
-            bool checkName=true,
-            const xmlsignature::KeyResolver* keyResolver=NULL
+            const CredentialResolver& credResolver,
+            CredentialCriteria* criteria=nullptr
             ) const;
         bool validate(
             X509* certEE,
             STACK_OF(X509)* certChain,
-            const KeyInfoSource& keyInfoSource,
-            bool checkName=true,
-            const xmlsignature::KeyResolver* keyResolver=NULL
+            const CredentialResolver& credResolver,
+            CredentialCriteria* criteria=nullptr
             ) const;
     private:
         std::vector<TrustEngine*> m_engines;
+        std::vector<SignatureTrustEngine*> m_sigEngines;
+        std::vector<X509TrustEngine*> m_x509Engines;
+        std::vector<OpenSSLTrustEngine*> m_osslEngines;
     };
     
 };