07a00909c4929774ecd4101db8d3a819f0d24aaf
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / common / Credential.java
1 /*
2  * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package edu.internet2.middleware.shibboleth.common;
18
19 import java.security.Key;
20 import java.security.PrivateKey;
21 import java.security.cert.X509Certificate;
22 import java.security.interfaces.DSAPrivateKey;
23 import java.security.interfaces.RSAPrivateKey;
24
25 /**
26  * Used to prove identity or integrity of transmitted messages.
27  * 
28  * @author Walter Hoehn
29  */
30 public class Credential {
31
32         public static int UNKNOWN = 0;
33         public static int RSA = 1;
34         public static int DSA = 2;
35
36         private int type = UNKNOWN;
37         private Key key;
38         private X509Certificate[] certs;
39
40         /**
41          * Creates a X509 credential.
42          * 
43          * @param certChain
44          *            certificate chain corresponding to the private key
45          * @param key
46          *            the RSA or DSA private key
47          */
48         public Credential(X509Certificate[] certChain, PrivateKey key) {
49
50                 if (key instanceof RSAPrivateKey) {
51                         type = RSA;
52                 } else if (key instanceof DSAPrivateKey) {
53                         type = DSA;
54                 }
55                 certs = certChain;
56                 this.key = key;
57         }
58
59         public int getCredentialType() {
60
61                 return type;
62         }
63
64         public String getKeyAlgorithm() {
65
66                 return key.getAlgorithm();
67         }
68
69         public PrivateKey getPrivateKey() {
70
71                 if (key instanceof PrivateKey) { return (PrivateKey) key; }
72                 return null;
73         }
74
75         public boolean hasX509Certificate() {
76
77                 if (certs == null || certs.length == 0) { return false; }
78                 return true;
79         }
80
81         public X509Certificate getX509Certificate() {
82
83                 return certs[0];
84         }
85
86         public X509Certificate[] getX509CertificateChain() {
87
88                 return certs;
89         }
90 }