Source for gnu.javax.crypto.keyring.IPrivateKeyring

   1: /* IPrivateKeyring.java --
   2:    Copyright (C) 2003, 2006 Free Software Foundation, Inc.
   3: 
   4: This file is a part of GNU Classpath.
   5: 
   6: GNU Classpath is free software; you can redistribute it and/or modify
   7: it under the terms of the GNU General Public License as published by
   8: the Free Software Foundation; either version 2 of the License, or (at
   9: your option) any later version.
  10: 
  11: GNU Classpath is distributed in the hope that it will be useful, but
  12: WITHOUT ANY WARRANTY; without even the implied warranty of
  13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14: General Public License for more details.
  15: 
  16: You should have received a copy of the GNU General Public License
  17: along with GNU Classpath; if not, write to the Free Software
  18: Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
  19: USA
  20: 
  21: Linking this library statically or dynamically with other modules is
  22: making a combined work based on this library.  Thus, the terms and
  23: conditions of the GNU General Public License cover the whole
  24: combination.
  25: 
  26: As a special exception, the copyright holders of this library give you
  27: permission to link this library with independent modules to produce an
  28: executable, regardless of the license terms of these independent
  29: modules, and to copy and distribute the resulting executable under
  30: terms of your choice, provided that you also meet, for each linked
  31: independent module, the terms and conditions of the license of that
  32: module.  An independent module is a module which is not derived from
  33: or based on this library.  If you modify this library, you may extend
  34: this exception to your version of the library, but you are not
  35: obligated to do so.  If you do not wish to do so, delete this
  36: exception statement from your version.  */
  37: 
  38: 
  39: package gnu.javax.crypto.keyring;
  40: 
  41: import java.security.Key;
  42: import java.security.PublicKey;
  43: import java.security.UnrecoverableKeyException;
  44: import java.security.cert.Certificate;
  45: 
  46: /**
  47:  * An interface to private, or "personal", keyrings, which contain private
  48:  * credentials. The contract is that each such entry is known by a unique
  49:  * <i>alias</i>.
  50:  * <p>
  51:  * What about public keys? and certificate-path?
  52:  */
  53: public interface IPrivateKeyring
  54:     extends IKeyring
  55: {
  56:   /**
  57:    * Tests if this keyring contains a private key entry with the given
  58:    * <code>alias</code>.
  59:    *
  60:    * @param alias The alias to check.
  61:    * @return <code>true</code> if this keyring contains a private key with the
  62:    *         given <code>alias</code>; <code>false</code> otherwise.
  63:    */
  64:   boolean containsPrivateKey(String alias);
  65: 
  66:   /**
  67:    * Returns the private key with the given <code>alias</code>.
  68:    *
  69:    * @param alias The alias of the private key to find.
  70:    * @param password The password of the private key.
  71:    * @return The private, or secret, key if one is found; <code>null</code> if
  72:    *         none were found.
  73:    * @throws UnrecoverableKeyException If the private key could not be
  74:    *           recovered, possibly due to a bad password.
  75:    */
  76:   Key getPrivateKey(String alias, char[] password)
  77:       throws UnrecoverableKeyException;
  78: 
  79:   /**
  80:    * Adds a private key to this keyring.
  81:    *
  82:    * @param alias The alias of the private key.
  83:    * @param key The private key.
  84:    * @param password The password used to protect this private key.
  85:    */
  86:   void putPrivateKey(String alias, Key key, char[] password);
  87: 
  88:   /**
  89:    * Checks if this keyring contains a public key with the given
  90:    * <code>alias</code>.
  91:    *
  92:    * @param alias The alias to test.
  93:    * @return <code>true</code> if this keyring contains a public key entry
  94:    *         with the given <code>alias</code>; <code>false</code>
  95:    *         otherwise.
  96:    */
  97:   boolean containsPublicKey(String alias);
  98: 
  99:   /**
 100:    * Returns the public key with the given <code>alias</code>, or
 101:    * <code>null</code> if there is no such entry.
 102:    *
 103:    * @param alias The alias of the public key to find.
 104:    * @return The public key; or <code>null</code> if none were found.
 105:    */
 106:   PublicKey getPublicKey(String alias);
 107: 
 108:   /**
 109:    * Sets a public key entry.
 110:    *
 111:    * @param alias The alias for this public key.
 112:    * @param key The public key.
 113:    */
 114:   void putPublicKey(String alias, PublicKey key);
 115: 
 116:   /**
 117:    * Checks if this keyring contains a certificate path with the given
 118:    * <code>alias</code>.
 119:    *
 120:    * @param alias The alias to check.
 121:    * @return <code>true</code> if this keyring contains a certificate path
 122:    *         with the given <code>alias</code>; <code>false</code>
 123:    *         otherwise.
 124:    */
 125:   boolean containsCertPath(String alias);
 126: 
 127:   /**
 128:    * Returns the certificate path with the given <code>alias</code>, or
 129:    * <code>null</code> if there is no such entry.
 130:    *
 131:    * @param alias The alias of the certificate path to find.
 132:    * @return The certificate path for the designated <code>alias</code>; or
 133:    *         <code>null</code> if none were found.
 134:    */
 135:   Certificate[] getCertPath(String alias);
 136: 
 137:   /**
 138:    * Sets a certificate path entry.
 139:    *
 140:    * @param alias The alias for this certificate path.
 141:    * @param path The certificate path.
 142:    */
 143:   void putCertPath(String alias, Certificate[] path);
 144: }