Removed ValidatingXMLObject interface and implementations.
[shibboleth/cpp-xmltooling.git] / xmltooling / signature / SignatureValidator.h
1 /*\r
2  *  Copyright 2001-2006 Internet2\r
3  * \r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 /**\r
18  * @file SignatureValidator.h\r
19  * \r
20  * Validator for signatures based on an externally-supplied key \r
21  */\r
22 \r
23 #if !defined(__xmltooling_sigval_h__) && !defined(XMLTOOLING_NO_XMLSEC)\r
24 #define __xmltooling_sigval_h__\r
25 \r
26 #include <xmltooling/signature/KeyResolver.h>\r
27 #include <xmltooling/signature/Signature.h>\r
28 #include <xmltooling/validation/Validator.h>\r
29 \r
30 namespace xmlsignature {\r
31 \r
32     /**\r
33      * Validator for signatures based on a KeyResolver\r
34      */\r
35     class XMLTOOL_API SignatureValidator : public virtual xmltooling::Validator\r
36     {\r
37     public:\r
38         /**\r
39          * Constructor\r
40          * \r
41          * @param resolver   the key resolver to use, will be freed by Validator\r
42          */\r
43         SignatureValidator(KeyResolver* resolver) : m_resolver(resolver) {\r
44         }\r
45         \r
46         virtual ~SignatureValidator() {\r
47             delete m_resolver;\r
48         }\r
49 \r
50         void validate(const xmltooling::XMLObject* xmlObject) const;\r
51 \r
52         virtual void validate(const Signature* signature) const;\r
53         \r
54         /**\r
55          * Replace the current KeyResolver, if any, with a new one.\r
56          * \r
57          * @param resolver  the KeyResolver to attach \r
58          */\r
59         void setKeyResolver(KeyResolver* resolver) {\r
60             delete m_resolver;\r
61             m_resolver=resolver;\r
62         }\r
63     \r
64     protected:\r
65         KeyResolver* m_resolver;\r
66     };\r
67 \r
68 };\r
69 \r
70 #endif /* __xmltooling_sigval_h__ */\r