package org.bouncycastle.asn1.x509;
import java.io.IOException;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.DERBoolean;
an object for the elements in the X.509 V3 extension block.
/**
* an object for the elements in the X.509 V3 extension block.
*/
public class X509Extension
{
Subject Directory Attributes
/**
* Subject Directory Attributes
*/
public static final ASN1ObjectIdentifier subjectDirectoryAttributes = new ASN1ObjectIdentifier("2.5.29.9");
Subject Key Identifier
/**
* Subject Key Identifier
*/
public static final ASN1ObjectIdentifier subjectKeyIdentifier = new ASN1ObjectIdentifier("2.5.29.14");
Key Usage
/**
* Key Usage
*/
public static final ASN1ObjectIdentifier keyUsage = new ASN1ObjectIdentifier("2.5.29.15");
Private Key Usage Period
/**
* Private Key Usage Period
*/
public static final ASN1ObjectIdentifier privateKeyUsagePeriod = new ASN1ObjectIdentifier("2.5.29.16");
Subject Alternative Name
/**
* Subject Alternative Name
*/
public static final ASN1ObjectIdentifier subjectAlternativeName = new ASN1ObjectIdentifier("2.5.29.17");
Issuer Alternative Name
/**
* Issuer Alternative Name
*/
public static final ASN1ObjectIdentifier issuerAlternativeName = new ASN1ObjectIdentifier("2.5.29.18");
Basic Constraints
/**
* Basic Constraints
*/
public static final ASN1ObjectIdentifier basicConstraints = new ASN1ObjectIdentifier("2.5.29.19");
CRL Number
/**
* CRL Number
*/
public static final ASN1ObjectIdentifier cRLNumber = new ASN1ObjectIdentifier("2.5.29.20");
Reason code
/**
* Reason code
*/
public static final ASN1ObjectIdentifier reasonCode = new ASN1ObjectIdentifier("2.5.29.21");
Hold Instruction Code
/**
* Hold Instruction Code
*/
public static final ASN1ObjectIdentifier instructionCode = new ASN1ObjectIdentifier("2.5.29.23");
Invalidity Date
/**
* Invalidity Date
*/
public static final ASN1ObjectIdentifier invalidityDate = new ASN1ObjectIdentifier("2.5.29.24");
Delta CRL indicator
/**
* Delta CRL indicator
*/
public static final ASN1ObjectIdentifier deltaCRLIndicator = new ASN1ObjectIdentifier("2.5.29.27");
Issuing Distribution Point
/**
* Issuing Distribution Point
*/
public static final ASN1ObjectIdentifier issuingDistributionPoint = new ASN1ObjectIdentifier("2.5.29.28");
Certificate Issuer
/**
* Certificate Issuer
*/
public static final ASN1ObjectIdentifier certificateIssuer = new ASN1ObjectIdentifier("2.5.29.29");
Name Constraints
/**
* Name Constraints
*/
public static final ASN1ObjectIdentifier nameConstraints = new ASN1ObjectIdentifier("2.5.29.30");
CRL Distribution Points
/**
* CRL Distribution Points
*/
public static final ASN1ObjectIdentifier cRLDistributionPoints = new ASN1ObjectIdentifier("2.5.29.31");
Certificate Policies
/**
* Certificate Policies
*/
public static final ASN1ObjectIdentifier certificatePolicies = new ASN1ObjectIdentifier("2.5.29.32");
Policy Mappings
/**
* Policy Mappings
*/
public static final ASN1ObjectIdentifier policyMappings = new ASN1ObjectIdentifier("2.5.29.33");
Authority Key Identifier
/**
* Authority Key Identifier
*/
public static final ASN1ObjectIdentifier authorityKeyIdentifier = new ASN1ObjectIdentifier("2.5.29.35");
Policy Constraints
/**
* Policy Constraints
*/
public static final ASN1ObjectIdentifier policyConstraints = new ASN1ObjectIdentifier("2.5.29.36");
Extended Key Usage
/**
* Extended Key Usage
*/
public static final ASN1ObjectIdentifier extendedKeyUsage = new ASN1ObjectIdentifier("2.5.29.37");
Freshest CRL
/**
* Freshest CRL
*/
public static final ASN1ObjectIdentifier freshestCRL = new ASN1ObjectIdentifier("2.5.29.46");
Inhibit Any Policy
/**
* Inhibit Any Policy
*/
public static final ASN1ObjectIdentifier inhibitAnyPolicy = new ASN1ObjectIdentifier("2.5.29.54");
Authority Info Access
/**
* Authority Info Access
*/
public static final ASN1ObjectIdentifier authorityInfoAccess = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.1");
Subject Info Access
/**
* Subject Info Access
*/
public static final ASN1ObjectIdentifier subjectInfoAccess = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.11");
Logo Type
/**
* Logo Type
*/
public static final ASN1ObjectIdentifier logoType = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.12");
BiometricInfo
/**
* BiometricInfo
*/
public static final ASN1ObjectIdentifier biometricInfo = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.2");
QCStatements
/**
* QCStatements
*/
public static final ASN1ObjectIdentifier qCStatements = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.3");
Audit identity extension in attribute certificates.
/**
* Audit identity extension in attribute certificates.
*/
public static final ASN1ObjectIdentifier auditIdentity = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.4");
NoRevAvail extension in attribute certificates.
/**
* NoRevAvail extension in attribute certificates.
*/
public static final ASN1ObjectIdentifier noRevAvail = new ASN1ObjectIdentifier("2.5.29.56");
TargetInformation extension in attribute certificates.
/**
* TargetInformation extension in attribute certificates.
*/
public static final ASN1ObjectIdentifier targetInformation = new ASN1ObjectIdentifier("2.5.29.55");
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 ASN1Encodable getParsedValue()
{
return convertValueToObject(this);
}
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
Params: - ext – the extension to parse
Throws: - IllegalArgumentException – if conversion is not possible
Returns: the object the value string contains
/**
* 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);
}
}
}