package net.lightbody.bmp.proxy.selenium; import org.bouncycastle.crypto.digests.SHA1Digest; import org.bouncycastle.util.encoders.Base64; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; /** * Generates a persistent SHA1 thumbprint for long-term identification of a certificate. * * *************************************************************************************** * Copyright (c) 2007, Information Security Partners, LLC * All rights reserved. * * In a special exception, Selenium/OpenQA is allowed to use this code under the Apache License 2.0. * * * @author Brad Hill * */ public class ThumbprintUtil { /** * Generates a SHA1 thumbprint of a certificate for long-term mapping. * @param cert * @return * @throws java.security.cert.CertificateEncodingException */ public static String getThumbprint(final X509Certificate cert) throws CertificateEncodingException { if(cert == null) { return null; } byte[] rawOctets = cert.getEncoded(); SHA1Digest digest = new SHA1Digest(); byte[] digestOctets = new byte[digest.getDigestSize()]; digest.update(rawOctets, 0, rawOctets.length); digest.doFinal(digestOctets, 0); return new String(Base64.encode(digestOctets)); } }