}//GEN-LAST:event_close
private void showCertificate(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showCertificate
JDialog frame = new JDialog((JFrame) null, "Certificate Viewer", true);
CertificateHolder ch = new CertificateHolder(frame);
try {
//System.out.println("sigObject = "+sigObject+" "+sigObject.getObjectRefAsString());
byte[] bytes = sigObject.getTextStreamValueAsByte(PdfDictionary.Cert);
// byte[] contents=sigObject.getTextStreamValueAsByte(PdfDictionary.Contents);
// System.out.println(contents+" << "+sigObject);
//byte[] bytes = null;//(byte[]) dictionary.DecodedStream;
//PdfObject dictionary = sigObject.getDictionary(PdfDictionary.M);
//System.out.println("dictionary = "+dictionary);
//byte[] bytes = (byte[]) dictionary.DecodedStream;
//String textStreamValue = sigObject.getTextStreamValue(PdfDictionary.Cert);
//byte[] bytes = StringUtils.toBytes(textStreamValue);
InputStream bais = new ByteArrayInputStream(bytes);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate signingCertificate = (X509Certificate) cf.generateCertificate(bais);
bais.close();
// // @simon this is the "public key"
// System.out.println("public key ============");
// for(int i=0;i<signingCertificate.getPublicKey().getEncoded().length;i++){
// System.out.println(Integer.toHexString(signingCertificate.getPublicKey().getEncoded()[i]));
// }
//
//// @simon this is the "SHA1 Digest of Public key"
//// System.out.println("SHA1 Digest of Public key ===========");
//// MessageDigest sha1PublicKey = MessageDigest.getInstance("SHA-1");
//// sha1PublicKey.update(cert.getPublicKey().getEncoded());
//// byte[] sha1PublicKeyRes = sha1PublicKey.digest();
//// for(int i=0;i<sha1PublicKeyRes.length;i++){
//// System.out.println(Integer.toHexString(sha1PublicKeyRes[i]));
//// }
//
//// @simon this is the "SHA1 Digest"
// System.out.println("SHA1 Digest ===========");
// MessageDigest sha1 = MessageDigest.getInstance("SHA1");
// sha1.update(bytes);
// byte[] sha1Res = sha1.digest();
// for(int i=0;i<sha1Res.length;i++){
// System.out.println(Integer.toHexString(sha1Res[i]));
// }
//
//// @simon this is the "MD5 Digest"
// System.out.println("MD5 Digest ===========");
// MessageDigest md5 = MessageDigest.getInstance("MD5");
// md5.update(bytes);
// byte[] res = md5.digest();
// for(int i=0;i<res.length;i++){
// System.out.println(Integer.toHexString(res[i]));
// }
//
//// @simon this is the "x data"
// System.out.println("x data ============");
// for(int i=0;i<signingCertificate.getEncoded().length;i++){
// System.out.println(Integer.toHexString(signingCertificate.getEncoded()[i]));
// }
// System.out.println(signingCertificate);
// System.out.println(signingCertificate.getSigAlgName());
// System.out.println(signingCertificate.getSigAlgOID());
// System.out.println(signingCertificate.getType());
// System.out.println(signingCertificate.getVersion());
// System.out.println(signingCertificate.getCriticalExtensionOIDs());
// System.out.println(signingCertificate.getExtendedKeyUsage());
// System.out.println(signingCertificate.getIssuerAlternativeNames());
// System.out.println(signingCertificate.getNonCriticalExtensionOIDs());
// System.out.println(signingCertificate.getSubjectAlternativeNames());
// System.out.println(signingCertificate.getPublicKey().getAlgorithm());
// System.out.println(signingCertificate.getPublicKey().getFormat());
DateFormat format1 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
Date notBefore = signingCertificate.getNotBefore();
Date notAfter = signingCertificate.getNotAfter();
String publicKey = byteToHex(signingCertificate.getPublicKey().getEncoded());
String x509Data = byteToHex(signingCertificate.getEncoded());
String sha1Digest = byteToHex(getDigest(bytes, "SHA1"));
String md5Digest = byteToHex(getDigest(bytes, "MD5"));
String keyDescription = signingCertificate.getPublicKey().toString();
int keyDescriptionEnd = keyDescription.indexOf('\n');
if (keyDescriptionEnd != -1)
keyDescription = keyDescription.substring(0, keyDescriptionEnd);
ch.setValues(sigObject.getTextStreamValue(PdfDictionary.Name), signingCertificate.getVersion(), signingCertificate.getSigAlgName(),
signingCertificate.getSubjectX500Principal().toString(),
signingCertificate.getIssuerX500Principal().toString(),
signingCertificate.getSerialNumber(),
format1.format(notBefore),
format1.format(notAfter),