001 /*
002 * Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package javax.security.auth.x500;
027
028 import java.security.PrivateKey;
029 import java.security.cert.X509Certificate;
030 import javax.security.auth.Destroyable;
031
032 /**
033 * <p> This class represents an <code>X500PrivateCredential</code>.
034 * It associates an X.509 certificate, corresponding private key and the
035 * KeyStore alias used to reference that exact key pair in the KeyStore.
036 * This enables looking up the private credentials for an X.500 principal
037 * in a subject.
038 *
039 * @version 1.15, 05/05/07
040 */
041 public final class X500PrivateCredential implements Destroyable {
042 private X509Certificate cert;
043 private PrivateKey key;
044 private String alias;
045
046 /**
047 * Creates an X500PrivateCredential that associates an X.509 certificate,
048 * a private key and the KeyStore alias.
049 * <p>
050 * @param cert X509Certificate
051 * @param key PrivateKey for the certificate
052 * @exception IllegalArgumentException if either <code>cert</code> or
053 * <code>key</code> is null
054 *
055 */
056
057 public X500PrivateCredential(X509Certificate cert, PrivateKey key) {
058 if (cert == null || key == null)
059 throw new IllegalArgumentException();
060 this .cert = cert;
061 this .key = key;
062 this .alias = null;
063 }
064
065 /**
066 * Creates an X500PrivateCredential that associates an X.509 certificate,
067 * a private key and the KeyStore alias.
068 * <p>
069 * @param cert X509Certificate
070 * @param key PrivateKey for the certificate
071 * @param alias KeyStore alias
072 * @exception IllegalArgumentException if either <code>cert</code>,
073 * <code>key</code> or <code>alias</code> is null
074 *
075 */
076 public X500PrivateCredential(X509Certificate cert, PrivateKey key,
077 String alias) {
078 if (cert == null || key == null || alias == null)
079 throw new IllegalArgumentException();
080 this .cert = cert;
081 this .key = key;
082 this .alias = alias;
083 }
084
085 /**
086 * Returns the X.509 certificate.
087 * <p>
088 * @return the X509Certificate
089 */
090
091 public X509Certificate getCertificate() {
092 return cert;
093 }
094
095 /**
096 * Returns the PrivateKey.
097 * <p>
098 * @return the PrivateKey
099 */
100 public PrivateKey getPrivateKey() {
101 return key;
102 }
103
104 /**
105 * Returns the KeyStore alias.
106 * <p>
107 * @return the KeyStore alias
108 */
109
110 public String getAlias() {
111 return alias;
112 }
113
114 /**
115 * Clears the references to the X.509 certificate, private key and the
116 * KeyStore alias in this object.
117 */
118
119 public void destroy() {
120 cert = null;
121 key = null;
122 alias = null;
123 }
124
125 /**
126 * Determines if the references to the X.509 certificate and private key
127 * in this object have been cleared.
128 * <p>
129 * @return true if X509Certificate and the PrivateKey are null
130
131 */
132 public boolean isDestroyed() {
133 return cert == null && key == null && alias == null;
134 }
135 }
|