diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/net/java/sip/communicator/plugin/desktoputil/X509CertificatePanel.java | 66 |
1 files changed, 50 insertions, 16 deletions
diff --git a/src/net/java/sip/communicator/plugin/desktoputil/X509CertificatePanel.java b/src/net/java/sip/communicator/plugin/desktoputil/X509CertificatePanel.java index 9d13fe2..037b177 100644 --- a/src/net/java/sip/communicator/plugin/desktoputil/X509CertificatePanel.java +++ b/src/net/java/sip/communicator/plugin/desktoputil/X509CertificatePanel.java @@ -288,11 +288,11 @@ public class X509CertificatePanel addTitle(sb, R.getI18NString("service.gui.CERT_INFO_FINGERPRINTS")); try { + String sha256String = getThumbprint(certificate, "SHA-256"); String sha1String = getThumbprint(certificate, "SHA1"); - String md5String = getThumbprint(certificate, "MD5"); - addField(sb, "SHA1:", sha1String); - addField(sb, "MD5:", md5String); + addField(sb, "SHA256:", sha256String, 48); + addField(sb, "SHA1:", sha1String, 32); } catch (CertificateException e) { @@ -346,11 +346,12 @@ public class X509CertificatePanel addField(sb, R.getI18NString("service.gui.CERT_INFO_SIGN"), R.getI18NString( - "service.gui.CERT_INFO_KEY_BYTES_PRINT", + "service.gui.CERT_INFO_KEY_BITS_PRINT", new String[]{ - String.valueOf(certificate.getSignature().length), - getHex(certificate.getSignature()) + String.valueOf(certificate.getSignature().length*8), })); + addField(sb, R.getI18NString("service.gui.CERT_INFO_SIGN"), + getHex(certificate.getSignature()), 48); sb.append("</table>\n"); } @@ -376,12 +377,43 @@ public class X509CertificatePanel */ private void addField(StringBuilder sb, String field, String value) { - sb.append("<tr>") - .append("<td style='margin-left: 5pt; margin-right: 25pt;") - .append(" white-space: nowrap'>") - .append(field).append("</td>") - .append("<td>").append(value).append("</td>") - .append("</tr>\n"); + addField(sb, field, value, 0); + } + + /** + * Add a field. + * @param sb StringBuilder to append to + * @param field name of the certificate field + * @param value to print + * @param wrap force-wrap after number of characters + */ + private void addField(StringBuilder sb, String field, String value, + int wrap) + { + sb.append("<tr><td style='margin-left: 5pt; margin-right: 25pt;") + .append("white-space: nowrap' valign='top'>") + .append(field).append("</td><td"); + + if (wrap > 0) + { + sb.append(" style='font-family:monospace'>"); + for (int i = 0; i < value.length(); i++) + { + if (i % wrap == 0 && i > 0) + { + sb.append("\n"); + } + + sb.append(value.charAt(i)); + } + } + else + { + sb.append(">"); + sb.append(value); + } + + sb.append("</td></tr>\n"); } /** @@ -399,13 +431,13 @@ public class X509CertificatePanel try { for (byte b : raw) - f.format("%02x", b); + f.format("%02X:", b); } finally { f.close(); } - return hex.toString(); + return hex.substring(0, hex.length() - 1); } /** @@ -429,19 +461,21 @@ public class X509CertificatePanel { throw new CertificateException(e); } + byte[] encodedCert = cert.getEncoded(); StringBuilder sb = new StringBuilder(encodedCert.length * 2); Formatter f = new Formatter(sb); try { for (byte b : digest.digest(encodedCert)) - f.format("%02x", b); + f.format("%02X:", b); } finally { f.close(); } - return sb.toString(); + + return sb.substring(0, sb.length() - 1); } /** |