228 lines
7.0 KiB
Java
228 lines
7.0 KiB
Java
package org.bouncycastle.pqc.math.linearalgebra;
|
|
|
|
/* loaded from: classes6.dex */
|
|
public final class ByteUtils {
|
|
private static final char[] HEX_CHARS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
|
|
|
|
public static byte[] xor(byte[] bArr, byte[] bArr2) {
|
|
byte[] bArr3 = new byte[bArr.length];
|
|
for (int length = bArr.length - 1; length >= 0; length--) {
|
|
bArr3[length] = (byte) (bArr[length] ^ bArr2[length]);
|
|
}
|
|
return bArr3;
|
|
}
|
|
|
|
public static String toHexString(byte[] bArr, String str, String str2) {
|
|
String str3 = new String(str);
|
|
for (int i = 0; i < bArr.length; i++) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(str3);
|
|
char[] cArr = HEX_CHARS;
|
|
sb.append(cArr[(bArr[i] >>> 4) & 15]);
|
|
String obj = sb.toString();
|
|
StringBuilder sb2 = new StringBuilder();
|
|
sb2.append(obj);
|
|
sb2.append(cArr[bArr[i] & 15]);
|
|
str3 = sb2.toString();
|
|
if (i < bArr.length - 1) {
|
|
StringBuilder sb3 = new StringBuilder();
|
|
sb3.append(str3);
|
|
sb3.append(str2);
|
|
str3 = sb3.toString();
|
|
}
|
|
}
|
|
return str3;
|
|
}
|
|
|
|
public static String toHexString(byte[] bArr) {
|
|
String str = "";
|
|
for (int i = 0; i < bArr.length; i++) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(str);
|
|
char[] cArr = HEX_CHARS;
|
|
sb.append(cArr[(bArr[i] >>> 4) & 15]);
|
|
String obj = sb.toString();
|
|
StringBuilder sb2 = new StringBuilder();
|
|
sb2.append(obj);
|
|
sb2.append(cArr[bArr[i] & 15]);
|
|
str = sb2.toString();
|
|
}
|
|
return str;
|
|
}
|
|
|
|
public static char[] toCharArray(byte[] bArr) {
|
|
char[] cArr = new char[bArr.length];
|
|
for (int i = 0; i < bArr.length; i++) {
|
|
cArr[i] = (char) bArr[i];
|
|
}
|
|
return cArr;
|
|
}
|
|
|
|
public static String toBinaryString(byte[] bArr) {
|
|
String str = "";
|
|
for (int i = 0; i < bArr.length; i++) {
|
|
byte b = bArr[i];
|
|
for (int i2 = 0; i2 < 8; i2++) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(str);
|
|
sb.append((b >>> i2) & 1);
|
|
str = sb.toString();
|
|
}
|
|
if (i != bArr.length - 1) {
|
|
StringBuilder sb2 = new StringBuilder();
|
|
sb2.append(str);
|
|
sb2.append(" ");
|
|
str = sb2.toString();
|
|
}
|
|
}
|
|
return str;
|
|
}
|
|
|
|
public static byte[] subArray(byte[] bArr, int i, int i2) {
|
|
int i3 = i2 - i;
|
|
byte[] bArr2 = new byte[i3];
|
|
System.arraycopy(bArr, i, bArr2, 0, i3);
|
|
return bArr2;
|
|
}
|
|
|
|
public static byte[] subArray(byte[] bArr, int i) {
|
|
return subArray(bArr, i, bArr.length);
|
|
}
|
|
|
|
public static byte[][] split(byte[] bArr, int i) throws ArrayIndexOutOfBoundsException {
|
|
if (i > bArr.length) {
|
|
throw new ArrayIndexOutOfBoundsException();
|
|
}
|
|
byte[] bArr2 = new byte[i];
|
|
byte[][] bArr3 = {bArr2, new byte[bArr.length - i]};
|
|
System.arraycopy(bArr, 0, bArr2, 0, i);
|
|
System.arraycopy(bArr, i, bArr3[1], 0, bArr.length - i);
|
|
return bArr3;
|
|
}
|
|
|
|
public static byte[] fromHexString(String str) {
|
|
char[] charArray = str.toUpperCase().toCharArray();
|
|
int i = 0;
|
|
for (char c : charArray) {
|
|
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')) {
|
|
i++;
|
|
}
|
|
}
|
|
byte[] bArr = new byte[(i + 1) >> 1];
|
|
int i2 = i & 1;
|
|
for (char c2 : charArray) {
|
|
if (c2 < '0' || c2 > '9') {
|
|
if (c2 >= 'A' && c2 <= 'F') {
|
|
int i3 = i2 >> 1;
|
|
byte b = (byte) (bArr[i3] << 4);
|
|
bArr[i3] = b;
|
|
bArr[i3] = (byte) ((c2 - '7') | b);
|
|
}
|
|
} else {
|
|
int i4 = i2 >> 1;
|
|
byte b2 = (byte) (bArr[i4] << 4);
|
|
bArr[i4] = b2;
|
|
bArr[i4] = (byte) ((c2 - '0') | b2);
|
|
}
|
|
i2++;
|
|
}
|
|
return bArr;
|
|
}
|
|
|
|
public static boolean equals(byte[][][] bArr, byte[][][] bArr2) {
|
|
if (bArr.length != bArr2.length) {
|
|
return false;
|
|
}
|
|
boolean z = true;
|
|
for (int length = bArr.length - 1; length >= 0; length--) {
|
|
byte[][] bArr3 = bArr[length];
|
|
if (bArr3.length != bArr2[length].length) {
|
|
return false;
|
|
}
|
|
for (int length2 = bArr3.length - 1; length2 >= 0; length2--) {
|
|
z &= equals(bArr[length][length2], bArr2[length][length2]);
|
|
}
|
|
}
|
|
return z;
|
|
}
|
|
|
|
public static boolean equals(byte[][] bArr, byte[][] bArr2) {
|
|
if (bArr.length != bArr2.length) {
|
|
return false;
|
|
}
|
|
boolean z = true;
|
|
for (int length = bArr.length - 1; length >= 0; length--) {
|
|
z &= equals(bArr[length], bArr2[length]);
|
|
}
|
|
return z;
|
|
}
|
|
|
|
public static boolean equals(byte[] bArr, byte[] bArr2) {
|
|
if (bArr == null) {
|
|
return bArr2 == null;
|
|
}
|
|
if (bArr2 == null || bArr.length != bArr2.length) {
|
|
return false;
|
|
}
|
|
boolean z = true;
|
|
for (int length = bArr.length - 1; length >= 0; length--) {
|
|
z &= bArr[length] == bArr2[length];
|
|
}
|
|
return z;
|
|
}
|
|
|
|
public static int deepHashCode(byte[][][] bArr) {
|
|
int i = 1;
|
|
for (byte[][] bArr2 : bArr) {
|
|
i = (i * 31) + deepHashCode(bArr2);
|
|
}
|
|
return i;
|
|
}
|
|
|
|
public static int deepHashCode(byte[][] bArr) {
|
|
int i = 1;
|
|
for (byte[] bArr2 : bArr) {
|
|
i = (i * 31) + deepHashCode(bArr2);
|
|
}
|
|
return i;
|
|
}
|
|
|
|
public static int deepHashCode(byte[] bArr) {
|
|
int i = 1;
|
|
for (byte b : bArr) {
|
|
i = (i * 31) + b;
|
|
}
|
|
return i;
|
|
}
|
|
|
|
public static byte[] concatenate(byte[][] bArr) {
|
|
int length = bArr[0].length;
|
|
byte[] bArr2 = new byte[bArr.length * length];
|
|
int i = 0;
|
|
for (byte[] bArr3 : bArr) {
|
|
System.arraycopy(bArr3, 0, bArr2, i, length);
|
|
i += length;
|
|
}
|
|
return bArr2;
|
|
}
|
|
|
|
public static byte[] concatenate(byte[] bArr, byte[] bArr2) {
|
|
byte[] bArr3 = new byte[bArr.length + bArr2.length];
|
|
System.arraycopy(bArr, 0, bArr3, 0, bArr.length);
|
|
System.arraycopy(bArr2, 0, bArr3, bArr.length, bArr2.length);
|
|
return bArr3;
|
|
}
|
|
|
|
public static byte[] clone(byte[] bArr) {
|
|
if (bArr == null) {
|
|
return null;
|
|
}
|
|
byte[] bArr2 = new byte[bArr.length];
|
|
System.arraycopy(bArr, 0, bArr2, 0, bArr.length);
|
|
return bArr2;
|
|
}
|
|
|
|
private ByteUtils() {
|
|
}
|
|
}
|