X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FXMLToolingConfig.h;h=93e9e518b90eda651641a41366029f562e720ddb;hb=723157700628d2f94e1911b9fc0145f351ccdcf1;hp=56beaf0f41d97cda59bc67fb15e5d24bc104cb8b;hpb=084322ba84a3ba54486e4d532aee55cb19c9ede8;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/XMLToolingConfig.h b/xmltooling/XMLToolingConfig.h index 56beaf0..93e9e51 100644 --- a/xmltooling/XMLToolingConfig.h +++ b/xmltooling/XMLToolingConfig.h @@ -1,17 +1,21 @@ -/* - * 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. - * 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. */ /** @@ -37,6 +41,7 @@ namespace xmltooling { + class XMLTOOL_API Mutex; class XMLTOOL_API ParserPool; class XMLTOOL_API PathResolver; class XMLTOOL_API TemplateEngine; @@ -48,6 +53,7 @@ namespace xmltooling { #ifndef XMLTOOLING_NO_XMLSEC class XMLTOOL_API CredentialResolver; class XMLTOOL_API KeyInfoResolver; + class XMLTOOL_API PathValidator; class XMLTOOL_API TrustEngine; class XMLTOOL_API XSECCryptoX509CRL; #endif @@ -152,6 +158,15 @@ namespace xmltooling { */ virtual ParserPool& getValidatingParser() const=0; + /** + * Returns a reference to a named mutex. + *

The first access to a given name will create the object. + * + * @param name name of mutex to access + * @return reference to a mutex object + */ + virtual Mutex& getNamedMutex(const char* name)=0; + #ifndef XMLTOOLING_NO_XMLSEC /** * Returns the global KeyInfoResolver instance. @@ -235,6 +250,7 @@ namespace xmltooling { void setURLEncoder(URLEncoder* urlEncoder); /** + * @deprecated * List of catalog files to load into validating parser pool at initialization time. *

Like other path settings, the separator depends on the platform * (semicolon on Windows, colon otherwise). @@ -250,6 +266,13 @@ namespace xmltooling { */ unsigned int clock_skew_secs; +#ifndef XMLTOOLING_LITE + /** + * Manages factories for StorageService plugins. + */ + PluginManager StorageServiceManager; +#endif + #ifndef XMLTOOLING_NO_XMLSEC /** * Returns an X.509 CRL implementation object. @@ -257,14 +280,19 @@ namespace xmltooling { virtual XSECCryptoX509CRL* X509CRL() const=0; /** + * Manages factories for CredentialResolver plugins. + */ + PluginManager CredentialResolverManager; + + /** * Manages factories for KeyInfoResolver plugins. */ PluginManager KeyInfoResolverManager; /** - * Manages factories for CredentialResolver plugins. + * Manages factories for PathValidator plugins. */ - PluginManager CredentialResolverManager; + PluginManager PathValidatorManager; /** * Manages factories for TrustEngine plugins. @@ -272,11 +300,6 @@ namespace xmltooling { PluginManager TrustEngineManager; /** - * Manages factories for StorageService plugins. - */ - PluginManager StorageServiceManager; - - /** * Maps an XML Signature/Encryption algorithm identifier to a library-specific * key algorithm and size for use in resolving credentials. * @@ -286,21 +309,39 @@ namespace xmltooling { virtual std::pair mapXMLAlgorithmToKeyAlgorithm(const XMLCh* xmlAlgorithm) const=0; /** + * Types of XML Security algorithms. + */ + enum XMLSecurityAlgorithmType { + ALGTYPE_UNK, + ALGTYPE_DIGEST, + ALGTYPE_SIGN, + ALGTYPE_ENCRYPT, + ALGTYPE_KEYENCRYPT, + ALGTYPE_KEYAGREE, + ALGTYPE_AUTHNENCRYPT + }; + + /** * Registers an XML Signature/Encryption algorithm identifier against a library-specific * key algorithm and size for use in resolving credentials. * * @param xmlAlgorithm XML Signature/Encryption algorithm identifier * @param keyAlgorithm a key algorithm * @param size a key size (or 0 if the size is irrelevant) + * @param type type of algorithm, if known */ - virtual void registerXMLAlgorithm(const XMLCh* xmlAlgorithm, const char* keyAlgorithm, unsigned int size=0)=0; + virtual void registerXMLAlgorithm( + const XMLCh* xmlAlgorithm, const char* keyAlgorithm, unsigned int size=0, XMLSecurityAlgorithmType type=ALGTYPE_UNK + )=0; /** - * Checks for implementation support of a particular XML security algorithm. + * Checks for implementation support of a particular XML Security algorithm. * + * @param xmlAlgorithm XML Signature/Encryption algorithm identifier + * @param type type of algorithm, or ALGTYPE_UNK to ignore * @return true iff the algorithm is supported by the underlying libraries */ - virtual bool isXMLAlgorithmSupported(const XMLCh* xmlAlgorithm)=0; + virtual bool isXMLAlgorithmSupported(const XMLCh* xmlAlgorithm, XMLSecurityAlgorithmType type=ALGTYPE_UNK)=0; #endif /**