home *** CD-ROM | disk | FTP | other *** search
- package sun.security.util;
-
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.Serializable;
-
- public final class ObjectIdentifier implements Serializable {
- private int[] components;
- private int componentLen;
- private static final int allocationQuantum = 5;
-
- public ObjectIdentifier(int[] var1) {
- try {
- this.components = (int[])var1.clone();
- this.componentLen = var1.length;
- } catch (Throwable var2) {
- System.out.println("X509.ObjectIdentifier(), no cloning!");
- }
- }
-
- ObjectIdentifier(DerInputStream var1) throws IOException {
- byte var2 = (byte)var1.getByte();
- if (var2 != 6) {
- throw new IOException("X509.ObjectIdentifier() -- data isn't an object ID (tag = " + var2 + ")");
- } else {
- int var3 = var1.available() - var1.getLength() - 1;
- if (var3 < 0) {
- throw new IOException("X509.ObjectIdentifier() -- not enough data");
- } else {
- this.initFromEncoding(var1, var3);
- }
- }
- }
-
- ObjectIdentifier(DerInputBuffer var1) throws IOException {
- this.initFromEncoding(new DerInputStream(var1), 0);
- }
-
- private void initFromEncoding(DerInputStream var1, int var2) throws IOException {
- boolean var4 = true;
- this.components = new int[5];
- this.componentLen = 0;
-
- while(var1.available() > var2) {
- int var3 = getComponent(var1);
- if (var4) {
- byte var5;
- if (var3 < 40) {
- var5 = 0;
- } else if (var3 < 80) {
- var5 = 1;
- } else {
- var5 = 2;
- }
-
- int var6 = var3 - var5 * 40;
- this.components[0] = var5;
- this.components[1] = var6;
- this.componentLen = 2;
- var4 = false;
- } else {
- if (this.componentLen >= this.components.length) {
- int[] var7 = new int[this.components.length + 5];
- System.arraycopy(this.components, 0, var7, 0, this.components.length);
- this.components = var7;
- }
-
- this.components[this.componentLen++] = var3;
- }
- }
-
- if (var1.available() != var2) {
- throw new IOException("X509.ObjectIdentifier() -- malformed input data");
- }
- }
-
- void emit(DerOutputStream var1) throws IOException {
- DerOutputStream var2 = new DerOutputStream();
- ((ByteArrayOutputStream)var2).write(this.components[0] * 40 + this.components[1]);
-
- for(int var3 = 2; var3 < this.componentLen; ++var3) {
- putComponent(var2, this.components[var3]);
- }
-
- var1.write((byte)6, var2);
- }
-
- private static int getComponent(DerInputStream var0) throws IOException {
- int var2 = 0;
-
- for(int var1 = 0; var2 < 4; ++var2) {
- var1 <<= 7;
- int var3 = var0.getByte();
- var1 |= var3 & 127;
- if ((var3 & 128) == 0) {
- return var1;
- }
- }
-
- throw new IOException("X509.OID, component value too big");
- }
-
- private static void putComponent(DerOutputStream var0, int var1) throws IOException {
- byte[] var3 = new byte[4];
-
- int var2;
- for(var2 = 0; var2 < 4; ++var2) {
- var3[var2] = (byte)(var1 & 127);
- var1 >>>= 7;
- if (var1 == 0) {
- break;
- }
- }
-
- while(var2 > 0) {
- ((ByteArrayOutputStream)var0).write(var3[var2] | 128);
- --var2;
- }
-
- ((ByteArrayOutputStream)var0).write(var3[0]);
- }
-
- public boolean precedes(ObjectIdentifier var1) {
- if (var1 != this && this.componentLen >= var1.componentLen) {
- if (var1.componentLen < this.componentLen) {
- return true;
- } else {
- for(int var2 = 0; var2 < this.componentLen; ++var2) {
- if (var1.components[var2] < this.components[var2]) {
- return true;
- }
- }
-
- return false;
- }
- } else {
- return false;
- }
- }
-
- public boolean equals(Object var1) {
- return var1 instanceof ObjectIdentifier ? this.equals((ObjectIdentifier)var1) : false;
- }
-
- public boolean equals(ObjectIdentifier var1) {
- if (var1 == this) {
- return true;
- } else if (this.componentLen != var1.componentLen) {
- return false;
- } else {
- for(int var2 = 0; var2 < this.componentLen; ++var2) {
- if (this.components[var2] != var1.components[var2]) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- public int hashCode() {
- return this.toString().hashCode();
- }
-
- public String toString() {
- int var2 = 0;
-
- String var1;
- for(var1 = ""; var2 < this.componentLen; ++var2) {
- if (var2 != 0) {
- var1 = var1 + ".";
- }
-
- var1 = var1 + this.components[var2];
- }
-
- return var1;
- }
- }
-