/*
- * 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.
*
* @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.
*
* @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.
* @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 CredentialResolver& credResolver,
- CredentialCriteria* criteria=NULL
+ CredentialCriteria* criteria=nullptr
) const;
bool validate(
const XMLCh* sigAlgorithm,
const char* in,
unsigned int in_len,
const CredentialResolver& credResolver,
- CredentialCriteria* criteria=NULL
+ CredentialCriteria* criteria=nullptr
) const;
bool validate(
XSECCryptoX509* certEE,
const std::vector<XSECCryptoX509*>& 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<TrustEngine*> m_engines;
+ std::vector<SignatureTrustEngine*> m_sigEngines;
+ std::vector<X509TrustEngine*> m_x509Engines;
+ std::vector<OpenSSLTrustEngine*> m_osslEngines;
};
};