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);
 	}
 }
