Bug 578024 - Improve the TrustCertificateDialog

Generally use lower case hex fingerprints everywhere. It's just easier
on the eyes and is generally what the keyservers show as well.

Change-Id: I7d5526332be58fc8ea5de98ac9fc9c212d254f93
Signed-off-by: Ed Merks <ed.merks@gmail.com>
Reviewed-on: https://git.eclipse.org/r/c/equinox/rt.equinox.p2/+/190750
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPPublicKeyStore.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPPublicKeyStore.java
index 383fd74..8f3d150 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPPublicKeyStore.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPPublicKeyStore.java
@@ -31,7 +31,7 @@
 		if (key == null) {
 			return null;
 		}
-		PGPPublicKey alreadyStoredKey = keys.putIfAbsent(PGPPublicKeyService.toHex(key.getFingerprint()), key);
+		PGPPublicKey alreadyStoredKey = keys.putIfAbsent(PGPPublicKeyService.toHexFingerprint(key), key);
 		return alreadyStoredKey == null ? key : alreadyStoredKey;
 	}
 
@@ -74,7 +74,7 @@
 	}
 
 	public void remove(PGPPublicKey selectedKey) {
-		keys.remove(PGPPublicKeyService.toHex(selectedKey.getFingerprint()));
+		keys.remove(PGPPublicKeyService.toHexFingerprint(selectedKey));
 	}
 
 	public void add(File file) {
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPSignatureVerifier.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPSignatureVerifier.java
index 740e06c..d6267b6 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPSignatureVerifier.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPSignatureVerifier.java
@@ -224,7 +224,7 @@
 										verifyingKey) != 0) {
 									LogHelper.log(new Status(IStatus.WARNING, Activator.ID,
 											NLS.bind(Messages.Error_SignatureAfterKeyExpiration, PGPPublicKeyService
-													.toHex(verifyingKey.getFingerprint()).toUpperCase(Locale.ROOT))));
+													.toHexFingerprint(verifyingKey))));
 								}
 							}
 
@@ -233,7 +233,7 @@
 								if (!keyService.isCreatedBeforeRevocation(signature, verifyingKey)) {
 									setStatus(new Status(IStatus.ERROR, Activator.ID,
 											NLS.bind(Messages.Error_SignatureAfterKeyRevocation, PGPPublicKeyService
-													.toHex(verifyingKey.getFingerprint()).toUpperCase(Locale.ROOT))));
+													.toHexFingerprint(verifyingKey))));
 									return;
 								}
 							}
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/DefaultPGPPublicKeyService.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/DefaultPGPPublicKeyService.java
index b2b45a5..6ec6632 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/DefaultPGPPublicKeyService.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/DefaultPGPPublicKeyService.java
@@ -176,7 +176,7 @@
 			long keyID = Long.parseUnsignedLong(fingerprint.substring(length - 16, length), 16);
 			Collection<PGPPublicKey> keys = getKeys(keyID);
 			for (PGPPublicKey key : keys) {
-				if (toHex(key.getFingerprint()).equalsIgnoreCase(fingerprint)) {
+				if (toHexFingerprint(key).equalsIgnoreCase(fingerprint)) {
 					return key;
 				}
 			}
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/spi/PGPPublicKeyService.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/spi/PGPPublicKeyService.java
index 508ac65..6fbdff2 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/spi/PGPPublicKeyService.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/spi/PGPPublicKeyService.java
@@ -162,6 +162,18 @@
 	}
 
 	/**
+	 * Returns the hexadecimal representation of the key's
+	 * {@link PGPPublicKey#getFingerprint() fingerprint}.
+	 *
+	 * @param key the key for which to get the hexadecimal fingerprint.
+	 *
+	 * @return the hexadecimal representation of the key's fingerprint.
+	 */
+	public static String toHexFingerprint(PGPPublicKey key) {
+		return Hex.toHexString(key.getFingerprint());
+	}
+
+	/**
 	 * Returns the hexadecimal representation of the given bytes.
 	 *
 	 * @param bytes the bytes to convert to a hexadecimal representation.
@@ -181,7 +193,7 @@
 	 *         leading zeros.
 	 */
 	public static String toHex(long keyID) {
-		return String.format("%1$016X", keyID); //$NON-NLS-1$
+		return String.format("%1$016x", keyID); //$NON-NLS-1$
 	}
 
 	/**
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/TrustPreferencePage.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/TrustPreferencePage.java
index 1a8f1de..bb0ef51 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/TrustPreferencePage.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/TrustPreferencePage.java
@@ -109,7 +109,7 @@
 				key -> "PGP", cert -> "x509", tableColumnLayout, 1); //$NON-NLS-1$ //$NON-NLS-2$
 
 		createColumn(viewer, ProvSDKMessages.TrustPreferencePage_FingerprintIdColumn,
-				key -> PGPPublicKeyService.toHex(key.getFingerprint()).toUpperCase(Locale.ROOT),
+				key -> PGPPublicKeyService.toHexFingerprint(key),
 				cert -> cert.getSerialNumber().toString(), tableColumnLayout, 10);
 
 		createColumn(viewer, ProvSDKMessages.TrustPreferencePage_NameColumn, key -> {
@@ -196,7 +196,7 @@
 			} else {
 				PGPPublicKey key = (PGPPublicKey) element;
 				destination.setFilterExtensions(new String[] { "*.asc" }); //$NON-NLS-1$
-				destination.setFileName(PGPPublicKeyService.toHex(key.getFingerprint()).toUpperCase() + ".asc"); //$NON-NLS-1$
+				destination.setFileName(PGPPublicKeyService.toHexFingerprint(key) + ".asc"); //$NON-NLS-1$
 				String path = destination.open();
 				setFilterPath(EXPORT_FILTER_PATH, destination.getFilterPath());
 				if (path == null) {
@@ -346,7 +346,7 @@
 			if (element instanceof PGPPublicKey) {
 				Clipboard clipboard = new Clipboard(getShell().getDisplay());
 				clipboard.setContents(new Object[] {
-						PGPPublicKeyService.toHex(((PGPPublicKey) element).getFingerprint()).toUpperCase(Locale.ROOT) },
+						PGPPublicKeyService.toHexFingerprint((PGPPublicKey) element) },
 						new Transfer[] { TextTransfer.getInstance() });
 				clipboard.dispose();
 			}
@@ -381,8 +381,7 @@
 				}
 				return 1;
 			}
-			return PGPPublicKeyService.toHex(k1.getFingerprint())
-					.compareTo(PGPPublicKeyService.toHex(k2.getFingerprint()));
+			return PGPPublicKeyService.toHexFingerprint(k1).compareTo(PGPPublicKeyService.toHexFingerprint(k2));
 		});
 		input.addAll(all);
 		input.addAll(contributedTrustedKeys.keySet());
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/KeySigningInfoFactory.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/KeySigningInfoFactory.java
index 782dff9..9d7e517 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/KeySigningInfoFactory.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/KeySigningInfoFactory.java
@@ -96,7 +96,7 @@
 
 				private void addDetails(PGPPublicKey key, List<String> lines, String indentation) {
 					lines.add(indentation + ProvUIMessages.KeySigningInfoFactory_FingerprintItem
-							+ PGPPublicKeyService.toHex(key.getFingerprint()).toUpperCase(Locale.ROOT));
+							+ PGPPublicKeyService.toHexFingerprint(key));
 					for (Iterator<String> userIDs = key.getUserIDs(); userIDs.hasNext();) {
 						lines.add(indentation + ProvUIMessages.KeySigningInfoFactory_UserIDItem + userIDs.next());
 					}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PGPPublicKeyViewDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PGPPublicKeyViewDialog.java
index e02936a..a6cbf3b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PGPPublicKeyViewDialog.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PGPPublicKeyViewDialog.java
@@ -102,7 +102,7 @@
 	@SuppressWarnings("nls")
 	protected void update(PGPPublicKey key, Set<PGPPublicKey> verifiedCertifications) {
 		StyledString content = new StyledString();
-		String fingerprint = PGPPublicKeyService.toHex(key.getFingerprint()).toUpperCase(Locale.ROOT);
+		String fingerprint = PGPPublicKeyService.toHexFingerprint(key);
 
 		PublicKeyPacket publicKeyPacket = key.getPublicKeyPacket();
 		publicKeyPacket.getAlgorithm();
@@ -219,7 +219,7 @@
 			return userIDs.next();
 
 		}
-		return PGPPublicKeyService.toHex(key.getFingerprint()).toUpperCase(Locale.ROOT);
+		return PGPPublicKeyService.toHexFingerprint(key);
 	}
 
 	private void computeVerifiedCertifications(Shell shell) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java
index 8b7ac75..2d6cc82 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java
@@ -799,6 +799,6 @@
 		if (key == null) {
 			return null;
 		}
-		return PGPPublicKeyService.toHex(key.getFingerprint()).toUpperCase(Locale.ROOT);
+		return PGPPublicKeyService.toHexFingerprint(key);
 	}
 }