Previous | Next | Trail Map | Security in JDK 1.2  | Generating and Verifying Signatures

Sign the Data

After you have created a public and private key, you are ready to sign the data.

In this example you will sign the data contained in a file. GenSig gets the file name from the command line.

A digital signature is created (or verified) using an instance of the Signature class.

"Signing data" (generating a digital signature for that data) is done with the following steps:

Get a Signature Object:

The following gets a Signature object for generating (or verifying) signatures using the DSA algorithm. Note that this is the same algorithm for which the program generated keys in the previous step, Generate Public and Private Keys.
        Signature dsa = Signature.getInstance("SHA1withDSA", "SUN"); 

Note: When specifying the signature algorithm name, you should also include the name of the message digest algorithm used by the signature algorithm. "SHA1withDSA" is a way of specifying the DSA signature algorithm, using the SHA-1 message digest algorithm.

Initialize the Signature Object

Before a Signature object can be used for signing (or verifying), it must be initialized. The initialization method for signing requires a private key. Use the private key placed into the PrivateKey object named priv in the previous step:

        dsa.initSign(priv);

Supply the Signature Object the Data to be Signed

This program will use the data from the file whose name is specified as the first (and only) command-line argument. It will read in the data a buffer at a time, and supply it to the Signature object by calling the update method:
        FileInputStream fis = new FileInputStream(args[0]);
        BufferedInputStream bufin = new BufferedInputStream(fis);
        byte[] buffer = new byte[1024];
        int len;
        while (bufin.available() != 0) {
            len = bufin.read(buffer);
            dsa.update(buffer, 0, len);
            };
        bufin.close();

Generate the Signature

Once all the data has been supplied to the Signature object, you can generate the digital signature of that data:

        byte[] realSig = dsa.sign();


Previous | Next | Trail Map | Security in JDK 1.2  | Generating and Verifying Signatures