package org.limewire.security.certificate;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import org.limewire.util.CommonUtils;
public class CertificateTools {
/**
* Takes a byte array and returns a hex string encoded two chars per byte
* (00-FF), all uppercase.
*/
public static String encodeBytesToString(byte bytes[]) {
StringBuilder string = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
// look up high nibble char
string.append(HEX_CHARS[(b & 0xf0) >>> 4]);
// look up low nibble char
string.append(HEX_CHARS[b & 0x0f]);
}
return string.toString();
}
public static String getCertificateHash(Certificate certificate, HashCalculator hashCalculator)
throws CertificateEncodingException {
return encodeBytesToString(hashCalculator.calculate(certificate.getEncoded()));
}
// table to convert a nibble to a hex char.
private final static char[] HEX_CHARS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
/**
* @return the full path to the limewire.keystore file, within the
* certificate settings directory.
* @see #getCertificateSettingsDirectory()
*/
public static File getKeyStoreLocation() {
return new File(getCertificateSettingsDirectory(), "limewire.keystore");
}
/**
* @return the directory within the user settings directory to store
* certificate info
* @see CommonUtils#getUserSettingsDir()
*/
public static File getCertificateSettingsDirectory() {
return new File(CommonUtils.getUserSettingsDir(), "certificate/");
}
public static URI getKeyStoreURI() {
try {
return new URI(CertificateProps.getKeyStoreURLString());
} catch (URISyntaxException ex) {
throw new RuntimeException("MalformedURL '" + CertificateProps.getKeyStoreURLString()
+ "'", ex);
}
}
public static char[] getKeyStorePassword() {
return "".toCharArray();
}
}