2 * Copyright 2001-2007 Internet2
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 * Registration of factories for built-in resolvers
24 #include "signature/KeyResolver.h"
25 #include "signature/Signature.h"
27 using namespace xmlsignature;
28 using namespace xmltooling;
31 namespace xmlsignature {
32 XMLTOOL_DLLLOCAL PluginManager<KeyResolver,const DOMElement*>::Factory FilesystemKeyResolverFactory;
33 XMLTOOL_DLLLOCAL PluginManager<KeyResolver,const DOMElement*>::Factory InlineKeyResolverFactory;
36 void XMLTOOL_API xmlsignature::registerKeyResolvers()
38 XMLToolingConfig& conf=XMLToolingConfig::getConfig();
39 conf.KeyResolverManager.registerFactory(FILESYSTEM_KEY_RESOLVER, FilesystemKeyResolverFactory);
40 conf.KeyResolverManager.registerFactory(INLINE_KEY_RESOLVER, InlineKeyResolverFactory);
43 XSECCryptoKey* KeyResolver::resolveKey(const Signature* sig) const
45 const KeyInfo* keyInfo = sig->getKeyInfo();
47 return resolveKey(keyInfo);
48 DSIGSignature* native = sig->getXMLSignature();
49 return resolveKey(native ? native->getKeyInfoList() : (DSIGKeyInfoList*)NULL);
52 vector<XSECCryptoX509*>::size_type KeyResolver::resolveCertificates(
53 const KeyInfo* keyInfo, ResolvedCertificates& certs
59 vector<XSECCryptoX509*>::size_type KeyResolver::resolveCertificates(
60 DSIGKeyInfoList* keyInfo, ResolvedCertificates& certs
66 vector<XSECCryptoX509*>::size_type KeyResolver::resolveCertificates(
67 const Signature* sig, ResolvedCertificates& certs
70 const KeyInfo* keyInfo = sig->getKeyInfo();
72 return resolveCertificates(keyInfo, certs);
73 DSIGSignature* native = sig->getXMLSignature();
74 return resolveCertificates(native ? native->getKeyInfoList() : (DSIGKeyInfoList*)NULL, certs);
77 XSECCryptoX509CRL* KeyResolver::resolveCRL(const KeyInfo* keyInfo) const
82 XSECCryptoX509CRL* KeyResolver::resolveCRL(DSIGKeyInfoList* keyInfo) const
87 XSECCryptoX509CRL* KeyResolver::resolveCRL(const Signature* sig) const
89 const KeyInfo* keyInfo = sig->getKeyInfo();
91 return resolveCRL(keyInfo);
92 DSIGSignature* native = sig->getXMLSignature();
93 return resolveCRL(native ? native->getKeyInfoList() : (DSIGKeyInfoList*)NULL);