2 * Copyright 2001-2005 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.
17 /* XMLProviders.cpp - bootstraps the extension library
26 # define XML_EXPORTS __declspec(dllexport)
32 #include <shib-target/shib-target.h>
33 #include <log4cpp/Category.hh>
34 #include <openssl/err.h>
37 using namespace shibboleth;
38 using namespace log4cpp;
43 PlugManager::Factory TargetedIDFactory;
44 PlugManager::Factory XMLMetadataFactory;
45 PlugManager::Factory XMLCredentialsFactory;
46 PlugManager::Factory XMLAAPFactory;
47 PlugManager::Factory FileCredResolverFactory;
48 PlugManager::Factory XMLAccessControlFactory;
50 extern "C" int XML_EXPORTS saml_extension_init(void*)
52 // Register extension schemas.
53 saml::XML::registerSchema(::XML::SHIB_NS,::XML::SHIB_SCHEMA_ID);
54 saml::XML::registerSchema(::XML::SHIBMETA_NS,::XML::SHIBMETA_SCHEMA_ID);
55 saml::XML::registerSchema(::XML::CREDS_NS,::XML::CREDS_SCHEMA_ID);
56 saml::XML::registerSchema(::XML::SAML2META_NS,::XML::SAML2META_SCHEMA_ID);
57 saml::XML::registerSchema(::XML::SAML2ASSERT_NS,::XML::SAML2ASSERT_SCHEMA_ID);
58 saml::XML::registerSchema(::XML::XMLENC_NS,::XML::XMLENC_SCHEMA_ID);
60 // Register metadata factories (some are legacy aliases)
61 SAMLConfig& conf=SAMLConfig::getConfig();
62 conf.getPlugMgr().regFactory("edu.internet2.middleware.shibboleth.common.provider.TargetedIDFactory",&TargetedIDFactory);
63 conf.getPlugMgr().regFactory("edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata",&XMLMetadataFactory);
64 conf.getPlugMgr().regFactory("edu.internet2.middleware.shibboleth.common.provider.XMLMetadata",&XMLMetadataFactory);
65 conf.getPlugMgr().regFactory("edu.internet2.middleware.shibboleth.common.Credentials",&XMLCredentialsFactory);
66 conf.getPlugMgr().regFactory("edu.internet2.middleware.shibboleth.common.Credentials.FileCredentialResolver",&FileCredResolverFactory);
67 conf.getPlugMgr().regFactory("edu.internet2.middleware.shibboleth.aap.provider.XMLAAP",&XMLAAPFactory);
68 conf.getPlugMgr().regFactory("edu.internet2.middleware.shibboleth.target.provider.XMLAAP",&XMLAAPFactory);
69 conf.getPlugMgr().regFactory(shibtarget::XML::XMLAccessControlType,&XMLAccessControlFactory);
74 extern "C" void XML_EXPORTS saml_extension_term()
76 // Unregister metadata factories
77 SAMLConfig& conf=SAMLConfig::getConfig();
78 conf.getPlugMgr().unregFactory("edu.internet2.middleware.shibboleth.common.provider.TargetedIDFactory");
79 conf.getPlugMgr().unregFactory("edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata");
80 conf.getPlugMgr().unregFactory("edu.internet2.middleware.shibboleth.common.provider.XMLMetadata");
81 conf.getPlugMgr().unregFactory("edu.internet2.middleware.shibboleth.common.Credentials");
82 conf.getPlugMgr().unregFactory("edu.internet2.middleware.shibboleth.common.Credentials.FileCredentialResolver");
83 conf.getPlugMgr().unregFactory("edu.internet2.middleware.shibboleth.aap.provider.XMLAAP");
84 conf.getPlugMgr().unregFactory("edu.internet2.middleware.shibboleth.target.provider.XMLAAP");
85 conf.getPlugMgr().unregFactory(shibtarget::XML::XMLAccessControlType);
94 unsigned long code=ERR_get_error_line_data(&file,&line,&data,&flags);
96 Category& log=Category::getInstance("OpenSSL");
97 log.errorStream() << "error code: " << code << " in " << file << ", line " << line << CategoryStream::ENDLINE;
98 if (data && (flags & ERR_TXT_STRING))
99 log.errorStream() << "error data: " << data << CategoryStream::ENDLINE;
100 code=ERR_get_error_line_data(&file,&line,&data,&flags);
104 X509* B64_to_X509(const char* buf)
106 BIO* bmem = BIO_new_mem_buf((void*)buf,-1);
107 BIO* b64 = BIO_new(BIO_f_base64());
108 b64 = BIO_push(b64, bmem);
110 d2i_X509_bio(b64,&x);
117 X509_CRL* B64_to_CRL(const char* buf)
119 BIO* bmem = BIO_new_mem_buf((void*)buf,-1);
120 BIO* b64 = BIO_new(BIO_f_base64());
121 b64 = BIO_push(b64, bmem);
123 d2i_X509_CRL_bio(b64,&x);