X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FXMLToolingConfig.h;h=26e01a993b1cefbaa02181f5a02ad236b0819a63;hb=81b488b2790e7bdeb2f43560b1d4a7d22c3dfdf5;hp=2bdc59b1a3e63bc3e3dcbced13f82afc13729102;hpb=a0d768778a8f5f539b909baf5b115e70ea765f0f;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/XMLToolingConfig.h b/xmltooling/XMLToolingConfig.h index 2bdc59b..26e01a9 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. + * + * 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 * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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. + * 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. */ /** @@ -55,7 +59,7 @@ namespace xmltooling { /** * Singleton object that manages library startup/shutdown.configuration. * - * A locking interface is supplied as a convenience for code that wants to + *

A locking interface is supplied as a convenience for code that wants to * obtain a global system lock, but the actual configuration itself is not * synchronized. */ @@ -104,20 +108,19 @@ namespace xmltooling { /** * Shuts down library - * - * Each process using the library SHOULD call this function exactly once + *

Each process using the library SHOULD call this function exactly once * before terminating itself */ virtual void term()=0; /** * Loads a shared/dynamic library extension. - * - * Extension libraries are managed using a pair of "C" linkage functions:
+ * + *

Extension libraries are managed using a pair of "C" linkage functions:
* extern "C" int xmltooling_extension_init(void* context);
* extern "C" void xmltooling_extension_term(); - * - * This method is internally synchronized. + * + *

This method is internally synchronized. * * @param path pathname of shared library to load into process * @param context arbitrary data to pass to library initialization hook @@ -127,8 +130,7 @@ namespace xmltooling { /** * Configure logging system. - * - * May be called first, before initializing the library. Other calls to it + *

May be called first, before initializing the library. Other calls to it * must be externally synchronized. * * @param config either a logging configuration file, or a level from the set @@ -139,7 +141,7 @@ namespace xmltooling { /** * Obtains a non-validating parser pool. - * Library must be initialized first. + *

Library must be initialized first. * * @return reference to a non-validating parser pool. */ @@ -147,7 +149,7 @@ namespace xmltooling { /** * Obtains a validating parser pool. - * Library must be initialized first. Schema/catalog registration must be + *

Library must be initialized first. Schema/catalog registration must be * externally synchronized. * * @return reference to a validating parser pool. @@ -171,7 +173,7 @@ namespace xmltooling { /** * Sets the global KeyInfoResolver instance. - * This method must be externally synchronized with any code that uses the object. + *

This method must be externally synchronized with any code that uses the object. * Any previously set object is destroyed. * * @param keyInfoResolver new KeyInfoResolver instance to store @@ -180,7 +182,7 @@ namespace xmltooling { /** * Sets the global ReplayCache instance. - * This method must be externally synchronized with any code that uses the object. + *

This method must be externally synchronized with any code that uses the object. * Any previously set object is destroyed. * * @param replayCache new ReplayCache instance to store @@ -211,7 +213,7 @@ namespace xmltooling { /** * Sets the global PathResolver instance. - * This method must be externally synchronized with any code that uses the object. + *

This method must be externally synchronized with any code that uses the object. * Any previously set object is destroyed. * * @param pathResolver new PathResolver instance to store @@ -220,7 +222,7 @@ namespace xmltooling { /** * Sets the global TemplateEngine instance. - * This method must be externally synchronized with any code that uses the object. + *

This method must be externally synchronized with any code that uses the object. * Any previously set object is destroyed. * * @param templateEngine new TemplateEngine instance to store @@ -229,7 +231,7 @@ namespace xmltooling { /** * Sets the global URLEncoder instance. - * This method must be externally synchronized with any code that uses the object. + *

This method must be externally synchronized with any code that uses the object. * Any previously set object is destroyed. * * @param urlEncoder new URLEncoder instance to store @@ -238,11 +240,14 @@ namespace xmltooling { /** * List of catalog files to load into validating parser pool at initialization time. - * Like other path settings, the separator depends on the platform + *

Like other path settings, the separator depends on the platform * (semicolon on Windows, colon otherwise). */ std::string catalog_path; - + + /** A User-Agent header to include in HTTP client requests. */ + std::string user_agent; + /** * Adjusts any clock comparisons to be more liberal/permissive by the * indicated number of seconds. @@ -285,14 +290,38 @@ 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 + }; + + /** * 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, XMLSecurityAlgorithmType type=ALGTYPE_UNK + )=0; + + /** + * 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 void registerXMLAlgorithm(const XMLCh* xmlAlgorithm, const char* keyAlgorithm, unsigned int size=0)=0; + virtual bool isXMLAlgorithmSupported(const XMLCh* xmlAlgorithm, XMLSecurityAlgorithmType type=ALGTYPE_UNK)=0; #endif /**