Red Hat Application Migration Toolkit
package iaik.x509.extensions;
import iaik.asn1.ASN;
import iaik.asn1.ASN1Object;
import iaik.asn1.ASN1Type;
import iaik.asn1.BIT_STRING;
import iaik.asn1.BOOLEAN;
import iaik.asn1.CON_SPEC;
import iaik.asn1.CodingException;
import iaik.asn1.ObjectID;
import iaik.asn1.SEQUENCE;
import iaik.asn1.structures.GeneralNames;
import iaik.asn1.structures.RDN;
import iaik.utils.InternalErrorException;
import iaik.x509.V3Extension;
import iaik.x509.X509ExtensionException;
public class IssuingDistributionPoint extends V3Extension {
private boolean f = false;
private boolean e = false;
private int a = -1;
private boolean c = false;
private boolean b = false;
private ASN1Type d;
public static final ObjectID oid = new ObjectID("2.5.29.28", "IssuingDistributionPoint");
public String toString() {
StringBuffer var1 = new StringBuffer();
if(this.d != null) {
var1.append("DistributionPoint: ");
var1.append(this.d.toString() + "\n");
}
var1.append("onlyContainsUserCerts: " + this.b + "\n");
var1.append("onlyContainsCaCerts: " + this.c + "\n");
if(this.a > 0) {
var1.append("reasonFlags: ");
if((this.a & 1) > 0) {
var1.append("unused | ");
}
if((this.a & 2) > 0) {
var1.append("keyCompromise | ");
}
if((this.a & 4) > 0) {
var1.append("cACompromise | ");
}
if((this.a & 8) > 0) {
var1.append("affiliationChanged|");
}
if((this.a & 16) > 0) {
var1.append("superseded | ");
}
if((this.a & 32) > 0) {
var1.append("cessationOfOperation | ");
}
if((this.a & 64) > 0) {
var1.append("certificateHold | ");
}
var1.setLength(var1.length() - 3);
var1.append("\n");
}
var1.append("indirectCRL: " + this.e + "\n");
var1.append("onlyContainsAttributeCerts: " + this.f + "\n");
var1.setLength(var1.length() - 1);
return var1.toString();
}
public ASN1Object toASN1Object() throws X509ExtensionException {
if(this.b && this.c) {
throw new X509ExtensionException("OnlyContainsUserCerts and OnlyContainsCaCerts are not allowed both to be true!");
} else {
boolean var1 = true;
SEQUENCE var2 = new SEQUENCE();
try {
if(this.d != null) {
boolean var3 = true;
byte var6;
if(this.d instanceof GeneralNames) {
var6 = 0;
} else {
if(!(this.d instanceof RDN)) {
throw new InternalErrorException("DistributionPointName: Unknown type [create]!");
}
var6 = 1;
}
CON_SPEC var4 = new CON_SPEC(var6, this.d.toASN1Object(), var1);
var2.addComponent(new CON_SPEC(0, var4));
}
if(this.b) {
var2.addComponent(new CON_SPEC(1, new BOOLEAN(this.b), var1));
}
if(this.c) {
var2.addComponent(new CON_SPEC(2, new BOOLEAN(this.c), var1));
}
if(this.a != -1) {
StringBuffer var7 = new StringBuffer(Integer.toBinaryString(this.a));
var7.reverse();
var2.addComponent(new CON_SPEC(3, new BIT_STRING(var7.toString()), var1));
}
if(this.e) {
var2.addComponent(new CON_SPEC(4, new BOOLEAN(this.e), var1));
}
if(this.f) {
var2.addComponent(new CON_SPEC(5, new BOOLEAN(this.f), var1));
}
return var2;
} catch (CodingException var5) {
throw new X509ExtensionException(var5.getMessage());
}
}
}
public void setReasonFlags(int var1) {
this.a = var1;
}
public void setOnlyContainsUserCerts(boolean var1) {
this.b = var1;
}
public void setOnlyContainsCaCerts(boolean var1) {
this.c = var1;
}
public void setOnlyContainsAttributeCerts(boolean var1) {
this.f = var1;
}
public void setIndirectCRL(boolean var1) {
this.e = var1;
}
public void setDistributionPointName(ASN1Type var1) throws IllegalArgumentException {
if(!(var1 instanceof GeneralNames) && !(var1 instanceof RDN)) {
throw new IllegalArgumentException("Only instances of GeneralNames or RDN are accepted!");
} else {
this.d = var1;
}
}
public void init(ASN1Object var1) throws X509ExtensionException {
if(!var1.isA(ASN.SEQUENCE)) {
throw new X509ExtensionException("No DistributionPoint!");
} else {
try {
for(int var2 = 0; var2 < var1.countComponents(); ++var2) {
CON_SPEC var3 = (CON_SPEC)var1.getComponentAt(var2);
int var4 = var3.getAsnType().getTag();
switch(var4) {
case 0:
CON_SPEC var5 = (CON_SPEC)var3.getValue();
int var6 = var5.getAsnType().getTag();
if(var6 == 0) {
var5.forceImplicitlyTagged(ASN.SEQUENCE);
this.d = new GeneralNames((ASN1Object)var5.getValue());
} else {
if(var6 != 1) {
throw new CodingException("DistributionPointName: Unknown type [parse]!");
}
var5.forceImplicitlyTagged(ASN.SET);
this.d = new RDN((ASN1Object)var5.getValue());
}
break;
case 1:
var3.forceImplicitlyTagged(ASN.BOOLEAN);
BOOLEAN var7 = (BOOLEAN)var3.getValue();
this.b = ((Boolean)var7.getValue()).booleanValue();
break;
case 2:
var3.forceImplicitlyTagged(ASN.BOOLEAN);
BOOLEAN var8 = (BOOLEAN)var3.getValue();
this.c = ((Boolean)var8.getValue()).booleanValue();
break;
case 3:
var3.forceImplicitlyTagged(ASN.BIT_STRING);
BIT_STRING var9 = (BIT_STRING)var3.getValue();
StringBuffer var10 = (new StringBuffer(var9.getBinaryString())).reverse();
this.a = Integer.parseInt(var10.toString(), 2);
break;
case 4:
var3.forceImplicitlyTagged(ASN.BOOLEAN);
BOOLEAN var11 = (BOOLEAN)var3.getValue();
this.e = ((Boolean)var11.getValue()).booleanValue();
break;
case 5:
var3.forceImplicitlyTagged(ASN.BOOLEAN);
BOOLEAN var12 = (BOOLEAN)var3.getValue();
this.f = ((Boolean)var12.getValue()).booleanValue();
break;
default:
throw new CodingException("Invalid issuingDistributionPoint: unsupported tag number: " + var4);
}
}
if(this.b && this.c) {
throw new X509ExtensionException("OnlyContainsUserCerts and OnlyContainsCaCerts are not allowed both to be true!");
}
} catch (Exception var13) {
throw new X509ExtensionException(var13.getMessage());
}
}
}
public int hashCode() {
return oid.hashCode();
}
public int getReasonFlags() {
return this.a;
}
public boolean getOnlyContainsUserCerts() {
return this.b;
}
public boolean getOnlyContainsCaCerts() {
return this.c;
}
public boolean getOnlyContainsAttributeCerts() {
return this.f;
}
public ObjectID getObjectID() {
return oid;
}
public boolean getIndirectCRL() {
return this.e;
}
public ASN1Type getDistributionPointName() {
return this.d;
}
}