package io.airlift.airship.coordinator.auth;
import org.apache.commons.codec.DecoderException;
import javax.annotation.concurrent.Immutable;
import java.util.Arrays;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.commons.codec.binary.Hex.decodeHex;
import static org.apache.commons.codec.binary.Hex.encodeHexString;
@Immutable
public class Fingerprint
{
private final byte[] fingerprint;
public Fingerprint(byte[] fingerprint)
{
checkNotNull(fingerprint, "fingerprint is null");
checkArgument(fingerprint.length == 16, "fingerprint must be 16 bytes");
this.fingerprint = fingerprint;
}
@Override
public boolean equals(Object o)
{
if (this == o) {
return true;
}
if (!(o instanceof Fingerprint)) {
return false;
}
Fingerprint x = (Fingerprint) o;
return Arrays.equals(fingerprint, x.fingerprint);
}
@Override
public int hashCode()
{
return Arrays.hashCode(fingerprint);
}
@Override
public String toString()
{
return encodeHexString(fingerprint);
}
public static Fingerprint valueOf(String s)
{
checkNotNull(s, "fingerprint string is null");
try {
return new Fingerprint(decodeHex(s.toCharArray()));
}
catch (DecoderException e) {
throw new IllegalArgumentException("invalid fingerprint encoding");
}
}
}