This class computes or verifies a
digital signature. Obtain a Signature object by
calling one of the static getInstance( )
factory methods and specifying the desired digital signature
algorithm and, optionally, the desired provider of that algorithm. A
digital signature is essentially a message
digest encrypted by a public-key encryption algorithm. Thus, to
specify a digital signature algorithm, you must specify both the
digest algorithm and the encryption algorithm. The only algorithm
supported by the default "SUN"
provider is "SHA1withDSA".
Once you
have obtained a Signature object, you must
initialize it before you can create or verify a digital signature. To
initialize a digital signature for creation, call initSign(
) and specify the private key to be used to create the
signature. To initialize a signature for verification, call
initVerify( ) and specify the public key of the
signer. Once the Signature object has been
initialized, call update( ) one or more times to
specify the data to be signed or verified. Prior to Java 5.0, the
data must be specified as an array of bytes. In Java 5.0 and later,
you can also pass a ByteBuffer to update(
), and this facilitates the use of the
Signature class with the
java.nio package.
Finally, to create a digital signature, call
sign( ), passing
a byte array into which the signature is stored. Or, pass the bytes
of the digital signature to verify( ), which
returns true if the signature is valid or
false otherwise. After calling either
sign( ) or verify( ), the
Signature object is reset internally and can be
used to create or verify another signature.

public abstract class Signature extends SignatureSpi {
// Protected Constructors
protected Signature(String algorithm);
// Protected Constants
protected static final int SIGN; =2
protected static final int UNINITIALIZED; =0
protected static final int VERIFY; =3
// Public Class Methods
public static Signature getInstance(String algorithm)
throws NoSuchAlgorithmException;
1.4 public static Signature getInstance(String algorithm, Provider provider)
throws NoSuchAlgorithmException;
public static Signature getInstance(String algorithm, String provider)
throws NoSuchAlgorithmException, NoSuchProviderException;
// Public Instance Methods
public final String getAlgorithm( );
1.4 public final AlgorithmParameters getParameters( );
1.2 public final Provider getProvider( );
public final void initSign(PrivateKey privateKey)
throws InvalidKeyException;
1.2 public final void initSign(PrivateKey privateKey, SecureRandom random)
throws InvalidKeyException;
1.3 public final void initVerify(java.security.cert.Certificate certificate)
throws InvalidKeyException;
public final void initVerify(PublicKey publicKey)
throws InvalidKeyException;
1.2 public final void setParameter(java.security.spec.
AlgorithmParameterSpec params)
throws InvalidAlgorithmParameterException;
public final byte[ ] sign( ) throws SignatureException;
1.2 public final int sign(byte[ ] outbuf, int offset, int len) throws SignatureException;
5.0 public final void update(java.nio.ByteBuffer data) throws SignatureException;
public final void update(byte b) throws SignatureException;
public final void update(byte[ ] data) throws SignatureException;
public final void update(byte[ ] data, int off, int len)
throws SignatureException;
public final boolean verify(byte[ ] signature) throws SignatureException;
1.4 public final boolean verify(byte[ ] signature, int offset, int length)
throws SignatureException;
// Public Methods Overriding SignatureSpi
public Object clone( ) throws CloneNotSupportedException;
// Public Methods Overriding Object
public String toString( );
// Protected Instance Fields
protected int state;
// Deprecated Public Methods
# public final Object getParameter(String param)
throws InvalidParameterException;
# public final void setParameter(String param, Object value)
throws InvalidParameterException;
}