what-the-bank/sources/org/bouncycastle/asn1/ASN1ObjectIdentifier.java

333 lines
12 KiB
Java

package org.bouncycastle.asn1;
import com.google.common.base.Ascii;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import org.bouncycastle.util.Arrays;
/* loaded from: classes6.dex */
public class ASN1ObjectIdentifier extends ASN1Primitive {
private static final long LONG_LIMIT = 72057594037927808L;
private static final Map pool = new HashMap();
private byte[] body;
private final String identifier;
/* JADX INFO: Access modifiers changed from: package-private */
@Override // org.bouncycastle.asn1.ASN1Primitive
public boolean isConstructed() {
return false;
}
public String toString() {
return getId();
}
public boolean on(ASN1ObjectIdentifier aSN1ObjectIdentifier) {
String id = getId();
String id2 = aSN1ObjectIdentifier.getId();
return id.length() > id2.length() && id.charAt(id2.length()) == '.' && id.startsWith(id2);
}
public ASN1ObjectIdentifier intern() {
Map map = pool;
synchronized (map) {
OidHandle oidHandle = new OidHandle(getBody());
ASN1ObjectIdentifier aSN1ObjectIdentifier = (ASN1ObjectIdentifier) map.get(oidHandle);
if (aSN1ObjectIdentifier != null) {
return aSN1ObjectIdentifier;
}
map.put(oidHandle, this);
return this;
}
}
@Override // org.bouncycastle.asn1.ASN1Primitive, org.bouncycastle.asn1.ASN1Object
public int hashCode() {
return this.identifier.hashCode();
}
public String getId() {
return this.identifier;
}
/* JADX INFO: Access modifiers changed from: package-private */
@Override // org.bouncycastle.asn1.ASN1Primitive
public int encodedLength() throws IOException {
int length = getBody().length;
return StreamUtil.calculateBodyLength(length) + 1 + length;
}
/* JADX INFO: Access modifiers changed from: package-private */
@Override // org.bouncycastle.asn1.ASN1Primitive
public void encode(ASN1OutputStream aSN1OutputStream) throws IOException {
byte[] body = getBody();
aSN1OutputStream.write(6);
aSN1OutputStream.writeLength(body.length);
aSN1OutputStream.write(body);
}
public ASN1ObjectIdentifier branch(String str) {
return new ASN1ObjectIdentifier(this, str);
}
@Override // org.bouncycastle.asn1.ASN1Primitive
boolean asn1Equals(ASN1Primitive aSN1Primitive) {
if (aSN1Primitive == this) {
return true;
}
if (aSN1Primitive instanceof ASN1ObjectIdentifier) {
return this.identifier.equals(((ASN1ObjectIdentifier) aSN1Primitive).identifier);
}
return false;
}
private void writeField(ByteArrayOutputStream byteArrayOutputStream, BigInteger bigInteger) {
int bitLength = (bigInteger.bitLength() + 6) / 7;
if (bitLength == 0) {
byteArrayOutputStream.write(0);
return;
}
byte[] bArr = new byte[bitLength];
int i = bitLength - 1;
for (int i2 = i; i2 >= 0; i2--) {
bArr[i2] = (byte) ((bigInteger.intValue() & 127) | 128);
bigInteger = bigInteger.shiftRight(7);
}
bArr[i] = (byte) (bArr[i] & Ascii.DEL);
byteArrayOutputStream.write(bArr, 0, bitLength);
}
private void writeField(ByteArrayOutputStream byteArrayOutputStream, long j) {
byte[] bArr = new byte[9];
int i = 8;
bArr[8] = (byte) (((int) j) & 127);
while (j >= 128) {
j >>= 7;
i--;
bArr[i] = (byte) ((((int) j) & 127) | 128);
}
byteArrayOutputStream.write(bArr, i, 9 - i);
}
private static boolean isValidIdentifier(String str) {
char charAt;
if (str.length() < 3 || str.charAt(1) != '.' || (charAt = str.charAt(0)) < '0' || charAt > '2') {
return false;
}
return isValidBranchID(str, 2);
}
/* JADX WARN: Code restructure failed: missing block: B:12:0x001a, code lost:
if (r3 != '.') goto L17;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private static boolean isValidBranchID(java.lang.String r5, int r6) {
/*
int r0 = r5.length()
L4:
r1 = 0
r2 = r1
L6:
int r0 = r0 + (-1)
if (r0 < r6) goto L1f
char r3 = r5.charAt(r0)
r4 = 48
if (r4 > r3) goto L18
r4 = 57
if (r3 > r4) goto L18
r2 = 1
goto L6
L18:
r4 = 46
if (r3 != r4) goto L1e
if (r2 != 0) goto L4
L1e:
return r1
L1f:
return r2
*/
throw new UnsupportedOperationException("Method not decompiled: org.bouncycastle.asn1.ASN1ObjectIdentifier.isValidBranchID(java.lang.String, int):boolean");
}
public static ASN1ObjectIdentifier getInstance(ASN1TaggedObject aSN1TaggedObject, boolean z) {
ASN1Primitive object = aSN1TaggedObject.getObject();
return (z || (object instanceof ASN1ObjectIdentifier)) ? getInstance(object) : fromOctetString(ASN1OctetString.getInstance(aSN1TaggedObject.getObject()).getOctets());
}
public static ASN1ObjectIdentifier getInstance(Object obj) {
if (obj == null || (obj instanceof ASN1ObjectIdentifier)) {
return (ASN1ObjectIdentifier) obj;
}
if (obj instanceof ASN1Encodable) {
ASN1Encodable aSN1Encodable = (ASN1Encodable) obj;
if (aSN1Encodable.toASN1Primitive() instanceof ASN1ObjectIdentifier) {
return (ASN1ObjectIdentifier) aSN1Encodable.toASN1Primitive();
}
}
if (!(obj instanceof byte[])) {
StringBuilder sb = new StringBuilder("illegal object in getInstance: ");
sb.append(obj.getClass().getName());
throw new IllegalArgumentException(sb.toString());
}
try {
return (ASN1ObjectIdentifier) fromByteArray((byte[]) obj);
} catch (IOException e) {
StringBuilder sb2 = new StringBuilder("failed to construct object identifier from byte[]: ");
sb2.append(e.getMessage());
throw new IllegalArgumentException(sb2.toString());
}
}
private byte[] getBody() {
byte[] bArr;
synchronized (this) {
if (this.body == null) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
doOutput(byteArrayOutputStream);
this.body = byteArrayOutputStream.toByteArray();
}
bArr = this.body;
}
return bArr;
}
/* JADX INFO: Access modifiers changed from: package-private */
public static ASN1ObjectIdentifier fromOctetString(byte[] bArr) {
ASN1ObjectIdentifier aSN1ObjectIdentifier;
OidHandle oidHandle = new OidHandle(bArr);
Map map = pool;
synchronized (map) {
aSN1ObjectIdentifier = (ASN1ObjectIdentifier) map.get(oidHandle);
}
return aSN1ObjectIdentifier != null ? aSN1ObjectIdentifier : new ASN1ObjectIdentifier(bArr);
}
private void doOutput(ByteArrayOutputStream byteArrayOutputStream) {
OIDTokenizer oIDTokenizer = new OIDTokenizer(this.identifier);
int parseInt = Integer.parseInt(oIDTokenizer.nextToken()) * 40;
String nextToken = oIDTokenizer.nextToken();
if (nextToken.length() <= 18) {
writeField(byteArrayOutputStream, parseInt + Long.parseLong(nextToken));
} else {
writeField(byteArrayOutputStream, new BigInteger(nextToken).add(BigInteger.valueOf(parseInt)));
}
while (oIDTokenizer.hasMoreTokens()) {
String nextToken2 = oIDTokenizer.nextToken();
if (nextToken2.length() <= 18) {
writeField(byteArrayOutputStream, Long.parseLong(nextToken2));
} else {
writeField(byteArrayOutputStream, new BigInteger(nextToken2));
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes6.dex */
public static class OidHandle {
private final byte[] enc;
private int key;
public int hashCode() {
return this.key;
}
public boolean equals(Object obj) {
if (obj instanceof OidHandle) {
return Arrays.areEqual(this.enc, ((OidHandle) obj).enc);
}
return false;
}
OidHandle(byte[] bArr) {
this.key = Arrays.hashCode(bArr);
this.enc = bArr;
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public ASN1ObjectIdentifier(byte[] bArr) {
StringBuffer stringBuffer = new StringBuffer();
boolean z = true;
long j = 0;
BigInteger bigInteger = null;
for (int i = 0; i != bArr.length; i++) {
byte b = bArr[i];
if (j <= LONG_LIMIT) {
long j2 = j + (b & Ascii.DEL);
if ((b & 128) == 0) {
if (z) {
if (j2 < 40) {
stringBuffer.append('0');
} else if (j2 < 80) {
stringBuffer.append('1');
j2 -= 40;
} else {
stringBuffer.append('2');
j2 -= 80;
}
z = false;
}
stringBuffer.append('.');
stringBuffer.append(j2);
j = 0;
} else {
j = j2 << 7;
}
} else {
BigInteger or = (bigInteger == null ? BigInteger.valueOf(j) : bigInteger).or(BigInteger.valueOf(b & Ascii.DEL));
if ((b & 128) == 0) {
if (z) {
stringBuffer.append('2');
or = or.subtract(BigInteger.valueOf(80L));
z = false;
}
stringBuffer.append('.');
stringBuffer.append(or);
bigInteger = null;
j = 0;
} else {
bigInteger = or.shiftLeft(7);
}
}
}
this.identifier = stringBuffer.toString();
this.body = Arrays.clone(bArr);
}
/* JADX INFO: Access modifiers changed from: package-private */
public ASN1ObjectIdentifier(ASN1ObjectIdentifier aSN1ObjectIdentifier, String str) {
if (!isValidBranchID(str, 0)) {
StringBuilder sb = new StringBuilder("string ");
sb.append(str);
sb.append(" not a valid OID branch");
throw new IllegalArgumentException(sb.toString());
}
StringBuilder sb2 = new StringBuilder();
sb2.append(aSN1ObjectIdentifier.getId());
sb2.append(".");
sb2.append(str);
this.identifier = sb2.toString();
}
public ASN1ObjectIdentifier(String str) {
if (str == null) {
throw new IllegalArgumentException("'identifier' cannot be null");
}
if (isValidIdentifier(str)) {
this.identifier = str;
return;
}
StringBuilder sb = new StringBuilder("string ");
sb.append(str);
sb.append(" not an OID");
throw new IllegalArgumentException(sb.toString());
}
}