04cfc687dcf7dd6dc772d72f8ad5c939ec1214ef
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / ShibPOSTProfileFactory.java
1 package edu.internet2.middleware.shibboleth;
2
3 import java.security.Key;
4 import org.opensaml.SAMLException;
5 import org.opensaml.SAMLPOSTProfile;
6
7 /**
8  *  Used by Shibboleth HS/SHIRE to locate a Shibboleth POST profile
9  *  implementation
10  *
11  * @author     Scott Cantor
12  * @created    April 10, 2002
13  */
14 public class ShibPOSTProfileFactory
15 {
16     /**
17      *  Gets a compatible SHIRE-side profile implementation for the specified
18      *  policies
19      *
20      * @param  policies           Array of policy URIs that the implementation
21      *      must support
22      * @param  mapper             Interface between profile and trust base
23      * @param  receiver           URL of SHIRE
24      * @param  ttlSeconds         Length of time in seconds allowed to elapse
25      *      from issuance of SAML response
26      * @return                    A compatible profile implementation or null if
27      *      one cannot be found
28      * @exception  SAMLException  Raised if a profile implementation cannot be
29      *      constructed from the supplied information
30      */
31     public static ShibPOSTProfile getInstance(String[] policies, OriginSiteMapper mapper,
32                                               String receiver, int ttlSeconds)
33         throws SAMLException
34     {
35         // Current version only knows about Club Shib...
36         if (policies == null || policies.length != 1 || !policies[0].equals(Constants.POLICY_CLUBSHIB))
37             return null;
38
39         if (mapper == null || receiver == null || ttlSeconds <= 0)
40             return null;
41
42         return new ClubShibPOSTProfile(policies, mapper, receiver, ttlSeconds);
43     }
44
45     /**
46      *  Gets a compatible HS-side profile implementation for the specified
47      *  policies
48      *
49      * @param  policies           Array of policy URIs that the implementation
50      *      must support
51      * @param  issuer             "Official" name of issuing origin site
52      * @return                    A compatible profile implementation or null if
53      *      one cannot be found
54      * @exception  SAMLException  Raised if a profile implementation cannot be
55      *      constructed from the supplied information
56      */
57     public static ShibPOSTProfile getInstance(String[] policies, String issuer)
58         throws SAMLException
59     {
60         // Current version only knows about Club Shib...
61         if (policies == null || policies.length != 1 || !policies[0].equals(Constants.POLICY_CLUBSHIB))
62             return null;
63
64         if (issuer == null || issuer.length() == 0)
65             return null;
66
67         return new ClubShibPOSTProfile(policies, issuer);
68     }
69 }
70