package com.limegroup.gnutella.dht.util;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.limewire.io.GUID;
import org.limewire.mojito.KUID;
import com.limegroup.gnutella.URN;
/**
* Utilities to convert between {@link GUID}, {@link URN} and {@link KUID}.
*/
public class KUIDUtils {
private KUIDUtils() {}
/**
* Converts the given SHA-1 URN into a KUID.
*/
public static KUID toKUID(URN urn) {
if (!urn.isSHA1()) {
throw new IllegalArgumentException("Expected a SHA-1 URN: " + urn);
}
return KUID.createWithBytes(urn.getBytes());
}
/**
* Converts the given KUID into a SHA-1 URN.
*/
public static URN toURN(KUID kuid) {
try {
return URN.createSHA1UrnFromBytes(kuid.getBytes());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* Returns a KUID for the GUID (KUID = SHA-1(GUID)).
*/
public static KUID toKUID(GUID guid) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(guid.bytes());
byte[] digest = md.digest();
return KUID.createWithBytes(digest);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}