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.
Figure 14-39. java.security.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;
}