1 /* 2 * Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javax.security.auth.x500; 27 28 import java.security.PrivateKey; 29 import java.security.cert.X509Certificate; 30 import javax.security.auth.Destroyable; 31 32 /** 33 * <p> This class represents an {@code X500PrivateCredential}. 34 * It associates an X.509 certificate, corresponding private key and the 35 * KeyStore alias used to reference that exact key pair in the KeyStore. 36 * This enables looking up the private credentials for an X.500 principal 37 * in a subject. 38 * 39 * @since 1.4 40 */ 41 public final class X500PrivateCredential implements Destroyable { 42 private X509Certificate cert; 43 private PrivateKey key; 44 private String alias; 45 46 /** 47 * Creates an X500PrivateCredential that associates an X.509 certificate, 48 * a private key and the KeyStore alias. 49 * 50 * @param cert X509Certificate 51 * @param key PrivateKey for the certificate 52 * @exception IllegalArgumentException if either {@code cert} or 53 * {@code key} is null 54 * 55 */ 56 X500PrivateCredential(X509Certificate cert, PrivateKey key)57 public X500PrivateCredential(X509Certificate cert, PrivateKey key) { 58 if (cert == null || key == null ) 59 throw new IllegalArgumentException(); 60 this.cert = cert; 61 this.key = key; 62 this.alias=null; 63 } 64 65 /** 66 * Creates an X500PrivateCredential that associates an X.509 certificate, 67 * a private key and the KeyStore alias. 68 * 69 * @param cert X509Certificate 70 * @param key PrivateKey for the certificate 71 * @param alias KeyStore alias 72 * @exception IllegalArgumentException if either {@code cert}, 73 * {@code key} or {@code alias} is null 74 * 75 */ X500PrivateCredential(X509Certificate cert, PrivateKey key, String alias)76 public X500PrivateCredential(X509Certificate cert, PrivateKey key, 77 String alias) { 78 if (cert == null || key == null|| alias == null ) 79 throw new IllegalArgumentException(); 80 this.cert = cert; 81 this.key = key; 82 this.alias=alias; 83 } 84 85 /** 86 * Returns the X.509 certificate. 87 * 88 * @return the X509Certificate 89 */ 90 getCertificate()91 public X509Certificate getCertificate() { 92 return cert; 93 } 94 95 /** 96 * Returns the PrivateKey. 97 * 98 * @return the PrivateKey 99 */ getPrivateKey()100 public PrivateKey getPrivateKey() { 101 return key; 102 } 103 104 /** 105 * Returns the KeyStore alias. 106 * 107 * @return the KeyStore alias 108 */ 109 getAlias()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 destroy()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 * 129 * @return true if X509Certificate and the PrivateKey are null 130 */ isDestroyed()131 public boolean isDestroyed() { 132 return cert == null && key == null && alias==null; 133 } 134 } 135