@Override public int hashCode() { Map<String, Object> a = publicKey .toHash(); byte[] key = (byte[]) a.get("n"); return key[0] + (key[1] << 8) + (key[2] << 16) + (key[3] << 24); }
public long getPublicExponent() { Map<String, Object> params = publicKey.toHash(); byte[] arr = (byte[]) params.get("e"); long e = 0; for (int i = 0; i < arr.length; i++) e = (e << 8) | arr[i]; return e; } }
public byte[] pack() { Map<String, Object> params = publicKey.toHash(); return Boss.dumpToArray(new Object[]{ 1, params.get("e"), params.get("n") }); }
/** * Keys equality check. Only public keys are equal to each other. Right now private keys can't be equal to the * public even if the latter is its part. * * @param obj * key to compare with. Should be PublicKey instaance. */ @Override public boolean equals(Object obj) { if (obj instanceof PublicKey) { PublicKey k = (PublicKey) obj; Map<String, Object> a = publicKey .toHash(); Map<String, Object> b = k.publicKey .toHash(); return Arrays.equals((byte[]) a.get("e"), (byte[]) b.get("e")) && Arrays.equals((byte[]) a.get("n"), (byte[]) b.get("n")); } return super.equals(obj); }
@Override public Digest updateDigestWithKeyComponents(Digest digest) { Map<String, Object> a = publicKey.toHash(); digest.update((byte[]) a.get("e")).update((byte[]) a.get("n")); return digest; }