As its name implies, the java.security.interfaces package contains only interfaces. These interfaces define methods that provide algorithm-specific information (such as key values and initialization parameter values) about DSA and RSA public and private keys. If you are using the RSA algorithm, for example, and working with a java.security.PublicKey object, you can cast that PublicKey to an RSAPublicKey object and use the RSA-specific methods defined by RSAPublicKey to query the key value directly. Figure 20-1 shows the class hierarchy of this package.

The java.security.interfaces package was introduced in Java 1.1. In Java 1.2, the java.security.spec package is the preferred way for obtaining algorithm-specific information about keys and algorithm parameters. This package remains useful in Java 1.2, however, for identifying the type of a given PublicKey or PrivateKey object.
The interfaces in this package are typically of interest only to programmers who are implementing a security provider or who want to implement cryptographic algorithms themselves. Use of this package typically requires some familiarity with the mathematics underlying DSA and RSA public-key cryptography.
| DSAKey | Java 1.1 | |
|
|
||
| java.security.interfaces | PJ1.1(opt) | |
This interface defines a method that must be implemented by both public and private DSA keys.
| public interface DSAKey { | ||
| // | Public Instance Methods | |
| public abstract DSAParams getParams (); | ||
| } | ||
Implementations: DSAPrivateKey, DSAPublicKey
| DSAKeyPairGenerator | Java 1.1 | |
|
|
||
| java.security.interfaces | PJ1.1(opt) | |
This interface defines algorithm-specific KeyPairGenerator initialization methods for DSA keys. To generate a pair of DSA keys, use the static getInstance() factory method of java.security.KeyPairGenerator and specify "DSA" as the desired algorithm name. If you wish to perform DSA-specific initialization, cast the returned KeyPairGenerator to a DSAKeyPairGenerator and call one of the initialize() methods defined by this interface. Finally, generate the keys by calling generateKeyPair() on the KeyPairGenerator.
| public interface DSAKeyPairGenerator { | ||
| // | Public Instance Methods | |
| public abstract void initialize (DSAParams params, java.security.SecureRandom random) throws java.security.InvalidParameterException; | ||
| public abstract void initialize (int modlen, boolean genParams, java.security.SecureRandom random) throws java.security.InvalidParameterException; | ||
| } | ||
| DSAParams | Java 1.1 | |
|
|
||
| java.security.interfaces | PJ1.1(opt) | |
This interface defines methods for obtaining the DSA parameters g, p, and q. These methods are useful only if you wish to perform cryptographic computation yourself. Using these methods requires a detailed understanding of the mathematics underlying DSA public-key cryptography.
| public interface DSAParams { | ||
| // | Public Instance Methods | |
| public abstract java.math.BigInteger getG (); | ||
| public abstract java.math.BigInteger getP (); | ||
| public abstract java.math.BigInteger getQ (); | ||
| } | ||
Implementations: java.security.spec.DSAParameterSpec
Passed To: DSAKeyPairGenerator.initialize()
Returned By: DSAKey.getParams()
| DSAPrivateKey | Java 1.1 | |
|
|
||
| java.security.interfaces | serializable PJ1.1(opt) | |
This interface represents a DSA private key and provides direct access to the underlying key value. If you are working with a private key you know is a DSA key, you can cast the PrivateKey to a DSAPrivateKey.
| public interface DSAPrivateKey extends DSAKey, java.security.PrivateKey { | ||
| // | Public Constants | |
| 1.2 | public static final long serialVersionUID ; | =7776497482533790279 |
| // | Public Instance Methods | |
| public abstract java.math.BigInteger getX (); | ||
| } | ||
Hierarchy: (DSAPrivateKey(DSAKey,java.security.PrivateKey(java.security.Key(Serializable))))
| DSAPublicKey | Java 1.1 | |
|
|
||
| java.security.interfaces | serializable PJ1.1(opt) | |
This interface represents a DSA public key and provides direct access to the underlying key value. If you are working with a public key you know is a DSA key, you can cast the PublicKey to a DSAPublicKey.
| public interface DSAPublicKey extends DSAKey, java.security.PublicKey { | ||
| // | Public Constants | |
| 1.2 | public static final long serialVersionUID ; | =1234526332779022332 |
| // | Public Instance Methods | |
| public abstract java.math.BigInteger getY (); | ||
| } | ||
Hierarchy: (DSAPublicKey(DSAKey,java.security.PublicKey(java.security.Key(Serializable))))
| RSAKey | Java 1.3 Beta | |
|
|
||
| java.security.interfaces | ||
This is a superinterface for RSAPublicKey and RSAPrivateKey; it defines a method shared by both classes. Prior to Java 1.3, the getModulus() method was defined independently by RSAPublicKey and RSAPrivateKey.
| public interface RSAKey { | ||
| // | Public Instance Methods | |
| public abstract java.math.BigInteger getModulus (); | ||
| } | ||
Implementations: RSAPrivateKey, RSAPublicKey
| RSAPrivateCrtKey | Java 1.2 | |
|
|
||
| java.security.interfaces | serializable | |
This interface extends RSAPrivateKey and provides a decomposition (based on the Chinese remainder theorem) of the private-key value into the various pieces that comprise it. This interface is useful only if you plan to implement your own cryptographic algorithms. To use this interface, you must have a detailed understanding of the mathematics underlying RSA public-key cryptography. Given a java.security.PrivateKey object, you can use the instanceof operator to determine whether you can safely cast it to an RSAPrivateCrtKey.
| public interface RSAPrivateCrtKey extends RSAPrivateKey { | ||
| // | Property Accessor Methods (by property name) | |
| public abstract java.math.BigInteger getCrtCoefficient (); | ||
| public abstract java.math.BigInteger getPrimeExponentP (); | ||
| public abstract java.math.BigInteger getPrimeExponentQ (); | ||
| public abstract java.math.BigInteger getPrimeP (); | ||
| public abstract java.math.BigInteger getPrimeQ (); | ||
| public abstract java.math.BigInteger getPublicExponent (); | ||
| } | ||
Hierarchy: (RSAPrivateCrtKey(RSAPrivateKey(java.security.PrivateKey(java.security.Key(Serializable)),RSAKey)))
| RSAPrivateKey | Java 1.2 | |
|
|
||
| java.security.interfaces | serializable | |
This interface represents an RSA private key and provides direct access to the underlying key values. If you are working with a private key you know is an RSA key, you can cast the PrivateKey to an RSAPrivateKey.
| public interface RSAPrivateKey extends java.security.PrivateKey, RSAKey { | ||
| // | Public Instance Methods | |
| public abstract java.math.BigInteger getPrivateExponent (); | ||
| } | ||
Hierarchy: (RSAPrivateKey(java.security.PrivateKey(java.security.Key(Serializable)),RSAKey))
Implementations: RSAPrivateCrtKey
| RSAPublicKey | Java 1.2 | |
|
|
||
| java.security.interfaces | serializable | |
This interface represents an RSA public key and provides direct access to the underlying key values. If you are working with a public key you know is an RSA key, you can cast the PublicKey to an RSAPublicKey.
| public interface RSAPublicKey extends java.security.PublicKey, RSAKey { | ||
| // | Public Instance Methods | |
| public abstract java.math.BigInteger getPublicExponent (); | ||
| } | ||
Hierarchy: (RSAPublicKey(java.security.PublicKey(java.security.Key(Serializable)),RSAKey))

Copyright © 2001 O'Reilly & Associates. All rights reserved.