import java.io.*;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.cert.X509Certificate;
import oreilly.jonathan.util.Base64;
public class Spill {
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.out.println("Usage: Spill file");
return;
}
BufferedReader in = new BufferedReader(new FileReader(args[0]));
String begin = in.readLine();
if (begin.equals("-----BEGIN CERTIFICATE-----") == false)
throw new IOException("Couldn't find certificate beginning");
String base64 = new String();
boolean trucking = true;
while (trucking) {
String line = in.readLine();
if (line.startsWith("-----")) trucking = false;
else base64 += line;
}
in.close();
byte[] certificateData = Base64.decode(base64);
X509Certificate c = X509Certificate.getInstance(certificateData);
System.out.println("Subject: " + c.getSubjectDN().getName());
System.out.println("Issuer : " + c.getIssuerDN().getName());
System.out.println("Serial number: " +
c.getSerialNumber().toString(16));
System.out.println("Valid from " + c.getNotBefore() +
" to " + c.getNotAfter());
System.out.println("Fingerprints:");
doFingerprint(certificateData, "MD5");
doFingerprint(certificateData, "SHA");
}
protected static void doFingerprint(byte[] certificateBytes,
String algorithm) throws Exception {
System.out.print(" " + algorithm + ": ");
MessageDigest md = MessageDigest.getInstance(algorithm);
md.update(certificateBytes);
byte[] digest = md.digest();
for (int i = 0; i < digest.length; i++) {
if (i != 0) System.out.print(":");
int b = digest[i] & 0xff;
String hex = Integer.toHexString(b);
if (hex.length() == 1) System.out.print("0");
System.out.print(hex);
}
System.out.println();
}
} |