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.Signaturepublic 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 ToSignedObject.{SignedObject( ) , verify( )} |