Base POST profile behavior on dynamically supplied config data.
authorwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Thu, 22 Jan 2004 06:38:21 +0000 (06:38 +0000)
committerwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Thu, 22 Jan 2004 06:38:21 +0000 (06:38 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@835 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/common/ClubShibPOSTProfile.java [deleted file]
src/edu/internet2/middleware/shibboleth/common/Credential.java
src/edu/internet2/middleware/shibboleth/common/ShibPOSTProfile.java
src/edu/internet2/middleware/shibboleth/common/ShibPOSTProfileFactory.java [deleted file]

diff --git a/src/edu/internet2/middleware/shibboleth/common/ClubShibPOSTProfile.java b/src/edu/internet2/middleware/shibboleth/common/ClubShibPOSTProfile.java
deleted file mode 100755 (executable)
index 7312578..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/* 
- * The Shibboleth License, Version 1. 
- * Copyright (c) 2002 
- * University Corporation for Advanced Internet Development, Inc. 
- * All rights reserved
- * 
- * 
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this 
- * list of conditions and the following disclaimer.
- * 
- * Redistributions in binary form must reproduce the above copyright notice, 
- * this list of conditions and the following disclaimer in the documentation 
- * and/or other materials provided with the distribution, if any, must include 
- * the following acknowledgment: "This product includes software developed by 
- * the University Corporation for Advanced Internet Development 
- * <http://www.ucaid.edu>Internet2 Project. Alternately, this acknowledegement 
- * may appear in the software itself, if and wherever such third-party 
- * acknowledgments normally appear.
- * 
- * Neither the name of Shibboleth nor the names of its contributors, nor 
- * Internet2, nor the University Corporation for Advanced Internet Development, 
- * Inc., nor UCAID may be used to endorse or promote products derived from this 
- * software without specific prior written permission. For written permission, 
- * please contact shibboleth@shibboleth.org
- * 
- * Products derived from this software may not be called Shibboleth, Internet2, 
- * UCAID, or the University Corporation for Advanced Internet Development, nor 
- * may Shibboleth appear in their name, without prior written permission of the 
- * University Corporation for Advanced Internet Development.
- * 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK 
- * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. 
- * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY 
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, 
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.internet2.middleware.shibboleth.common;
-
-import java.security.Key;
-import java.security.KeyStore;
-import java.security.interfaces.RSAPrivateKey;
-import java.util.Collection;
-import java.util.Date;
-
-import org.apache.xml.security.signature.XMLSignature;
-import org.opensaml.*;
-
-/**
- *  ClubShib-specific POST browser profile implementation
- *
- * @author     Scott Cantor
- * @created    April 11, 2002
- */
-public class ClubShibPOSTProfile extends ShibPOSTProfile
-{
-    /**
-     *  SHIRE-side constructor for a ClubShibPOSTProfile object
-     *
-     * @param  policies           Set of policy URIs that the implementation
-     *      must support
-     * @param  receiver           URL of SHIRE
-     * @param  ttlSeconds         Length of time in seconds allowed to elapse
-     *      from issuance of SAML response
-     * @exception  SAMLException  Raised if a profile implementation cannot be
-     *      constructed from the supplied information
-     */
-    public ClubShibPOSTProfile(Collection policies, String receiver, int ttlSeconds)
-        throws SAMLException
-    {
-        super(policies, receiver, ttlSeconds);
-        return;
-        //if (!policies.contains(Constants.POLICY_INCOMMON))
-        //    throw new SAMLException(SAMLException.REQUESTER, "ClubShibPOSTProfile() policy array must include Club Shib");
-    }
-
-    /**
-     *  HS-side constructor for a ClubShibPOSTProfile object
-     *
-     * @param  policies           Set of policy URIs that the implementation
-     *      must support
-     * @param  issuer             "Official" name of issuing origin site
-     * @exception  SAMLException  Raised if a profile implementation cannot be
-     *      constructed from the supplied information
-     */
-    public ClubShibPOSTProfile(Collection policies, String issuer)
-        throws SAMLException
-    {
-        super(policies, issuer);
-        return;
-        //if (!policies.contains(Constants.POLICY_INCOMMON))
-        //    throw new SAMLException(SAMLException.RESPONDER, "ClubShibPOSTProfile() policy array must include Club Shib");
-    }
-
-    /**
-     *  Used by HS to generate a signed SAML response conforming to the POST
-     *  profile<P>
-     *
-     *  Club Shib specifies use of the RSA algorithm with RSA public keys and
-     *  X.509 certificates.
-     *
-     * @param  recipient          URL of intended consumer
-     * @param  name               Name of subject
-     * @param  nameQualifier      Federates or qualifies subject name (optional)
-     * @param  nameFormat         Format URI of name (optional)
-     * @param  subjectIP          Client address of subject (optional)
-     * @param  authMethod         URI of authentication method being asserted
-     * @param  authInstant        Date and time of authentication being asserted
-     * @param  bindings           Set of SAML authorities the relying party
-     *      may contact (optional)
-     * @param  responseKey        A secret or private key to use in response
-     *      signature or MAC
-     * @param  responseCert       One or more X.509 certificates to enclose with the
-     *      response (optional)
-     * @param  assertionKey       A secret or private key to use in assertion
-     *      signature or MAC (optional)
-     * @param  assertionCert      One or more X.509 certificates to enclose with the
-     *      assertion (optional)
-     * @return                    SAML response to send to accepting site
-     * @exception  SAMLException  Base class of exceptions that may be thrown
-     *      during processing
-     */
-    public SAMLResponse prepare(String recipient,
-                                String name,
-                                String nameQualifier,
-                                String nameFormat,
-                                String subjectIP,
-                                String authMethod,
-                                Date authInstant,
-                                Collection bindings,
-                                Key responseKey, Collection responseCerts,
-                                Key assertionKey, Collection assertionCerts
-                                )
-        throws SAMLException
-    {
-        if (responseKey == null || !(responseKey instanceof RSAPrivateKey))
-            throw new InvalidCryptoException(SAMLException.RESPONDER, "ClubShibPOSTProfile.prepare() requires the response key be an RSA private key");
-        if (assertionKey != null && !(assertionKey instanceof RSAPrivateKey))
-            throw new InvalidCryptoException(SAMLException.RESPONDER, "ClubShibPOSTProfile.prepare() requires the assertion key be an RSA private key");
-
-        return super.prepare(
-            recipient,
-            name,
-            nameQualifier,
-            nameFormat,
-            subjectIP,
-            authMethod,
-            authInstant,
-            bindings,
-            responseKey,
-            responseCerts,
-            assertionKey,
-            assertionCerts);
-    }
-
-    /**
-     *  Club Shib signature verification implements additional checks for the
-     *  RSA and SHA-1 algorithms.
-     *
-     * @param  obj         The object containing the signature
-     * @param  signerName  The name of the signer
-     * @param  ks          A keystore containing trusted root certificates
-     * @param  knownKey    An explicit key to use if a certificate cannot be
-     *      found
-     *
-     * @throws SAMLException    Thrown if the signature cannot be verified
-     */
-    protected void verifySignature(SAMLSignedObject obj, String signerName, KeyStore ks, Key knownKey)
-        throws SAMLException
-    {
-        super.verifySignature(obj, signerName, ks, knownKey);
-        if (!obj.getSignatureAlgorithm().equals(XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1))
-            throw new TrustException(SAMLException.RESPONDER, "ClubShibPOSTProfile.verifySignature() requires the RSA-SHA1 signature algorithm");
-    }
-}
-
index 9d504c3..a061c1b 100644 (file)
@@ -1,38 +1,48 @@
 /*
- * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation for Advanced Internet Development, Inc.
- * All rights reserved
+ * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation
+ * for Advanced Internet Development, Inc. All rights reserved
  * 
  * 
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
  * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following
- * disclaimer.
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
  * 
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided with the distribution, if any, must include the
- * following acknowledgment: "This product includes software developed by the University Corporation for Advanced
- * Internet Development <http://www.ucaid.edu> Internet2 Project. Alternately, this acknowledegement may appear in the
- * software itself, if and wherever such third-party acknowledgments normally appear.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution, if any, must include
+ * the following acknowledgment: "This product includes software developed by
+ * the University Corporation for Advanced Internet Development
+ * <http://www.ucaid.edu> Internet2 Project. Alternately, this acknowledegement
+ * may appear in the software itself, if and wherever such third-party
+ * acknowledgments normally appear.
  * 
- * Neither the name of Shibboleth nor the names of its contributors, nor Internet2, nor the University Corporation for
- * Advanced Internet Development, Inc., nor UCAID may be used to endorse or promote products derived from this software
- * without specific prior written permission. For written permission, please contact shibboleth@shibboleth.org
+ * Neither the name of Shibboleth nor the names of its contributors, nor
+ * Internet2, nor the University Corporation for Advanced Internet Development,
+ * Inc., nor UCAID may be used to endorse or promote products derived from this
+ * software without specific prior written permission. For written permission,
+ * please contact shibboleth@shibboleth.org
  * 
- * Products derived from this software may not be called Shibboleth, Internet2, UCAID, or the University Corporation
- * for Advanced Internet Development, nor may Shibboleth appear in their name, without prior written permission of the
+ * Products derived from this software may not be called Shibboleth, Internet2,
+ * UCAID, or the University Corporation for Advanced Internet Development, nor
+ * may Shibboleth appear in their name, without prior written permission of the
  * University Corporation for Advanced Internet Development.
  * 
  * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND WITH ALL FAULTS. ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK OF SATISFACTORY QUALITY, PERFORMANCE,
- * ACCURACY, AND EFFORT IS WITH LICENSEE. IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK
+ * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY
+ * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 package edu.internet2.middleware.shibboleth.common;
@@ -40,6 +50,8 @@ package edu.internet2.middleware.shibboleth.common;
 import java.security.Key;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
+import java.security.interfaces.DSAPrivateKey;
+import java.security.interfaces.RSAPrivateKey;
 
 /**
  * @author Walter Hoehn
@@ -47,14 +59,20 @@ import java.security.cert.X509Certificate;
  */
 public class Credential {
 
-       public static int X509 = 0;
+       public static int UNKNOWN = 0;
+       public static int RSA = 1;
+       public static int DSA = 2;
 
-       private int type;
+       private int type = 0;
        private Key key;
        private X509Certificate[] certs;
 
        public Credential(X509Certificate[] certChain, PrivateKey key) {
-               type = X509;
+               if (key instanceof RSAPrivateKey) {
+                       type = RSA;
+               } else if (key instanceof DSAPrivateKey) {
+                       type = DSA;
+               }
                certs = certChain;
                this.key = key;
        }
@@ -73,7 +91,7 @@ public class Credential {
                }
                return null;
        }
-       
+
        public boolean hasX509Certificate() {
                if (certs == null || certs.length == 0) {
                        return false;
index 7c797fa..00ce930 100755 (executable)
@@ -128,23 +128,11 @@ public class ShibPOSTProfile {
                this.ttlSeconds = ttlSeconds;
                this.policies.addAll(policies);
        }
-
        /**
-        * HS-side constructor for a ShibPOSTProfile object
-        * 
-        * @param policies
-        *            Set of policy URIs that the implementation must support
-        * @param issuer
-        *            "Official" name of issuing origin site
-        * @exception SAMLException
-        *                Raised if a profile implementation cannot be constructed
-        *                from the supplied information
+        * HS-side constructor for a ShibPOSTProfile object.
+        *  
         */
-       public ShibPOSTProfile(Collection policies, String issuer) throws SAMLException {
-               if (policies == null || policies.size() == 0 || issuer == null || issuer.length() == 0)
-                       throw new SAMLException(SAMLException.REQUESTER, "ShibPOSTProfile() found a null or invalid argument");
-               this.issuer = issuer;
-               this.policies.addAll(policies);
+       public ShibPOSTProfile() {
        }
 
        /**
@@ -293,7 +281,9 @@ public class ShibPOSTProfile {
         * <P>
         * 
         * @param recipient
-        *            URL of intended consumer
+        *            URL of the assertion consumer
+        * @param relyingParty
+        *            the intended recipient of the response
         * @param nameId
         *            Name Identifier for the response
         * @param subjectIP
@@ -317,6 +307,7 @@ public class ShibPOSTProfile {
         */
        public SAMLResponse prepare(
                String recipient,
+               RelyingParty relyingParty,
                SAMLNameIdentifier nameId,
                String subjectIP,
                String authMethod,
@@ -326,32 +317,62 @@ public class ShibPOSTProfile {
                Credential assertionCredential)
                throws SAMLException {
 
-               //TODO This typing is only a strawman... will definitely need to revist as
-               // we support additional types
-               if ((responseCredential != null && responseCredential.getCredentialType() != Credential.X509)
-                       || (assertionCredential != null && assertionCredential.getCredentialType() != Credential.X509)) {
-
-               }
-
-               if (responseCredential == null || responseCredential.getPrivateKey() == null)
+               if (responseCredential == null || responseCredential.getPrivateKey() == null) {
                        throw new InvalidCryptoException(
                                SAMLException.RESPONDER,
                                "ShibPOSTProfile.prepare() requires a response key.");
+               }
+               
+               String responseAlgorithm;
+               if (responseCredential.getCredentialType() == Credential.RSA) {
+                       responseAlgorithm = XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1;
+               } else if (responseCredential.getCredentialType() == Credential.DSA) {
+                       responseAlgorithm = XMLSignature.ALGO_ID_SIGNATURE_DSA;
+               } else {
+                       throw new InvalidCryptoException(
+                               SAMLException.RESPONDER,
+                               "ShibPOSTProfile.prepare() currently only supports signing with RSA and DSA keys.");
+               }
 
                Document doc = org.opensaml.XML.parserPool.newDocument();
 
+               ArrayList audiences = new ArrayList();
+               audiences.add(relyingParty.getProviderId());
+               audiences.add(relyingParty.getName());
+
                SAMLResponse r =
-                       SAMLPOSTProfile.prepare(recipient, issuer, policies, nameId, subjectIP, authMethod, authInstant, bindings);
+                       SAMLPOSTProfile.prepare(
+                               recipient,
+                               relyingParty.getConfigProperty("edu.internet2.middleware.shibboleth.hs.HandleServlet.issuer"),
+                               audiences,
+                               nameId,
+                               subjectIP,
+                               authMethod,
+                               authInstant,
+                               bindings);
                r.toDOM(doc);
 
-               if (assertionCredential != null & assertionCredential.getPrivateKey() != null)
+               if (assertionCredential != null & assertionCredential.getPrivateKey() != null) {
+
+                       String assertionAlgorithm;
+                       if (assertionCredential.getCredentialType() == Credential.RSA) {
+                               assertionAlgorithm = XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1;
+                       } else if (assertionCredential.getCredentialType() == Credential.DSA) {
+                               assertionAlgorithm = XMLSignature.ALGO_ID_SIGNATURE_DSA;
+                       } else {
+                               throw new InvalidCryptoException(
+                                       SAMLException.RESPONDER,
+                                       "ShibPOSTProfile.prepare() currently only supports signing with RSA and DSA keys.");
+                       }
+
                        ((SAMLAssertion) r.getAssertions().next()).sign(
-                               XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1,
+                               assertionAlgorithm,
                                assertionCredential.getPrivateKey(),
                                Arrays.asList(assertionCredential.getX509CertificateChain()));
+               }
 
                r.sign(
-                       XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1,
+                       responseAlgorithm,
                        responseCredential.getPrivateKey(),
                        Arrays.asList(responseCredential.getX509CertificateChain()));
 
diff --git a/src/edu/internet2/middleware/shibboleth/common/ShibPOSTProfileFactory.java b/src/edu/internet2/middleware/shibboleth/common/ShibPOSTProfileFactory.java
deleted file mode 100755 (executable)
index df6142f..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/* 
- * The Shibboleth License, Version 1. 
- * Copyright (c) 2002 
- * University Corporation for Advanced Internet Development, Inc. 
- * All rights reserved
- * 
- * 
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this 
- * list of conditions and the following disclaimer.
- * 
- * Redistributions in binary form must reproduce the above copyright notice, 
- * this list of conditions and the following disclaimer in the documentation 
- * and/or other materials provided with the distribution, if any, must include 
- * the following acknowledgment: "This product includes software developed by 
- * the University Corporation for Advanced Internet Development 
- * <http://www.ucaid.edu>Internet2 Project. Alternately, this acknowledegement 
- * may appear in the software itself, if and wherever such third-party 
- * acknowledgments normally appear.
- * 
- * Neither the name of Shibboleth nor the names of its contributors, nor 
- * Internet2, nor the University Corporation for Advanced Internet Development, 
- * Inc., nor UCAID may be used to endorse or promote products derived from this 
- * software without specific prior written permission. For written permission, 
- * please contact shibboleth@shibboleth.org
- * 
- * Products derived from this software may not be called Shibboleth, Internet2, 
- * UCAID, or the University Corporation for Advanced Internet Development, nor 
- * may Shibboleth appear in their name, without prior written permission of the 
- * University Corporation for Advanced Internet Development.
- * 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK 
- * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. 
- * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY 
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, 
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.internet2.middleware.shibboleth.common;
-
-import java.util.Collection;
-
-import org.opensaml.SAMLException;
-
-/**
- *  Used by Shibboleth HS/SHIRE to locate a Shibboleth POST profile
- *  implementation
- *
- * @author     Scott Cantor
- * @created    April 10, 2002
- */
-public class ShibPOSTProfileFactory
-{
-    /**
-     *  Gets a compatible SHIRE-side profile implementation for the specified
-     *  policies
-     *
-     * @param  policies           Set of policy URIs that the implementation
-     *      must support
-     * @param  receiver           URL of SHIRE
-     * @param  ttlSeconds         Length of time in seconds allowed to elapse
-     *      from issuance of SAML response
-     * @return                    A compatible profile implementation or null if
-     *      one cannot be found
-     * @exception  SAMLException  Raised if a profile implementation cannot be
-     *      constructed from the supplied information
-     */
-    public static ShibPOSTProfile getInstance(Collection policies, String receiver, int ttlSeconds)
-        throws SAMLException
-    {
-        return new ClubShibPOSTProfile(policies, receiver, ttlSeconds);
-    }
-
-    /**
-     *  Gets a compatible HS-side profile implementation for the specified
-     *  policies
-     *
-     * @param  policies           Set of policy URIs that the implementation
-     *      must support
-     * @param  issuer             "Official" name of issuing origin site
-     * @return                    A compatible profile implementation or null if
-     *      one cannot be found
-     * @exception  SAMLException  Raised if a profile implementation cannot be
-     *      constructed from the supplied information
-     */
-    public static ShibPOSTProfile getInstance(Collection policies, String issuer)
-        throws SAMLException
-    {
-        return new ClubShibPOSTProfile(policies, issuer);
-    }
-}
-