import java.io.*;
import java.security.*;
import java.security.spec.*;
public class VerifySign{
public static void main(String [] args)
{
if(args.length!=3){
System.out.println("Usage:VerifySign <PublicKey> <dataFile> <SignatureFile>");
System.out.println("Option:");
System.out.println("<Public Key >The filename of the public key.");
System.out.println("<DataFile>The filename that want to signature");
System.out.println("<SignatureFile>:The file name containing signature data.");
System.exit(0);
}
try{
FileInputStream fileIn=new FileInputStream(args[0]);
byte[] encodedpubKey =new byte[fileIn.available()];
fileIn.read(encodedpubKey);
fileIn.close();
X509EncodedKeySpec pubKeySpec=
new X509EncodedKeySpec(encodedpubKey);
KeyFactory keyFactory=KeyFactory.getInstance("DSA");
PublicKey pubKey=keyFactory.generatePublic(pubKeySpec);
FileInputStream sigStream=new FileInputStream(args[2]);
byte[] signature=new byte[sigStream.available()];
sigStream.read(signature);
sigStream.close();
Signature sigObj=Signature.getInstance("SHAwithDSA");
sigObj.initVerify(pubKey);
fileIn=new FileInputStream(args[1]);
byte b;
while(fileIn.available()!=0)
{
b=(byte)fileIn.read();
sigObj.update(b);
};
fileIn.close();
boolean verifies=sigObj.verify(signature);
System.out.println("Signature verifies:"+verifies);
System.out.println(sigObj.toString());
}catch(Exception e){/////////////
}
}
}