/* * VerifyHandler.java * * Created on den 9 januari 2005, 11:20 */ import java.security.*; import java.io.*; /** * * @author Henrik Johansson */ public class VerifyHandler { private String dataName; private String publicKeyName; private String signatureName; private String signatureAlgorithm = "SHA1withDSA"; private int bufSize = 1024; /** Creates a new instance of VerifyHandler */ public VerifyHandler() { } /** Creates a new instance of VerifyHandler */ public VerifyHandler(String dataName, String publicKeyName, String signatureName) { this.setDataName(dataName); this.setPublicKeyName(publicKeyName); this.setSignatureName(signatureName); } public boolean verifySignature() { try { // ladda nyckeln FileInputStream keyfis = new FileInputStream(getPublicKeyName()); ObjectInputStream key = new ObjectInputStream(keyfis); PublicKey pk = (PublicKey) key.readObject(); key.close(); key.close(); // ladda signatur FileInputStream sigfis = new FileInputStream(getSignatureName()); byte[] signature = new byte[1024]; int length = sigfis.read(signature); // verifiera signatur Signature s = Signature.getInstance(getSignatureAlgorithm()); s.initVerify(pk); FileInputStream input = new FileInputStream(getDataName()); byte[] buf = new byte[getBufSize()]; int count = 0; while((count = input.read(buf, 0, getBufSize())) != -1) { s.update(buf, 0, count); } input.close(); return s.verify(signature, 0, length); } catch(Exception e) { e.printStackTrace(); } return false; } /** * @param args the command line arguments */ public static void main(String[] args) { if(args.length != 3) { System.err.println("SignHandler måste anropas med tre argument, ."); System.exit(1); } VerifyHandler vh = new VerifyHandler(args[0], args[1], args[2]); if(vh.verifySignature()) { System.out.println(args[0] + " kunde verifieras"); } else { System.out.println(args[0] + " kunde INTE verifieras"); } } public String getDataName() { return dataName; } public void setDataName(String dataName) { this.dataName = dataName; } public String getPublicKeyName() { return publicKeyName; } public void setPublicKeyName(String publicKeyName) { this.publicKeyName = publicKeyName; } public String getSignatureName() { return signatureName; } public void setSignatureName(String signatureName) { this.signatureName = signatureName; } public String getSignatureAlgorithm() { return signatureAlgorithm; } public void setSignatureAlgorithm(String signatureAlgorithm) { this.signatureAlgorithm = signatureAlgorithm; } public int getBufSize() { return bufSize; } public void setBufSize(int bufSize) { this.bufSize = bufSize; } }