View Javadoc

1   /*
2    * The MIT License
3    *
4    * Original work sponsored and donated by National Board of e-Health (NSI), Denmark (http://www.nsi.dk)
5    *
6    * Copyright (C) 2011 National Board of e-Health (NSI), Denmark (http://www.nsi.dk)
7    *
8    * Permission is hereby granted, free of charge, to any person obtaining a copy of
9    * this software and associated documentation files (the "Software"), to deal in
10   * the Software without restriction, including without limitation the rights to
11   * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
12   * of the Software, and to permit persons to whom the Software is furnished to do
13   * so, subject to the following conditions:
14   *
15   * The above copyright notice and this permission notice shall be included in all
16   * copies or substantial portions of the Software.
17   *
18   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24   * SOFTWARE.
25   *
26   * $HeadURL: https://svn.softwareborsen.dk/sosi/trunk/modules/seal/src/main/java/dk/sosi/seal/pki/OCESTestCertificationAuthority.java $
27   * $Id: OCESTestCertificationAuthority.java 8697 2011-09-02 10:33:55Z chg@lakeside.dk $
28   */
29  package dk.sosi.seal.pki;
30  
31  import dk.sosi.seal.pki.impl.HashMapCertificateCache;
32  import dk.sosi.seal.pki.impl.PropertiesSOSIConfiguration;
33  import dk.sosi.seal.pki.impl.federationcert.FederationCertificateStoreAdapter;
34  import dk.sosi.seal.xml.CertificateParser;
35  import dk.sosi.seal.xml.XmlUtil;
36  
37  import java.security.cert.X509Certificate;
38  import java.util.Properties;
39  
40  /**
41   * Implementation of CertificationAuthority representing the OCES2 test CA.
42   * 
43   * @author ads@lakeside.dk
44   * @author $LastChangedBy: chg@lakeside.dk $
45   * @version $Revision: 8697 $
46   * @since 2.0
47   */
48  public class OCESTestCertificationAuthority extends AbstractOCESCertificationAuthority {
49  
50      private static final String OCES1_TEST_ROOT_CERTIFICATE_BASE_64 =
51          "MIIEXTCCA8agAwIBAgIEQDYX/DANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJE" +
52          "SzEMMAoGA1UEChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENB" +
53          "IElJMB4XDTA0MDIyMDEzNTE0OVoXDTM3MDYyMDE0MjE0OVowPzELMAkGA1UEBhMC" +
54          "REsxDDAKBgNVBAoTA1REQzEiMCAGA1UEAxMZVERDIE9DRVMgU3lzdGVtdGVzdCBD" +
55          "QSBJSTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArawANI56sljDsnosDU+M" +
56          "p4r+RKFys9c5qy8jWZyA+7PYFs4+IZcFxnbNuHi8aAcbSFOUJF0PGpNgPEtNc+XA" +
57          "K7p16iawNTYpMkHm2VoInNfwWEj/wGmtb4rKDT2a7auGk76q+Xdqnno4PRO8e7AK" +
58          "EHw7pN3kiHmZCI48PTRpRx8CAwEAAaOCAmQwggJgMA8GA1UdEwEB/wQFMAMBAf8w" +
59          "DgYDVR0PAQH/BAQDAgEGMIIBAwYDVR0gBIH7MIH4MIH1BgkpAQEBAQEBAQEwgecw" +
60          "LwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5kay9yZXBvc2l0b3J5" +
61          "MIGzBggrBgEFBQcCAjCBpjAKFgNUREMwAwIBARqBl1REQyBUZXN0IENlcnRpZmlr" +
62          "YXRlciBmcmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMS4xLjEuMS4x" +
63          "LjEuMS4xLjEuIFREQyBUZXN0IENlcnRpZmljYXRlcyBmcm9tIHRoaXMgQ0EgYXJl" +
64          "IGlzc3VlZCB1bmRlciBPSUQgMS4xLjEuMS4xLjEuMS4xLjEuMS4wEQYJYIZIAYb4" +
65          "QgEBBAQDAgAHMIGWBgNVHR8EgY4wgYswVqBUoFKkUDBOMQswCQYDVQQGEwJESzEM" +
66          "MAoGA1UEChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENBIElJ" +
67          "MQ0wCwYDVQQDEwRDUkwxMDGgL6AthitodHRwOi8vdGVzdC5jcmwub2Nlcy5jZXJ0" +
68          "aWZpa2F0LmRrL29jZXMuY3JsMCsGA1UdEAQkMCKADzIwMDQwMjIwMTM1MTQ5WoEP" +
69          "MjAzNzA2MjAxNDIxNDlaMB8GA1UdIwQYMBaAFByYCUcaTDi5EMUEKVvx9E6Aasx+" +
70          "MB0GA1UdDgQWBBQcmAlHGkw4uRDFBClb8fROgGrMfjAdBgkqhkiG9n0HQQAEEDAO" +
71          "GwhWNi4wOjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEApyoAjiKq6WK5XaKWUpVs" +
72          "kutzohv1VcCke/3JeUVtmB+byexJMC171s4RHoqcbufcI2ASVWwu84i45MaKg/nx" +
73          "oqojMyY19/W2wbQFEdsxUCnLa9e9tlWj0xS/AaKeUhk2MBOqv+hMdc71jOqc5JN7" +
74          "T2Ba6ZRIY5uXkO3IGZ3XUsw="; 
75      
76      private static final String OCES2_TEST_IG_ROOT_CERTIFICATE_BASE_64 =
77          "MIIGRTCCBC2gAwIBAgIETHO9tTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJE" +
78          "SzESMBAGA1UEChMJVFJVU1QyNDA4MSswKQYDVQQDEyJUUlVTVDI0MDggU3lzdGVt" +
79          "dGVzdCBJWCBQcmltYXJ5IENBMB4XDTEwMDgyNDEyMTAyM1oXDTM3MTIyNDEyNDAy" +
80          "M1owTjELMAkGA1UEBhMCREsxEjAQBgNVBAoTCVRSVVNUMjQwODErMCkGA1UEAxMi" +
81          "VFJVU1QyNDA4IFN5c3RlbXRlc3QgSVggUHJpbWFyeSBDQTCCAiIwDQYJKoZIhvcN" +
82          "AQEBBQADggIPADCCAgoCggIBAMgd7UdslIik/4S2EF+i37FaxHOD+tvtJQgeMAei" +
83          "0kOBFtCuu+tz6uJGWOVDRvh6SyTncdZGAlRKNZAK+ZULUnU1pdB2fbV9rhLF4q0M" +
84          "BGSgjUd+DpQhUmLi2QLaZvfmmTz4melVewCtYjqCRzPULHetHQKCQIduIhMfR0EE" +
85          "e38Ooy6PwLEUrYbKyq6rd0Xf2jcSV0srM3INfEULmeWld/kYPI8SH6M/XXiyvhFv" +
86          "ymAYY3v9XlAWUtTSnJmqs1yU6xpQG1VwRsHQSDvyWmPluGKwELCLWKXK2sNco6Yy" +
87          "RwNGcnhsjM2kPZ8nhgDJNVFFdd9AjD/qAeex54n+sJHMH/WtmOz9HWeQYrbGO+lW" +
88          "W/ZXss8Z+KlMzje3pWgxYIhK8OZoRvoUKoLQ1JJH/KjgwcZxuxKzGm7uwoLGHUjg" +
89          "Yr/1TzJT+sddLTK9TNL2SOwATbg+ueZ7kqIt7Uxih9203b4Y1x1rtIxa7zxtZ4Fc" +
90          "MvOc8rVfEnanBdhC1nUCThPivf6HrsybD3FG/22FQdq/7ZmcOB2avn4Z1F983Wlc" +
91          "o6etLHsHfqDy771bMO83aLp/bHBHqOUG7bnNaSegmK5blfEBmYkzAXFaxQnr02LK" +
92          "7v54dCO8lzBya/06erErdTywSRGLN/+We/h2NVGDokv6remDdAC0XFIs4WrTSvYg" +
93          "oiP/AgMBAAGjggEpMIIBJTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB" +
94          "BjARBgNVHSAECjAIMAYGBFUdIAAwga4GA1UdHwSBpjCBozA6oDigNoY0aHR0cDov" +
95          "L2NybC5zeXN0ZW10ZXN0OS50cnVzdDI0MDguY29tL3N5c3RlbXRlc3Q5LmNybDBl" +
96          "oGOgYaRfMF0xCzAJBgNVBAYTAkRLMRIwEAYDVQQKEwlUUlVTVDI0MDgxKzApBgNV" +
97          "BAMTIlRSVVNUMjQwOCBTeXN0ZW10ZXN0IElYIFByaW1hcnkgQ0ExDTALBgNVBAMT" +
98          "BENSTDEwHwYDVR0jBBgwFoAUAMhRPjg1v23MAbpjBIk5L7AlcdowHQYDVR0OBBYE" +
99          "FADIUT44Nb9tzAG6YwSJOS+wJXHaMA0GCSqGSIb3DQEBCwUAA4ICAQAk/ghXxPKM" +
100         "5E/VwViE0UtJQKBzsaCT33Jzqx081Cmt8mfQTEhpVhiE3jMkYYj5kaN0qqHfuvip" +
101         "mcpjs4qs38lpZGR13XeuHKY5QLEKo7L14DxhmJi3nfBIUMdcplQpvGZFr9zmyWZ3" +
102         "DUXNdLfKLwXXZHJB5+N3TrOk/11yksibNLEDLpS/tCjYKZI3VKL/6QDdFbR1JjCy" +
103         "t6hUeCG4Do2SIggst3oiKRcuPYkX6kukm1V5+vY8i0zRd48jKh3oPQFyi5StD1+o" +
104         "uHYLHDr5UgueC77xJ3ZcVpyToxJjc2mxqovB5r2Zrfs9JdT/iLQDs5kvpkOuZL8F" +
105         "4yPj3PgNvz1WZkQq/QwlO6EdwoAiLTzWxlnTSQ2XGYEjREkOglrLuRoBWz89ZgMC" +
106         "xrMfPWbCRyTC6i5MRNmdRKUtqhe/KO2oSuO1RioIO0sTe2tnkiEmIN7kXD92R1KL" +
107         "JCZB2NFaWOv+yU1GvpER2gXrlvq/yoFuU8g+72BT6UiaCsmr7L1iK7poJKDClS+A" +
108         "t+5/+gvQRq9BjGtR/q4d3B8xL8Mg58rZbf6FHas6cb0c3e9iVtqSQviXO6VYPQch" +
109         "X8rjBrXViDvlKXa3fwu6pzhJhJQnsM0jgSV7wEQfoRoTvkXPxwik1xyroV3qKIhx" +
110         "y3pgq7fDfTxMgVDvMIhjU0+ZQ/DP4ska2g==";
111 
112     private static final String OCES2_TEST_PP_ROOT_CERTIFICATE_BASE_64 =
113         "MIIGSDCCBDCgAwIBAgIES+pulDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJE" +
114         "SzESMBAGA1UEChMJVFJVU1QyNDA4MSwwKgYDVQQDEyNUUlVTVDI0MDggU3lzdGVt" +
115         "dGVzdCBWSUkgUHJpbWFyeSBDQTAeFw0xMDA1MTIwODMyMTRaFw0zNzAxMTIwOTAy" +
116         "MTRaME8xCzAJBgNVBAYTAkRLMRIwEAYDVQQKEwlUUlVTVDI0MDgxLDAqBgNVBAMT" +
117         "I1RSVVNUMjQwOCBTeXN0ZW10ZXN0IFZJSSBQcmltYXJ5IENBMIICIjANBgkqhkiG" +
118         "9w0BAQEFAAOCAg8AMIICCgKCAgEApuuMpdHu/lXhQ+9TyecthOxrg5hPgxlK1rpj" +
119         "syBNDEmOEpmOlK8ghyZ7MnSF3ffsiY+0jA51p+AQfYYuarGgUQVO+VM6E3VUdDpg" +
120         "WEksetCYY8L7UrpyDeYx9oywT7E+YXH0vCoug5F9vBPnky7PlfVNaXPfgjh1+66m" +
121         "lUD9sV3fiTjDL12GkwOLt35S5BkcqAEYc37HT69N88QugxtaRl8eFBRumj1Mw0LB" +
122         "xCwl21GdVY4EjqH1Us7YtRMRJ2nEFTCRWHzm2ryf7BGd80YmtJeL6RoiidwlIgzv" +
123         "hoFhv4XdLHwzaQbdb9s141q2s9KDPZCGcgIgeXZdqY1Vz7UBCMiBDG7q2S2ni7wp" +
124         "UMBye+iYVkvJD32srGCzpWqG7203cLyZCjq2oWuLkL807/Sk4sYleMA4YFqsazIf" +
125         "V+M0OVrJCCCkPysS10n/+ioleM0hnoxQiupujIGPcJMA8anqWueGIaKNZFA/m1IK" +
126         "wnn0CTkEm2aGTTEwpzb0+dCATlLyv6Ss3w+D7pqWCXsAVAZmD4pncX+/ASRZQd3o" +
127         "SvNQxUQr8EoxEULxSae0CPRyGwQwswGpqmGm8kNPHjIC5ks2mzHZAMyTz3zoU3h/" +
128         "QW2T2U2+pZjUeMjYhyrReWRbOIBCizoOaoaNcSnPGUEohGUyLPTbZLpWsm3vjbyk" +
129         "7yvPqoUCAwEAAaOCASowggEmMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD" +
130         "AgEGMBEGA1UdIAQKMAgwBgYEVR0gADCBrwYDVR0fBIGnMIGkMDqgOKA2hjRodHRw" +
131         "Oi8vY3JsLnN5c3RlbXRlc3Q3LnRydXN0MjQwOC5jb20vc3lzdGVtdGVzdDcuY3Js" +
132         "MGagZKBipGAwXjELMAkGA1UEBhMCREsxEjAQBgNVBAoTCVRSVVNUMjQwODEsMCoG" +
133         "A1UEAxMjVFJVU1QyNDA4IFN5c3RlbXRlc3QgVklJIFByaW1hcnkgQ0ExDTALBgNV" +
134         "BAMTBENSTDEwHwYDVR0jBBgwFoAUI7pMMZDh08zTG7MbWrbIRc3Tg5cwHQYDVR0O" +
135         "BBYEFCO6TDGQ4dPM0xuzG1q2yEXN04OXMA0GCSqGSIb3DQEBCwUAA4ICAQCRJ9TM" +
136         "7sISJBHQwN8xdey4rxA0qT7NZdKICcIxyIC82HIOGAouKb3oHjIoMgxIUhA3xbU3" +
137         "Putr4+Smnc1Ldrw8AofLGlFYG2ypg3cpF9pdHrVdh8QiERozLwfNPDgVeCAnjKPN" +
138         "t8mu0FWBS32tiVM5DEOUwDpoDDRF27Ku9qTFH4IYg90wLHfLi+nqc2HwVBUgDt3t" +
139         "XU6zK4pzM0CpbrbOXPJOYHMvaw/4Em2r0PZD+QOagcecxPMWI65t2h/USbyO/ah3" +
140         "VKnBWDkPsMKjj5jEbBVRnGZdv5rcJb0cHqQ802eztziA4HTbSzBE4oRaVCrhXg/g" +
141         "6Jj8/tZlgxRI0JGgAX2dvWQyP4xhbxLNCVXPdvRV0g0ehKvhom1FGjIz975/DMav" +
142         "kybh0gzygq4sY9Fykl4oT4rDkDvZLYIxS4u1BrUJJJaDzHCeXmZqOhx8She+Fj9Y" +
143         "wVVRGfxT4FL0Qd3WAtaCVyhSQ6SkZgrPvzAmxOUruI6XhEhYGlP5O8WFETiATxuZ" +
144         "AJNuKMJtibfRhMNsQ+TVv/ZPr5Swe+3DIQtmt1MIlGlTn4k40z4s6gDGKiFwAYXj" +
145         "d/kID32R/hJPE41o9+3nd8aHZhBy2lF0jKAmr5a6Lbhg2O7zjGq7mQ3MceNeebuW" +
146         "XD44AxIinryzhqnEWI+BxdlFaia3U7o2+HYdHw==";
147 
148     static final X509Certificate OCES_1_TEST_ROOT_CERTIFICATE = CertificateParser.asCertificate(XmlUtil.fromBase64(OCES1_TEST_ROOT_CERTIFICATE_BASE_64));
149 
150     static final X509Certificate OCES_2_TEST_IG_ROOT_CERTIFICATE = CertificateParser.asCertificate(XmlUtil.fromBase64(OCES2_TEST_IG_ROOT_CERTIFICATE_BASE_64));
151 
152     static final X509Certificate OCES_2_TEST_PP_ROOT_CERTIFICATE = CertificateParser.asCertificate(XmlUtil.fromBase64(OCES2_TEST_PP_ROOT_CERTIFICATE_BASE_64));
153 
154     /**
155      * Constructor for the <code>OCESTestCertificationAuthority</code> class.
156      * 
157      * @param properties
158      *            The initialization <code>Properties</code> of the system
159      */
160     @Deprecated
161     public OCESTestCertificationAuthority(Properties properties, CertificateStatusChecker certificateStatusChecker, IntermediateCertificateCache intermediateCertificateCache) {
162         // This is not nice at all! To be removed in next Seal release
163         this(PropertiesSOSIConfiguration.createWithDefaultOcesTestProperties(properties), certificateStatusChecker, intermediateCertificateCache,
164              new FederationCertificateStoreAdapter(PropertiesSOSIConfiguration.createWithDefaultOcesTestProperties(properties), new HashMapCertificateCache()));
165     }
166 
167     public OCESTestCertificationAuthority(SOSIConfiguration configuration, CertificateStatusChecker certificateStatusChecker, IntermediateCertificateCache intermediateCertificateCache, FederationCertificateResolver federationCertificateResolver) {
168         super(configuration, certificateStatusChecker, intermediateCertificateCache, federationCertificateResolver);
169     }
170 
171     protected X509Certificate getOCES1RootCertificate() {
172         return OCES_1_TEST_ROOT_CERTIFICATE;
173     }
174 
175     protected X509Certificate[] getOCES2RootCertificates() {
176         return new X509Certificate[] {OCES_2_TEST_IG_ROOT_CERTIFICATE, OCES_2_TEST_PP_ROOT_CERTIFICATE};
177     }
178 
179     protected String getCertificationAuthorityName() {
180         return "OCES Test";
181     }
182 
183 }