private JPanel createCertificateDetailsPanel()

in taverna-credential-manager-ui/src/main/java/org/apache/taverna/workbench/ui/credentialmanager/ConfirmTrustedCertificateDialog.java [173:484]


	private JPanel createCertificateDetailsPanel(ParsedDistinguishedName subjectDN, ParsedDistinguishedName issuerDN) {
		/*
		 * Grid Bag Constraints templates for labels (column 1) and values
		 * (column 2) of certificate details
		 */
		GridBagConstraints gbc_labels = new GridBagConstraints();
		gbc_labels.gridx = 0;
		gbc_labels.ipadx = 20;
		gbc_labels.gridwidth = 1;
		gbc_labels.gridheight = 1;
		gbc_labels.insets = new Insets(2, 15, 2, 2);
		gbc_labels.anchor = LINE_START;

		GridBagConstraints gbc_values = new GridBagConstraints();
		gbc_values.gridx = 1;
		gbc_values.gridwidth = 1;
		gbc_values.gridheight = 1;
		gbc_values.insets = new Insets(2, 5, 2, 2);
		gbc_values.anchor = LINE_START;

		/*
		 * Netscape Certificate Type non-critical extension (if any) defines the
		 * intended uses of the certificate - to make it look like Firefox's
		 * view certificate dialog
		 * 
		 * From openssl's documentation: "The [above] extension is non standard,
		 * Netscape specific and largely obsolete. Their use in new applications
		 * is discouraged."
		 * 
		 * TODO replace with "basicConstraints, keyUsage and extended key usage
		 * extensions which are now used instead."
		 */
//		byte[] intendedUses = cert.getExtensionValue("2.16.840.1.113730.1.1"); // Netscape Certificate Type OID
//		JLabel intendedUsesLabel = null;
//		JTextField intendedUsesTextField = null;
//		JPanel intendedUsesPanel = null;
//		GridBagConstraints gbc_intendedUsesLabel = null;
//		if (intendedUses != null) {
//			intendedUsesLabel = new JLabel(
//					"This certificate has been approved for the following uses:");
//			intendedUsesLabel.setFont(new Font(null, Font.BOLD, 11));
//			intendedUsesLabel.setBorder(new EmptyBorder(5, 5, 5, 5));
//
//			intendedUsesTextField = new JTextField(45);
//			intendedUsesTextField.setText(CMUtils.getIntendedCertificateUses(intendedUses));
//			intendedUsesTextField.setEditable(false);
//			intendedUsesTextField.setFont(new Font(null, Font.PLAIN, 11));
//
//			intendedUsesPanel = new JPanel(new BorderLayout());
//			intendedUsesPanel.add(intendedUsesLabel, BorderLayout.NORTH);
//			intendedUsesPanel.add(intendedUsesTextField, BorderLayout.CENTER);
//			JSeparator separator = new JSeparator(JSeparator.HORIZONTAL);
//			intendedUsesPanel.add(separator, BorderLayout.SOUTH);
//
//			gbc_intendedUsesLabel = (GridBagConstraints) gbc_labels.clone();
//			gbc_intendedUsesLabel.gridy = 0;
//			gbc_intendedUsesLabel.gridwidth = 2; // takes two columns
//			gbc_intendedUsesLabel.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
//		}

		// Issued To
		JLabel issuedToLabel = new JLabel("Issued To");
		issuedToLabel.setFont(new Font(null, BOLD, 11));
		GridBagConstraints gbc_issuedTo = (GridBagConstraints) gbc_labels
				.clone();
		gbc_issuedTo.gridy = 1;
		gbc_issuedTo.gridwidth = 2; // takes two columns
		gbc_issuedTo.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
		// Subject's Distinguished Name (DN)
		// Extract the CN, O, OU and EMAILADDRESS fields
		String subjectCN = subjectDN.getCN();
		String subjectOrg = subjectDN.getO();
		String subjectOU = subjectDN.getOU();
		// String sEMAILADDRESS = CMUtils.getEmilAddress();
		// Subject's Common Name (CN)
		JLabel subjectCNLabel = new JLabel("Common Name (CN)");
		subjectCNLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_subjectCNLabel = (GridBagConstraints) gbc_labels.clone();
		gbc_subjectCNLabel.gridy = 2;
		JLabel subjectCNValue = new JLabel(subjectCN);
		subjectCNValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_subjectCNValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_subjectCNValue.gridy = 2;
		// Subject's Organisation (O)
		JLabel subjectOrgLabel = new JLabel("Organisation (O)");
		subjectOrgLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_subjectOrgLabel = (GridBagConstraints) gbc_labels.clone();
		gbc_subjectOrgLabel.gridy = 3;
		JLabel subjectOrgValue = new JLabel(subjectOrg);
		subjectOrgValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_subjectOrgValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_subjectOrgValue.gridy = 3;
		// Subject's Organisation Unit (OU)
		JLabel subjectOULabel = new JLabel("Organisation Unit (OU)");
		subjectOULabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_subjectOULabel = (GridBagConstraints) gbc_labels.clone();
		gbc_subjectOULabel.gridy = 4;
		JLabel subjectOUValue = new JLabel(subjectOU);
		subjectOUValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_subjectOUValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_subjectOUValue.gridy = 4;
		// E-mail Address
		// JLabel jlEmail = new JLabel("E-mail Address");
		// jlEmail.setFont(new Font(null, Font.PLAIN, 11));
		// GridBagConstraints gbc_jlEmail = (GridBagConstraints)
		// gbcLabel.clone();
		// gbc_jlEmail.gridy = 5;
		// JLabel jlEmailValue = new JLabel(sEMAILADDRESS);
		// jlEmailValue.setFont(new Font(null, Font.PLAIN, 11));
		// GridBagConstraints gbc_jlEmailValue = (GridBagConstraints)
		// gbcValue.clone();
		// gbc_jlEmailValue.gridy = 5;
		// Serial Number
		JLabel snLabel = new JLabel("Serial Number");
		snLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_snLabel = (GridBagConstraints) gbc_labels.clone();
		gbc_snLabel.gridy = 6;
		JLabel snValue = new JLabel();
		// Get the hexadecimal serial number
		StringBuilder strBuff = new StringBuilder(new BigInteger(1, cert
				.getSerialNumber().toByteArray()).toString(16).toUpperCase());
		// Place colons at every two hexadecimal characters
		if (strBuff.length() > 2)
			for (int iCnt = 2; iCnt < strBuff.length(); iCnt += 3)
				strBuff.insert(iCnt, ':');
		snValue.setText(strBuff.toString());
		snValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_snValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_snValue.gridy = 6;
		// Certificate version number
		JLabel versionLabel = new JLabel("Version");
		versionLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_versionLabel = (GridBagConstraints) gbc_labels
				.clone();
		gbc_versionLabel.gridy = 7;
		JLabel versionValue = new JLabel(Integer.toString(cert.getVersion()));
		versionValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_versionValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_versionValue.gridy = 7;

		// Issued By
		JLabel issuedByLabel = new JLabel("Issued By");
		issuedByLabel.setFont(new Font(null, BOLD, 11));
		GridBagConstraints gbc_issuedByLabel = (GridBagConstraints) gbc_labels
				.clone();
		gbc_issuedByLabel.gridy = 8;
		gbc_issuedByLabel.gridwidth = 2; // takes two columns
		gbc_issuedByLabel.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
		// Issuer's Distinguished Name (DN)
		// Extract the CN, O and OU fields for the issuer
		String issuerCN = issuerDN.getCN();
		String issuerOrg = issuerDN.getO();
		String issuerOU = issuerDN.getOU();
		// Issuer's Common Name (CN)
		JLabel issuerCNLabel = new JLabel("Common Name (CN)");
		issuerCNLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_issuerCNLabel = (GridBagConstraints) gbc_labels.clone();
		gbc_issuerCNLabel.gridy = 9;
		JLabel issuerCNValue = new JLabel(issuerCN);
		issuerCNValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_issuerCNValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_issuerCNValue.gridy = 9;
		// Issuer's Organisation (O)
		JLabel issuerOrgLabel = new JLabel("Organisation (O)");
		issuerOrgLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_issuerOrgLabel = (GridBagConstraints) gbc_labels.clone();
		gbc_issuerOrgLabel.gridy = 10;
		JLabel issuerOrgValue = new JLabel(issuerOrg);
		issuerOrgValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_issuerOrgValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_issuerOrgValue.gridy = 10;
		// Issuer's Organisation Unit (OU)
		JLabel issuerOULabel = new JLabel("Organisation Unit (OU)");
		issuerOULabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_issuerOULabel = (GridBagConstraints) gbc_labels.clone();
		gbc_issuerOULabel.gridy = 11;
		JLabel issuerOUValue = new JLabel(issuerOU);
		issuerOUValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_issuerOUValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_issuerOUValue.gridy = 11;
		
		// Validity
		JLabel validityLabel = new JLabel("Validity");
		validityLabel.setFont(new Font(null, BOLD, 11));
		GridBagConstraints gbc_validityLabel = (GridBagConstraints) gbc_labels
				.clone();
		gbc_validityLabel.gridy = 12;
		gbc_validityLabel.gridwidth = 2; // takes two columns
		gbc_validityLabel.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
		// Issued On
		JLabel issuedOnLabel = new JLabel("Issued On");
		issuedOnLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_issuedOnLabel = (GridBagConstraints) gbc_labels
				.clone();
		gbc_issuedOnLabel.gridy = 13;
		JLabel issuedOnValue = new JLabel(cert.getNotBefore().toString());
		issuedOnValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_issuedOnValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_issuedOnValue.gridy = 13;
		// Expires On
		JLabel expiresOnLabel = new JLabel("Expires On");
		expiresOnLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_expiresOnLabel = (GridBagConstraints) gbc_labels
				.clone();
		gbc_expiresOnLabel.gridy = 14;
		JLabel expiresOnValue = new JLabel(cert.getNotAfter().toString());
		expiresOnValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_expiresOnValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_expiresOnValue.gridy = 14;

		// Fingerprints
		byte[] binaryCertificateEncoding = new byte[0];
		try {
			// each certificate has one binary encoding; for X.509 certs it is DER
			binaryCertificateEncoding = cert.getEncoded();
		} catch (CertificateEncodingException ex) {
			logger.error("Could not get the encoded form of the certificate.", ex);
		}
		JLabel fingerprintsLabel = new JLabel("Fingerprints");
		fingerprintsLabel.setFont(new Font(null, BOLD, 11));
		GridBagConstraints gbc_fingerprintsLabel = (GridBagConstraints) gbc_labels
				.clone();
		gbc_fingerprintsLabel.gridy = 15;
		gbc_fingerprintsLabel.gridwidth = 2; // takes two columns
		gbc_fingerprintsLabel.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
		// SHA-1 Fingerprint
		JLabel sha1FingerprintLabel = new JLabel("SHA1 Fingerprint");
		sha1FingerprintLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_sha1FingerprintLabel = (GridBagConstraints) gbc_labels
				.clone();
		gbc_sha1FingerprintLabel.gridy = 16;
		JLabel sha1FingerprintValue = new JLabel(
				dnParser.getMessageDigestAsFormattedString(
						binaryCertificateEncoding, "SHA1"));
		sha1FingerprintValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_sha1FingerprintValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_sha1FingerprintValue.gridy = 16;
		// MD5 Fingerprint
		JLabel md5FingerprintLabel = new JLabel("MD5 Fingerprint");
		md5FingerprintLabel.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_md5FingerprinLabel = (GridBagConstraints) gbc_labels
				.clone();
		gbc_md5FingerprinLabel.gridy = 17;
		JLabel md5FingerprintValue = new JLabel(
				dnParser.getMessageDigestAsFormattedString(
						binaryCertificateEncoding, "MD5"));
		md5FingerprintValue.setFont(new Font(null, PLAIN, 11));
		GridBagConstraints gbc_md5FingerprintValue = (GridBagConstraints) gbc_values
				.clone();
		gbc_md5FingerprintValue.gridy = 17;

		/*
		 * Empty label to add a bit space at the bottom of the panel to make it
		 * look like Firefox's view certificate dialog
		 */
		JLabel emptyLabel = new JLabel("");
		GridBagConstraints gbc_emptyLabel = (GridBagConstraints) gbc_labels.clone();
		gbc_emptyLabel.gridy = 18;
		gbc_emptyLabel.gridwidth = 2; // takes two columns
		gbc_emptyLabel.ipady = 40;

		JPanel certificatePanel = new JPanel(new GridBagLayout());
		certificatePanel.setBorder(new CompoundBorder(new EmptyBorder(15, 15, 15,
				15), new EtchedBorder()));

//		if (intendedUses != null)
//			certificatePanel.add(intendedUsesPanel, gbc_intendedUsesLabel);
		certificatePanel.add(issuedToLabel, gbc_issuedTo); // Issued To
		certificatePanel.add(subjectCNLabel, gbc_subjectCNLabel);
		certificatePanel.add(subjectCNValue, gbc_subjectCNValue);
		certificatePanel.add(subjectOrgLabel, gbc_subjectOrgLabel);
		certificatePanel.add(subjectOrgValue, gbc_subjectOrgValue);
		certificatePanel.add(subjectOULabel, gbc_subjectOULabel);
		certificatePanel.add(subjectOUValue, gbc_subjectOUValue);
		// jpCertificate.add(jlEmail, gbc_jlEmail);
		// jpCertificate.add(jlEmailValue, gbc_jlEmailValue);
		certificatePanel.add(snLabel, gbc_snLabel);
		certificatePanel.add(snValue, gbc_snValue);
		certificatePanel.add(versionLabel, gbc_versionLabel);
		certificatePanel.add(versionValue, gbc_versionValue);
		certificatePanel.add(issuedByLabel, gbc_issuedByLabel); // Issued By
		certificatePanel.add(issuerCNLabel, gbc_issuerCNLabel);
		certificatePanel.add(issuerCNValue, gbc_issuerCNValue);
		certificatePanel.add(issuerOrgLabel, gbc_issuerOrgLabel);
		certificatePanel.add(issuerOrgValue, gbc_issuerOrgValue);
		certificatePanel.add(issuerOULabel, gbc_issuerOULabel);
		certificatePanel.add(issuerOUValue, gbc_issuerOUValue);
		certificatePanel.add(validityLabel, gbc_validityLabel); // Validity
		certificatePanel.add(issuedOnLabel, gbc_issuedOnLabel);
		certificatePanel.add(issuedOnValue, gbc_issuedOnValue);
		certificatePanel.add(expiresOnLabel, gbc_expiresOnLabel);
		certificatePanel.add(expiresOnValue, gbc_expiresOnValue);
		certificatePanel.add(fingerprintsLabel, gbc_fingerprintsLabel); // Fingerprints
		certificatePanel.add(sha1FingerprintLabel, gbc_sha1FingerprintLabel);
		certificatePanel.add(sha1FingerprintValue, gbc_sha1FingerprintValue);
		certificatePanel.add(md5FingerprintLabel, gbc_md5FingerprinLabel);
		certificatePanel.add(md5FingerprintValue, gbc_md5FingerprintValue);
		// Empty label to get some vertical space on the frame
		certificatePanel.add(emptyLabel, gbc_emptyLabel);
		return certificatePanel;
	}