Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

cryptix.pki
Class KeyBundle  view KeyBundle download KeyBundle.java

java.lang.Object
  extended bycryptix.pki.KeyBundle

public abstract class KeyBundle
extends java.lang.Object

A KeyBundle is a collection of keys, principals and certificates, which all logically belong together.

Here are a few suggestions on how to implement this class for existing public key structures:

X.509 - an X.509 KeyBundle consists of just one certificate, together with the publickey and principal as returned by the getSubjectDN() method on X509Certificate.

OpenPGP - an OpenPGP KeyBundle consists of one 'PGP key', which means: - one key object, the signing key.
- one or more principal objects, which correspond to UserID's in OpenPGP (potentially also PhotoID objects).
- one or more certificates, which is basically a certification signature by someone on a principal/userid.
- the subkeys (encryption keys) are exposed trough the OpenPGPKeyBundle class.

Version:
$Revision: 1.2 $

Field Summary
private  int cachedHashCode
          Cached version of our hashCode as it is quite expensive to compute.
private  java.lang.String type
           
 
Constructor Summary
protected KeyBundle(java.lang.String type)
          Create a new KeyBundle object with the given type.
 
Method Summary
abstract  boolean addCertificate(java.security.cert.Certificate cert)
          Adds a certificate
abstract  boolean addPrincipal(java.security.Principal princ)
          Adds a principal.
abstract  boolean addPrivateKey(java.security.PrivateKey privkey, java.security.PublicKey pubkey)
          Adds a private key, without encrypting it.
abstract  boolean addPrivateKey(java.security.PrivateKey privkey, java.security.PublicKey pubkey, char[] passphrase, java.security.SecureRandom sr)
          Adds a private key, encrypting it with a passphrase.
abstract  boolean addPublicKey(java.security.PublicKey pubkey)
          Adds a public key.
abstract  java.lang.Object clone()
          Return a clone for this KeyBundle
 boolean equals(java.lang.Object other)
          Do equality comparison based on equality of the byte[]s returned by getEncoded().
abstract  java.util.Iterator getCertificates()
          Return an iterator over all certificate contained within this bundle.
abstract  java.util.Iterator getCertificates(java.security.PublicKey key, java.security.Principal principal)
          Return an iterator over the certificates contained within this bundle that belong to a certain key and principal.
abstract  byte[] getEncoded()
          Returns the keybundle in encoded format.
abstract  java.util.Iterator getPrincipals()
          Return an iterator over all principals contained within this bundle
abstract  java.security.PrivateKey getPrivateKey(java.security.PublicKey key, char[] passphrase)
          Return an the private key belonging to the given public key, decryptin it with the given passphrase.
abstract  java.util.Iterator getPublicKeys()
          Return an iterator over all keys contained within this bundle
 java.lang.String getType()
          Returns the type of this keybundle.
 int hashCode()
          Returns a hashCode for this object based on the encoded form.
abstract  boolean removeCertificate(java.security.cert.Certificate cert)
          Remove a certificate and all related keys and principals.
abstract  boolean removePrincipal(java.security.Principal subject)
          Remove a principal and all related keys and certificates.
abstract  boolean removePrivateKey(java.security.PublicKey key)
          Remove the private key belonging to the given public key.
abstract  boolean removePublicKey(java.security.PublicKey key)
          Remove a public key and all related principals and certificates.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

type

private final java.lang.String type

cachedHashCode

private transient int cachedHashCode
Cached version of our hashCode as it is quite expensive to compute. This field is considered valid if it is != -1.

Constructor Detail

KeyBundle

protected KeyBundle(java.lang.String type)
Create a new KeyBundle object with the given type.

Method Detail

equals

public boolean equals(java.lang.Object other)
Do equality comparison based on equality of the byte[]s returned by getEncoded().


hashCode

public int hashCode()
Returns a hashCode for this object based on the encoded form.


getType

public final java.lang.String getType()
Returns the type of this keybundle.


getEncoded

public abstract byte[] getEncoded()
                           throws KeyBundleException
Returns the keybundle in encoded format.


clone

public abstract java.lang.Object clone()
Return a clone for this KeyBundle


addCertificate

public abstract boolean addCertificate(java.security.cert.Certificate cert)
                                throws KeyBundleException
Adds a certificate

It is assumed that the certificate contains the right pointers to the public key and the principal, so that the implementation of the keybundle can add these automatically when needed.


addPrincipal

public abstract boolean addPrincipal(java.security.Principal princ)
                              throws KeyBundleException
Adds a principal.

Note: there is no need to call this method explicitly when addCertificate is used.


addPublicKey

public abstract boolean addPublicKey(java.security.PublicKey pubkey)
                              throws KeyBundleException
Adds a public key.

Note: there is no need to call this method explicitly when addCertificate is used.


addPrivateKey

public abstract boolean addPrivateKey(java.security.PrivateKey privkey,
                                      java.security.PublicKey pubkey,
                                      char[] passphrase,
                                      java.security.SecureRandom sr)
                               throws KeyBundleException
Adds a private key, encrypting it with a passphrase.


addPrivateKey

public abstract boolean addPrivateKey(java.security.PrivateKey privkey,
                                      java.security.PublicKey pubkey)
                               throws KeyBundleException
Adds a private key, without encrypting it.


removePublicKey

public abstract boolean removePublicKey(java.security.PublicKey key)
                                 throws KeyBundleException
Remove a public key and all related principals and certificates.

The definition of 'related' is somewhat loose and left up to the implementation. The only thing an implementation has to make sure is that after removing one object it removes enough other objects in order to maintain a valid state according to the particular type.


removePrivateKey

public abstract boolean removePrivateKey(java.security.PublicKey key)
                                  throws KeyBundleException
Remove the private key belonging to the given public key.


removePrincipal

public abstract boolean removePrincipal(java.security.Principal subject)
                                 throws KeyBundleException
Remove a principal and all related keys and certificates.

The definition of 'related' is somewhat loose and left up to the implementation. The only thing an implementation has to make sure is that after removing one object it removes enough other objects in order to maintain a valid state according to the particular type.


removeCertificate

public abstract boolean removeCertificate(java.security.cert.Certificate cert)
                                   throws KeyBundleException
Remove a certificate and all related keys and principals.

The definition of 'related' is somewhat loose and left up to the implementation. The only thing an implementation has to make sure is that after removing one object it removes enough other objects in order to maintain a valid state according to the particular type.


getPublicKeys

public abstract java.util.Iterator getPublicKeys()
Return an iterator over all keys contained within this bundle

The objects returned by the iterator will all be instances of java.security.Key


getPrivateKey

public abstract java.security.PrivateKey getPrivateKey(java.security.PublicKey key,
                                                       char[] passphrase)
                                                throws java.security.UnrecoverableKeyException
Return an the private key belonging to the given public key, decryptin it with the given passphrase.

Returns null if no private key is available


getPrincipals

public abstract java.util.Iterator getPrincipals()
Return an iterator over all principals contained within this bundle

The objects returned by the iterator will all be instances of java.security.Principal


getCertificates

public abstract java.util.Iterator getCertificates()
Return an iterator over all certificate contained within this bundle.

The objects returned by the iterator will all be instances of java.security.cert.Certificate


getCertificates

public abstract java.util.Iterator getCertificates(java.security.PublicKey key,
                                                   java.security.Principal principal)
Return an iterator over the certificates contained within this bundle that belong to a certain key and principal.

The objects returned by the iterator will all be instances of java.security.cert.Certificate