X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Fsecurity%2FChainingTrustEngine.h;h=a48decb8e8cd1eebe98e88cb772fd34309be83f4;hb=ab362f9c3195134452702c1ba7108258e81d8841;hp=be2c586f977333a2c8f71972c9b6136809b9dc75;hpb=fbb50076025b3885017ebae06b5e67af42303e96;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/security/ChainingTrustEngine.h b/xmltooling/security/ChainingTrustEngine.h index be2c586..a48decb 100644 --- a/xmltooling/security/ChainingTrustEngine.h +++ b/xmltooling/security/ChainingTrustEngine.h @@ -1,17 +1,21 @@ -/* - * Copyright 2001-2007 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. * - * http://www.apache.org/licenses/LICENSE-2.0 + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** @@ -24,13 +28,16 @@ #define __xmltooling_chaintrust_h__ #include +#include + +#include 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 +52,7 @@ namespace xmltooling { * * @param e DOM to supply configuration for provider */ - ChainingTrustEngine(const xercesc::DOMElement* e=NULL); + ChainingTrustEngine(const xercesc::DOMElement* e=nullptr); /** * Destructor will delete any embedded engines. @@ -57,9 +64,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 +72,12 @@ namespace xmltooling { * @param oldEngine trust engine to remove * @return the old engine */ - TrustEngine* removeTrustEngine(TrustEngine* oldEngine) { - for (std::vector::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 CredentialResolver& credResolver, - CredentialCriteria* criteria=NULL + CredentialCriteria* criteria=nullptr ) const; bool validate( const XMLCh* sigAlgorithm, @@ -89,22 +86,25 @@ namespace xmltooling { const char* in, unsigned int in_len, const CredentialResolver& credResolver, - CredentialCriteria* criteria=NULL + CredentialCriteria* criteria=nullptr ) const; bool validate( XSECCryptoX509* certEE, const std::vector& certChain, const CredentialResolver& credResolver, - CredentialCriteria* criteria=NULL + CredentialCriteria* criteria=nullptr ) const; bool validate( X509* certEE, STACK_OF(X509)* certChain, const CredentialResolver& credResolver, - CredentialCriteria* criteria=NULL + CredentialCriteria* criteria=nullptr ) const; private: - std::vector m_engines; + boost::ptr_vector m_engines; + boost::ptr_vector m_sigEngines; + boost::ptr_vector m_x509Engines; + boost::ptr_vector m_osslEngines; }; };