public class NameConstraintsExtension extends Extension implements CertAttrSet<java.lang.String>, java.lang.Cloneable
The name constraints extension provides permitted and excluded subtrees that place restrictions on names that may be included within a certificate issued by a given CA. Restrictions may apply to the subject distinguished name or subject alternative names. Any name matching a restriction in the excluded subtrees field is invalid regardless of information appearing in the permitted subtrees.
The ASN.1 syntax for this is:
NameConstraints ::= SEQUENCE {
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL
}
GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
Extension,
CertAttrSet| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
EXCLUDED_SUBTREES |
static java.lang.String |
IDENT
Identifier for this attribute, to be used with the
get, set, delete methods of Certificate, x509 type.
|
static java.lang.String |
NAME
Attribute names.
|
static java.lang.String |
PERMITTED_SUBTREES |
critical, extensionId, extensionValue| Constructor and Description |
|---|
NameConstraintsExtension(java.lang.Boolean critical,
java.lang.Object value)
Create the extension from the passed DER encoded value.
|
NameConstraintsExtension(GeneralSubtrees permitted,
GeneralSubtrees excluded)
The default constructor for this class.
|
| Modifier and Type | Method and Description |
|---|---|
java.lang.Object |
clone()
Clone all objects that may be modified during certificate validation.
|
void |
delete(java.lang.String name)
Delete the attribute value.
|
void |
encode(java.io.OutputStream out)
Write the extension to the OutputStream.
|
java.lang.Object |
get(java.lang.String name)
Get the attribute value.
|
java.util.Enumeration<java.lang.String> |
getElements()
Return an enumeration of names of attributes existing within this
attribute.
|
java.lang.String |
getName()
Return the name of this attribute.
|
void |
merge(NameConstraintsExtension newConstraints)
Merge additional name constraints with existing ones.
|
void |
set(java.lang.String name,
java.lang.Object obj)
Set the attribute value.
|
java.lang.String |
toString()
Return the printable string.
|
boolean |
verify(GeneralNameInterface name)
check whether a name conforms to these NameConstraints.
|
boolean |
verify(java.security.cert.X509Certificate cert)
check whether a certificate conforms to these NameConstraints.
|
boolean |
verifyRFC822SpecialCase(X500Name subject)
Perform the RFC 822 special case check.
|
encode, equals, getExtensionId, getExtensionValue, hashCode, isCriticalpublic static final java.lang.String IDENT
public static final java.lang.String NAME
public static final java.lang.String PERMITTED_SUBTREES
public static final java.lang.String EXCLUDED_SUBTREES
public NameConstraintsExtension(GeneralSubtrees permitted, GeneralSubtrees excluded) throws java.io.IOException
permitted - the permitted GeneralSubtrees (null for optional).excluded - the excluded GeneralSubtrees (null for optional).java.io.IOExceptionpublic NameConstraintsExtension(java.lang.Boolean critical,
java.lang.Object value)
throws java.io.IOException
critical - true if the extension is to be treated as critical.value - an array of DER encoded bytes of the actual value.java.lang.ClassCastException - if value is not an array of bytesjava.io.IOException - on error.public java.lang.String toString()
toString in interface CertAttrSet<java.lang.String>toString in class Extensionpublic void encode(java.io.OutputStream out)
throws java.io.IOException
encode in interface CertAttrSet<java.lang.String>out - the OutputStream to write the extension to.java.io.IOException - on encoding errors.public void set(java.lang.String name,
java.lang.Object obj)
throws java.io.IOException
set in interface CertAttrSet<java.lang.String>name - the name of the attribute (e.g. "x509.info.key")obj - the attribute object.java.io.IOException - on other errors.public java.lang.Object get(java.lang.String name)
throws java.io.IOException
get in interface CertAttrSet<java.lang.String>name - the name of the attribute to return.java.io.IOException - on other errors.public void delete(java.lang.String name)
throws java.io.IOException
delete in interface CertAttrSet<java.lang.String>name - the name of the attribute to delete.java.io.IOException - on other errors.public java.util.Enumeration<java.lang.String> getElements()
getElements in interface CertAttrSet<java.lang.String>public java.lang.String getName()
getName in interface CertAttrSet<java.lang.String>public void merge(NameConstraintsExtension newConstraints) throws java.io.IOException
IETF RFC2459 specifies the processing of Name Constraints as follows:
(j) If permittedSubtrees is present in the certificate, set the constrained subtrees state variable to the intersection of its previous value and the value indicated in the extension field.
(k) If excludedSubtrees is present in the certificate, set the excluded subtrees state variable to the union of its previous value and the value indicated in the extension field.
newConstraints - additional NameConstraints to be appliedjava.io.IOException - on errorpublic boolean verify(java.security.cert.X509Certificate cert)
throws java.io.IOException
cert - X509Certificate to be verifiedjava.io.IOException - on errorpublic boolean verify(GeneralNameInterface name) throws java.io.IOException
name - GeneralNameInterface name to be verifiedjava.io.IOException - on errorpublic boolean verifyRFC822SpecialCase(X500Name subject) throws java.io.IOException
subject - the certificate's subject namejava.io.IOException - on errorpublic java.lang.Object clone()
clone in class java.lang.ObjectCopyright © 2020. All Rights Reserved.