001 package cpw.mods.fml.common; 002 003 import java.nio.ByteBuffer; 004 import java.security.MessageDigest; 005 import java.security.cert.Certificate; 006 007 public class CertificateHelper { 008 009 private static final String HEXES = "0123456789abcdef"; 010 011 public static String getFingerprint(Certificate certificate) 012 { 013 if (certificate == null) 014 { 015 return "NO VALID CERTIFICATE FOUND"; 016 } 017 try 018 { 019 MessageDigest md = MessageDigest.getInstance("SHA-1"); 020 byte[] der = certificate.getEncoded(); 021 md.update(der); 022 byte[] digest = md.digest(); 023 return hexify(digest); 024 } 025 catch (Exception e) 026 { 027 return null; 028 } 029 } 030 031 public static String getFingerprint(ByteBuffer buffer) 032 { 033 try 034 { 035 MessageDigest digest = MessageDigest.getInstance("SHA-1"); 036 digest.update(buffer); 037 byte[] chksum = digest.digest(); 038 return hexify(chksum); 039 } 040 catch (Exception e) 041 { 042 return null; 043 } 044 } 045 046 private static String hexify(byte[] chksum) 047 { 048 final StringBuilder hex = new StringBuilder( 2 * chksum.length ); 049 for ( final byte b : chksum ) { 050 hex.append(HEXES.charAt((b & 0xF0) >> 4)) 051 .append(HEXES.charAt((b & 0x0F))); 052 } 053 return hex.toString(); 054 } 055 056 }