blob: 02ac76bdbffb4ef1225eed2ab5e26c3fb2934642 [file] [log] [blame]
package org.bouncycastle.asn1.x509;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.DERBoolean;
import java.io.IOException;
/**
* an object for the elements in the X.509 V3 extension block.
*/
public class X509Extension
{
boolean critical;
ASN1OctetString value;
public X509Extension(
DERBoolean critical,
ASN1OctetString value)
{
this.critical = critical.isTrue();
this.value = value;
}
public X509Extension(
boolean critical,
ASN1OctetString value)
{
this.critical = critical;
this.value = value;
}
public boolean isCritical()
{
return critical;
}
public ASN1OctetString getValue()
{
return value;
}
public int hashCode()
{
if (this.isCritical())
{
return this.getValue().hashCode();
}
return ~this.getValue().hashCode();
}
public boolean equals(
Object o)
{
if (!(o instanceof X509Extension))
{
return false;
}
X509Extension other = (X509Extension)o;
return other.getValue().equals(this.getValue())
&& (other.isCritical() == this.isCritical());
}
/**
* Convert the value of the passed in extension to an object
* @param ext the extension to parse
* @return the object the value string contains
* @exception IllegalArgumentException if conversion is not possible
*/
public static ASN1Object convertValueToObject(
X509Extension ext)
throws IllegalArgumentException
{
try
{
return ASN1Object.fromByteArray(ext.getValue().getOctets());
}
catch (IOException e)
{
throw new IllegalArgumentException("can't convert extension: " + e);
}
}
}