All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.pdx.cs410J.security.SignMessage Maven / Gradle / Ivy

The newest version!
package edu.pdx.cs410J.security;

import java.io.*;
import java.security.*;
import java.security.spec.*;

/**
 * This program computes the DSA digital signature of a message using
 * a private key.  The digest is written to a file named
 * digest.out.
 */
public class SignMessage {
  public static void main(String[] args) {
    String fileName = args[0];
    String message = args[1];

    try {
      // Read in key from file
      FileInputStream fis = new FileInputStream(fileName);
      byte[] encodedKey = new byte[fis.available()];
      fis.read(encodedKey);
      fis.close();

      PKCS8EncodedKeySpec spec = 
	new PKCS8EncodedKeySpec(encodedKey);
      KeyFactory factory = 
	KeyFactory.getInstance("DSA", "SUN");
      PrivateKey privateKey = factory.generatePrivate(spec);

      // Compute DSA signature
      Signature sig = Signature.getInstance("DSA");

      sig.initSign(privateKey);
      sig.update(message.getBytes());
      byte[] digest = sig.sign();

      FileOutputStream fos = new FileOutputStream("digest.out");
      fos.write(digest);
      return;

    } catch (IOException ex) {
      ex.printStackTrace(System.err);

    } catch (NoSuchProviderException ex) {
      ex.printStackTrace(System.err);

    } catch (NoSuchAlgorithmException ex) {
      ex.printStackTrace(System.err);

    } catch (InvalidKeySpecException ex) {
      ex.printStackTrace(System.err);

    } catch (SignatureException ex) {
      ex.printStackTrace(System.err);

    } catch (InvalidKeyException ex) {
      ex.printStackTrace(System.err);
    }

    System.exit(1);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy