sun.security.x509
Class AlgorithmId

java.lang.Object
  extended by sun.security.x509.AlgorithmId
All Implemented Interfaces:
Serializable, DerEncoder
Direct Known Subclasses:
AlgIdDSA

public class AlgorithmId
extends Object
implements Serializable, DerEncoder

This class identifies algorithms, such as cryptographic transforms, each of which may be associated with parameters. Instances of this base class are used when this runtime environment has no special knowledge of the algorithm type, and may also be used in other cases. Equivalence is defined according to OID and (where relevant) parameters.

Subclasses may be used, for example when when the algorithm ID has associated parameters which some code (e.g. code using public keys) needs to have parsed. Two examples of such algorithms are Diffie-Hellman key exchange, and the Digital Signature Standard Algorithm (DSS/DSA).

The OID constants defined in this class correspond to some widely used algorithms, for which conventional string names have been defined. This class is not a general repository for OIDs, or for such string names. Note that the mappings between algorithm IDs and algorithm names is not one-to-one.

See Also:
Serialized Form

Field Summary
static ObjectIdentifier DH_oid
           
static ObjectIdentifier DH_PKIX_oid
           
static ObjectIdentifier DSA_oid
           
static ObjectIdentifier DSA_OIW_oid
           
static ObjectIdentifier MD2_oid
           
static ObjectIdentifier md2WithRSAEncryption_oid
           
static ObjectIdentifier MD5_oid
           
static ObjectIdentifier md5WithRSAEncryption_oid
           
protected  DerValue params
          Parameters for this algorithm.
static ObjectIdentifier RSA_oid
           
static ObjectIdentifier RSAEncryption_oid
           
static ObjectIdentifier SHA_oid
           
static ObjectIdentifier SHA1_OIW_oid
           
static ObjectIdentifier sha1WithDSA_oid
           
static ObjectIdentifier sha1WithDSA_OIW_oid
           
static ObjectIdentifier sha1WithRSAEncryption_oid
           
static ObjectIdentifier sha1WithRSAEncryption_OIW_oid
           
static ObjectIdentifier SHA5_oid
           
static ObjectIdentifier shaWithDSA_OIW_oid
           
 
Constructor Summary
AlgorithmId()
          Deprecated. use one of the other constructors.
AlgorithmId(ObjectIdentifier oid)
          Constructs a parameterless algorithm ID.
AlgorithmId(ObjectIdentifier oid, AlgorithmParameters algparams)
          Constructs an algorithm ID with algorithm parameters.
 
Method Summary
protected  void decodeParams()
           
 void derEncode(OutputStream out)
          DER encode this object onto an output stream.
 byte[] encode()
          Returns the DER-encoded X.509 AlgorithmId as a byte array.
 void encode(DerOutputStream out)
          Marshal a DER-encoded "AlgorithmID" sequence on the DER stream.
 boolean equals(AlgorithmId other)
          Returns true iff the argument indicates the same algorithm with the same parameters.
 boolean equals(Object other)
          Compares this AlgorithmID to another.
 boolean equals(ObjectIdentifier id)
          Compares two algorithm IDs for equality.
static AlgorithmId get(AlgorithmParameters algparams)
          Returns one of the algorithm IDs most commonly associated with this algorithm parameters.
static AlgorithmId get(String algname)
          Returns one of the algorithm IDs most commonly associated with this algorithm name.
static AlgorithmId getAlgorithmId(String algname)
          Deprecated. use the short get form of this method.
 byte[] getEncodedParams()
          Returns the DER encoded parameter, which can then be used to initialize java.security.AlgorithmParamters.
 String getName()
          Returns a name for the algorithm which may be more intelligible to humans than the algorithm's OID, but which won't necessarily be comprehensible on other systems.
 ObjectIdentifier getOID()
          Returns the ISO OID for this algorithm.
 AlgorithmParameters getParameters()
           
 int hashCode()
          Returns a hashcode for this AlgorithmId.
protected  String paramsToString()
          Provides a human-readable description of the algorithm parameters.
static AlgorithmId parse(DerValue val)
          Parse (unmarshal) an ID from a DER sequence input value.
 String toString()
          Returns a string describing the algorithm and its parameters.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

params

protected DerValue params
Parameters for this algorithm. These are stored in unparsed DER-encoded form; subclasses can be made to automaticaly parse them so there is fast access to these parameters.


MD2_oid

public static ObjectIdentifier MD2_oid

MD5_oid

public static ObjectIdentifier MD5_oid

SHA5_oid

public static ObjectIdentifier SHA5_oid

SHA_oid

public static ObjectIdentifier SHA_oid

SHA1_OIW_oid

public static ObjectIdentifier SHA1_OIW_oid

DH_oid

public static ObjectIdentifier DH_oid

DH_PKIX_oid

public static ObjectIdentifier DH_PKIX_oid

DSA_oid

public static ObjectIdentifier DSA_oid

DSA_OIW_oid

public static ObjectIdentifier DSA_OIW_oid

RSA_oid

public static ObjectIdentifier RSA_oid

RSAEncryption_oid

public static ObjectIdentifier RSAEncryption_oid

md2WithRSAEncryption_oid

public static ObjectIdentifier md2WithRSAEncryption_oid

md5WithRSAEncryption_oid

public static ObjectIdentifier md5WithRSAEncryption_oid

sha1WithRSAEncryption_oid

public static ObjectIdentifier sha1WithRSAEncryption_oid

sha1WithRSAEncryption_OIW_oid

public static ObjectIdentifier sha1WithRSAEncryption_OIW_oid

shaWithDSA_OIW_oid

public static ObjectIdentifier shaWithDSA_OIW_oid

sha1WithDSA_OIW_oid

public static ObjectIdentifier sha1WithDSA_OIW_oid

sha1WithDSA_oid

public static ObjectIdentifier sha1WithDSA_oid
Constructor Detail

AlgorithmId

public AlgorithmId(ObjectIdentifier oid)
Constructs a parameterless algorithm ID.

Parameters:
oid - the identifier for the algorithm

AlgorithmId

public AlgorithmId(ObjectIdentifier oid,
                   AlgorithmParameters algparams)
Constructs an algorithm ID with algorithm parameters.

Parameters:
oid - the identifier for the algorithm.
algparams - the associated algorithm parameters.

AlgorithmId

public AlgorithmId()
Deprecated. use one of the other constructors.

Constructs an algorithm ID which will be initialized separately, for example by deserialization.

Method Detail

getAlgorithmId

public static AlgorithmId getAlgorithmId(String algname)
                                  throws NoSuchAlgorithmException
Deprecated. use the short get form of this method.

Returns one of the algorithm IDs most commonly associated with this algorithm name.

Parameters:
algname - the name being used
Throws:
NoSuchAlgorithmException - on error.

getParameters

public AlgorithmParameters getParameters()

get

public static AlgorithmId get(String algname)
                       throws NoSuchAlgorithmException
Returns one of the algorithm IDs most commonly associated with this algorithm name.

Parameters:
algname - the name being used
Throws:
NoSuchAlgorithmException - on error.

get

public static AlgorithmId get(AlgorithmParameters algparams)
                       throws NoSuchAlgorithmException
Returns one of the algorithm IDs most commonly associated with this algorithm parameters.

Parameters:
algparams - the associated algorithm parameters.
Throws:
NoSuchAlgorithmException - on error.

parse

public static AlgorithmId parse(DerValue val)
                         throws IOException
Parse (unmarshal) an ID from a DER sequence input value. This form parsing might be used when expanding a value which has already been partially unmarshaled as a set or sequence member.

Parameters:
val - the input value, which contains the algid and, if there are any parameters, those parameters.
Returns:
an ID for the algorithm. If the system is configured appropriately, this may be an instance of a class with some kind of special support for this algorithm. In that case, you may "narrow" the type of the ID.
Throws:
IOException - on error.

decodeParams

protected void decodeParams()
                     throws IOException
Throws:
IOException

encode

public final void encode(DerOutputStream out)
                  throws IOException
Marshal a DER-encoded "AlgorithmID" sequence on the DER stream.

Throws:
IOException

derEncode

public void derEncode(OutputStream out)
               throws IOException
DER encode this object onto an output stream. Implements the DerEncoder interface.

Specified by:
derEncode in interface DerEncoder
Parameters:
out - the output stream on which to write the DER encoding.
Throws:
IOException - on encoding error.

encode

public final byte[] encode()
                    throws IOException
Returns the DER-encoded X.509 AlgorithmId as a byte array.

Throws:
IOException

getOID

public final ObjectIdentifier getOID()
Returns the ISO OID for this algorithm. This is usually converted to a string and used as part of an algorithm name, for example "OID.1.3.14.3.2.13" style notation. Use the getName call when you do not need to ensure cross-system portability of algorithm names, or need a user friendly name.


getName

public String getName()
Returns a name for the algorithm which may be more intelligible to humans than the algorithm's OID, but which won't necessarily be comprehensible on other systems. For example, this might return a name such as "MD5withRSA" for a signature algorithm on some systems. It also returns names like "OID.1.2.3.4", when no particular name for the algorithm is known.


toString

public String toString()
Returns a string describing the algorithm and its parameters.

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

getEncodedParams

public byte[] getEncodedParams()
                        throws IOException
Returns the DER encoded parameter, which can then be used to initialize java.security.AlgorithmParamters.

Returns:
DER encoded parameters, or null not present.
Throws:
IOException

paramsToString

protected String paramsToString()
Provides a human-readable description of the algorithm parameters. This may be redefined by subclasses which parse those parameters.


equals

public boolean equals(AlgorithmId other)
Returns true iff the argument indicates the same algorithm with the same parameters.


equals

public boolean equals(Object other)
Compares this AlgorithmID to another. If algorithm parameters are available, they are compared. Otherwise, just the object IDs for the algorithm are compared.

Overrides:
equals in class Object
Parameters:
other - preferably an AlgorithmId, else an ObjectIdentifier
Returns:
true if this object is the same as the obj argument; false otherwise.
See Also:
Object.hashCode(), Hashtable

equals

public final boolean equals(ObjectIdentifier id)
Compares two algorithm IDs for equality. Returns true iff they are the same algorithm, ignoring algorithm parameters.


hashCode

public int hashCode()
Returns a hashcode for this AlgorithmId.

Overrides:
hashCode in class Object
Returns:
a hashcode for this AlgorithmId.
See Also:
Object.equals(java.lang.Object), Hashtable