import java.io.*; import java.security.*; import java.security.cert.*; public class VerifyHandler { public static void main(String[] args) { // Läs in publika nyckeln PublicKey publicKey = null; try { FileInputStream fis = new FileInputStream(args[1]); CertificateFactory cf = CertificateFactory.getInstance("X.509"); java.security.cert.Certificate cert = cf.generateCertificate(fis); publicKey = cert.getPublicKey(); System.out.println("DONE LOADING PUBLIC KEY FROM CERTIFICATE"); } catch(CertificateException ce) { System.out.println("CertificateException generated"); } catch(IOException ioe) { System.out.println("NoSuchProviderException generated"); } // Gör signingEngineAndVerifyEngine Signature signAndVerifyEngine = null; try { signAndVerifyEngine = Signature.getInstance("SHA1withDSA", "SUN"); System.out.println("DONE MAKING SIGNING/VERIFYING ENGINE"); } catch(NoSuchAlgorithmException nsae) { System.out.println("NoSuchAlgorithmException generated"); } catch(NoSuchProviderException nspe) { System.out.println("NoSuchProviderException generated"); } // Initialisera maskinen try { signAndVerifyEngine.initVerify(publicKey); } catch(InvalidKeyException ike) { System.out.println("InvalidKeyException generated"); } // Läs in den givna signaturen byte[] sigToVerify = null; try { FileInputStream fis = new FileInputStream(args[2]); sigToVerify = new byte[fis.available()]; fis.read(sigToVerify); fis.close(); } catch(IOException ioe) { System.out.println("IOException generated"); } // Tillför signaturen text-meddelandet try { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(args[0])); byte[] buffer = new byte[1024]; int length; while(bis.available() != 0) { length = bis.read(buffer); signAndVerifyEngine.update(buffer, 0, length); } bis.close(); System.out.println("DONE DELIVERING DATA TO SIGNATURE/VERIFYING ENGINE"); } catch(SignatureException ike) { System.out.println("SignatureException generated"); } catch(IOException ioe) { System.out.println("IOException generated"); } // Verifiera try { if(signAndVerifyEngine.verify(sigToVerify)) { System.out.println("*** SIGNATURE VERIFIES ***"); } else { System.out.println("*** SIGNATURE VERIFIES NOT ***"); } } catch(SignatureException se) { System.out.println("SignatureException"); } } }