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; }
Passed To SignedObject.{SignedObject( ), verify( )} |