core.model
Class FakeKeyStore

java.lang.Object
  extended by java.security.KeyStore
      extended by core.model.FakeKeyStore

public class FakeKeyStore
extends KeyStore

  Copyright (c) 2006 Sebastian Erdweg
  Copyright (c) 2006 Dominik Schulz
  Copyright (c) 2006 Florian Lindner
  Copyright (c) 2006 Betim Berjani
  
  This file is part of FlexiCrypt.

  FlexiCrypt is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  FlexiCrypt is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
  along with FlexiCrypt; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  

Author:
Sebastian

Nested Class Summary
 
Nested classes/interfaces inherited from class java.security.KeyStore
KeyStore.Builder, KeyStore.CallbackHandlerProtection, KeyStore.Entry, KeyStore.LoadStoreParameter, KeyStore.PasswordProtection, KeyStore.PrivateKeyEntry, KeyStore.ProtectionParameter, KeyStore.SecretKeyEntry, KeyStore.TrustedCertificateEntry
 
Method Summary
 Enumeration aliases()
          Generates a list of all the aliases in the keystore.
 void clear()
           
 boolean containsAlias(String alias)
          Determines if the keystore contains the specified alias.
 void deleteEntry(String alias)
          Deletes the entry for the specified entry.
 Certificate getCertificate(String alias)
          Gets a Certificate for the specified alias.
 String getCertificateAlias(Certificate cert)
          Determines if the keystore contains the specified certificate entry and returns the alias.
 Certificate[] getCertificateChain(String alias)
          Gets a Certificate chain for the specified alias.
 Date getCreationDate(String alias)
          Gets entry creation date for the specified alias.
 KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam)
           
static FakeKeyStore getInstance(String type)
           
static FakeKeyStore getInstance(String type, Provider provider)
           
 Key getKey(String alias, char[] password)
          Returns the key associated with given alias using the supplied password.
 Provider getProvider()
          Gets the provider that the class is from.
 String getType()
          Returns the type of the KeyStore supported
 boolean isCertificateEntry(String alias)
          Determines if the keystore contains a certificate entry for the specified alias.
 boolean isKeyEntry(String alias)
          Determines if the keystore contains a key entry for the specified alias.
 void load(InputStream stream, char[] password)
          Loads the keystore from the specified input stream and it uses the specified password to check for integrity if supplied.
 void setCertificateEntry(String alias, Certificate cert)
          Assign the certificate to the alias in the keystore.
 void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam)
           
 void setKeyEntry(String alias, byte[] key, Certificate[] chain)
          Assign the key to the alias in the keystore.
 void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain)
          Assign the key to the alias in the keystore, protecting it with the given password.
 int size()
          Returns the number of entries in the keystore.
 void store(OutputStream stream, char[] password)
          Stores the keystore in the specified output stream and it uses the specified key it keep it secure.
 
Methods inherited from class java.security.KeyStore
aliases, containsAlias, deleteEntry, entryInstanceOf, getCertificate, getCertificateAlias, getCertificateChain, getCreationDate, getDefaultType, getEntry, getInstance, getKey, getProvider, getType, isCertificateEntry, isKeyEntry, load, load, setCertificateEntry, setEntry, setKeyEntry, setKeyEntry, size, store, store
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static FakeKeyStore getInstance(String type)
                                throws KeyStoreException
Throws:
KeyStoreException

getInstance

public static FakeKeyStore getInstance(String type,
                                       Provider provider)
                                throws KeyStoreException
Throws:
KeyStoreException

clear

public void clear()

getProvider

public Provider getProvider()
Gets the provider that the class is from.

Returns:
the provider of this class

getType

public String getType()
Returns the type of the KeyStore supported

Returns:
A string with the type of KeyStore

getKey

public Key getKey(String alias,
                  char[] password)
           throws KeyStoreException,
                  NoSuchAlgorithmException,
                  UnrecoverableKeyException
Returns the key associated with given alias using the supplied password.

Parameters:
alias - an alias for the key to get
password - password to access key with
Returns:
the requested key, or null otherwise
Throws:
NoSuchAlgorithmException - if there is no algorithm for recovering the key
UnrecoverableKeyException - key cannot be reocovered (wrong password).
KeyStoreException

getCertificateChain

public Certificate[] getCertificateChain(String alias)
                                  throws KeyStoreException
Gets a Certificate chain for the specified alias.

Parameters:
alias - the alias name
Returns:
a chain of Certificates ( ordered from the user's certificate to the Certificate Authority's ) or null if the alias does not exist or there is no certificate chain for the alias ( the alias refers to a trusted certificate entry or there is no entry).
Throws:
KeyStoreException

getCertificate

public Certificate getCertificate(String alias)
                           throws KeyStoreException
Gets a Certificate for the specified alias. If there is a trusted certificate entry then that is returned. it there is a key entry with a certificate chain then the first certificate is return or else null.

Parameters:
alias - the alias name
Returns:
a Certificate or null if the alias does not exist or there is no certificate for the alias
Throws:
KeyStoreException

getCreationDate

public Date getCreationDate(String alias)
                     throws KeyStoreException
Gets entry creation date for the specified alias.

Parameters:
alias - the alias name
Returns:
the entry creation date or null
Throws:
KeyStoreException

setKeyEntry

public void setKeyEntry(String alias,
                        Key key,
                        char[] password,
                        Certificate[] chain)
                 throws KeyStoreException
Assign the key to the alias in the keystore, protecting it with the given password. It will overwrite an existing entry and if the key is a PrivateKey, also add the certificate chain representing the corresponding public key.

Parameters:
alias - the alias name
key - the key to add
password - the password to protect with
chain - the certificate chain for the corresponding public key
Throws:
KeyStoreException - if it fails

setKeyEntry

public void setKeyEntry(String alias,
                        byte[] key,
                        Certificate[] chain)
                 throws KeyStoreException
Assign the key to the alias in the keystore. It will overwrite an existing entry and if the key is a PrivateKey, also add the certificate chain representing the corresponding public key.

Parameters:
alias - the alias name
key - the key to add
chain - the certificate chain for the corresponding public key
Throws:
KeyStoreException - if it fails

getEntry

public KeyStore.Entry getEntry(String alias,
                               KeyStore.ProtectionParameter protParam)
                        throws NoSuchAlgorithmException,
                               UnrecoverableEntryException,
                               KeyStoreException
Throws:
NoSuchAlgorithmException
UnrecoverableEntryException
KeyStoreException

setEntry

public void setEntry(String alias,
                     KeyStore.Entry entry,
                     KeyStore.ProtectionParameter protParam)
              throws KeyStoreException
Throws:
KeyStoreException

setCertificateEntry

public void setCertificateEntry(String alias,
                                Certificate cert)
                         throws KeyStoreException
Assign the certificate to the alias in the keystore. It will overwrite an existing entry.

Parameters:
alias - the alias name
cert - the certificate to add
Throws:
KeyStoreException - if it fails

deleteEntry

public void deleteEntry(String alias)
                 throws KeyStoreException
Deletes the entry for the specified entry.

Parameters:
alias - the alias name
Throws:
KeyStoreException - if it fails

aliases

public Enumeration aliases()
                    throws KeyStoreException
Generates a list of all the aliases in the keystore.

Returns:
an Enumeration of the aliases
Throws:
KeyStoreException

containsAlias

public boolean containsAlias(String alias)
                      throws KeyStoreException
Determines if the keystore contains the specified alias.

Parameters:
alias - the alias name
Returns:
true if it contains the alias, false otherwise
Throws:
KeyStoreException

size

public int size()
         throws KeyStoreException
Returns the number of entries in the keystore.

Returns:
the number of keystore entries.
Throws:
KeyStoreException

isKeyEntry

public boolean isKeyEntry(String alias)
                   throws KeyStoreException
Determines if the keystore contains a key entry for the specified alias.

Parameters:
alias - the alias name
Returns:
true if it is a key entry, false otherwise
Throws:
KeyStoreException

isCertificateEntry

public boolean isCertificateEntry(String alias)
                           throws KeyStoreException
Determines if the keystore contains a certificate entry for the specified alias.

Parameters:
alias - the alias name
Returns:
true if it is a certificate entry, false otherwise
Throws:
KeyStoreException

getCertificateAlias

public String getCertificateAlias(Certificate cert)
                           throws KeyStoreException
Determines if the keystore contains the specified certificate entry and returns the alias. It checks every entry and for a key entry checks only the first certificate in the chain.

Parameters:
cert - Certificate to look for
Returns:
alias of first matching certificate, null if it does not exist.
Throws:
KeyStoreException

store

public void store(OutputStream stream,
                  char[] password)
           throws KeyStoreException,
                  IOException,
                  NoSuchAlgorithmException,
                  CertificateException
Stores the keystore in the specified output stream and it uses the specified key it keep it secure.

Parameters:
stream - the output stream to save the keystore to
password - the password to protect the keystore integrity with
Throws:
IOException - if an I/O error occurs.
NoSuchAlgorithmException - the data integrity algorithm used cannot be found.
CertificateException - if any certificates could not be stored in the output stream.
KeyStoreException

load

public void load(InputStream stream,
                 char[] password)
          throws IOException,
                 NoSuchAlgorithmException,
                 CertificateException
Loads the keystore from the specified input stream and it uses the specified password to check for integrity if supplied.

Parameters:
stream - the input stream to load the keystore from
password - the password to check the keystore integrity with
Throws:
IOException - if an I/O error occurs.
NoSuchAlgorithmException - the data integrity algorithm used cannot be found.
CertificateException - if any certificates could not be stored in the output stream.