package im.actor.runtime.crypto.ratchet; // Disabling Bounds checks for speeding up calculations /*-[ #define J2OBJC_DISABLE_ARRAY_BOUND_CHECKS 1 ]-*/ public class RatchetPublicKey { private byte[] key; public RatchetPublicKey(byte[] key) { if (key == null) { throw new IllegalArgumentException("Key can't be null"); } if (key.length != 32) { throw new IllegalArgumentException("Key MUST be 32 bytes length"); } this.key = key; } public byte[] getKey() { return key; } public boolean areSame(byte[] key) { if (key == null) { throw new IllegalArgumentException("Key can't be null"); } if (key.length != 32) { throw new IllegalArgumentException("Key MUST be 32 bytes length"); } for (int i = 0; i < 32; i++) { if (key[i] != this.key[i]) { return false; } } return true; } public boolean isBigger(byte[] key) { if (key == null) { throw new IllegalArgumentException("Key can't be null"); } if (key.length != 32) { throw new IllegalArgumentException("Key MUST be 32 bytes length"); } for (int i = 0; i < 32; i++) { int foreign = key[i] & 0xFF; int own = this.key[i] & 0xFF; if (foreign < own) { return true; } else if (foreign > own) { return false; } } return false; } }