3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-07 06:44:16 +00:00

Implement equals/hashCode on ECKey. Resolves issue 254.

This commit is contained in:
Mike Hearn 2012-11-01 12:05:30 +01:00
parent 45b89a1935
commit 640db52cf4

View File

@ -32,6 +32,7 @@ import java.io.IOException;
import java.io.Serializable;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.Arrays;
import static com.google.common.base.Preconditions.checkArgument;
@ -335,4 +336,23 @@ public class ECKey implements Serializable {
throw new IllegalArgumentException("Cannot set creation time to negative value: " + newCreationTimeSeconds);
creationTimeSeconds = newCreationTimeSeconds;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ECKey ecKey = (ECKey) o;
if (!Arrays.equals(pub, ecKey.pub)) return false;
return true;
}
@Override
public int hashCode() {
// Public keys are random already so we can just use a part of them as the hashcode. Read from the start to
// avoid picking up the type code (compressed vs uncompressed) which is tacked on the end.
return (pub[0] & 0xFF) | ((pub[1] & 0xFF) << 8) | ((pub[2] & 0xFF) << 16) | ((pub[3] & 0xFF) << 24);
}
}