JavaTM 2 Platform
Standard Ed. 5.0

javax.security.auth.kerberos
Class KerberosKey

java.lang.Object
  extended by javax.security.auth.kerberos.KerberosKey
All Implemented Interfaces:
Serializable, Key, SecretKey, Destroyable

public class KerberosKey
extends Object
implements SecretKey, Destroyable

This class encapsulates a long term secret key for a Kerberos principal.

All Kerberos JAAS login modules that obtain a principal's password and generate the secret key from it should use this class. Where available, the login module might even read this secret key directly from a Kerberos "keytab". Sometimes, such as when authenticating a server in the absence of user-to-user authentication, the login module will store an instance of this class in the private credential set of a Subject during the commit phase of the authentication process.

It might be necessary for the application to be granted a PrivateCredentialPermission if it needs to access the KerberosKey instance from a Subject. This permission is not needed when the application depends on the default JGSS Kerberos mechanism to access the KerberosKey. In that case, however, the application will need an appropriate ServicePermission.

Since:
1.4
See Also:
Serialized Form

Constructor Summary
KerberosKey(KerberosPrincipal principal, byte[] keyBytes, int keyType, int versionNum)
          Constructs a KerberosKey from the given bytes when the key type and key version number are known.
KerberosKey(KerberosPrincipal principal, char[] password, String algorithm)
          Constructs a KerberosKey from a principal's password.
 
Method Summary
 void destroy()
          Destroys this key.
 String getAlgorithm()
          Returns the standard algorithm name for this key.
 byte[] getEncoded()
          Returns the key material of this secret key.
 String getFormat()
          Returns the name of the encoding format for this secret key.
 int getKeyType()
          Returns the key type for this long-term key.
 KerberosPrincipal getPrincipal()
          Returns the principal that this key belongs to.
 int getVersionNumber()
          Returns the key version number.
 boolean isDestroyed()
          Determines if this key has been destroyed.
 String toString()
          Returns a string representation of the object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

KerberosKey

public KerberosKey(KerberosPrincipal principal,
                   byte[] keyBytes,
                   int keyType,
                   int versionNum)
Constructs a KerberosKey from the given bytes when the key type and key version number are known. This can be used when reading the secret key information from a Kerberos "keytab".

Parameters:
principal - the principal that this secret key belongs to
keyBytes - the raw bytes for the secret key
keyType - the key type for the secret key as defined by the Kerberos protocol specification.
versionNum - the version number of this secret key

KerberosKey

public KerberosKey(KerberosPrincipal principal,
                   char[] password,
                   String algorithm)
Constructs a KerberosKey from a principal's password.

Parameters:
principal - the principal that this password belongs to
password - the password that should be used to compute the key
algorithm - the name for the algorithm that this key will be used for. This parameter may be null in which case the default algorithm "DES" will be assumed.
Throws:
IllegalArgumentException - if the name of the algorithm passed is unsupported.
Method Detail

getPrincipal

public final KerberosPrincipal getPrincipal()
Returns the principal that this key belongs to.

Returns:
the principal this key belongs to.

getVersionNumber

public final int getVersionNumber()
Returns the key version number.

Returns:
the key version number.

getKeyType

public final int getKeyType()
Returns the key type for this long-term key.

Returns:
the key type.

getAlgorithm

public final String getAlgorithm()
Returns the standard algorithm name for this key. For example, "DES" would indicate that this key is a DES key. See Appendix A in the Java Cryptography Architecture API Specification & Reference for information about standard algorithm names.

Specified by:
getAlgorithm in interface Key
Returns:
the name of the algorithm associated with this key.

getFormat

public final String getFormat()
Returns the name of the encoding format for this secret key.

Specified by:
getFormat in interface Key
Returns:
the String "RAW"

getEncoded

public final byte[] getEncoded()
Returns the key material of this secret key.

Specified by:
getEncoded in interface Key
Returns:
the key material

destroy

public void destroy()
             throws DestroyFailedException
Destroys this key. A call to any of its other methods after this will cause an IllegalStateException to be thrown.

Specified by:
destroy in interface Destroyable
Throws:
DestroyFailedException - if some error occurs while destorying this key.

isDestroyed

public boolean isDestroyed()
Determines if this key has been destroyed.

Specified by:
isDestroyed in interface Destroyable
Returns:
true if this Object has been destroyed, false otherwise.

toString

public String toString()
Description copied from class: Object
Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Overrides:
toString in class Object
Returns:
a string representation of the object.

JavaTM 2 Platform
Standard Ed. 5.0

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.