use of org.bouncycastle.asn1.x509.GeneralSubtree in project xipki by xipki.
the class XmlX509CertprofileUtil method buildGeneralSubtree.
// method buildGeneralSubtrees
private static GeneralSubtree buildGeneralSubtree(GeneralSubtreeBaseType type) throws CertprofileException {
ParamUtil.requireNonNull("type", type);
GeneralName base = null;
if (type.getDirectoryName() != null) {
base = new GeneralName(X509Util.reverse(new X500Name(type.getDirectoryName())));
} else if (type.getDnsName() != null) {
base = new GeneralName(GeneralName.dNSName, type.getDnsName());
} else if (type.getIpAddress() != null) {
base = new GeneralName(GeneralName.iPAddress, type.getIpAddress());
} else if (type.getRfc822Name() != null) {
base = new GeneralName(GeneralName.rfc822Name, type.getRfc822Name());
} else if (type.getUri() != null) {
base = new GeneralName(GeneralName.uniformResourceIdentifier, type.getUri());
} else {
throw new RuntimeException("should not reach here, unknown child of GeneralSubtreeBaseType");
}
Integer min = type.getMinimum();
if (min != null && min < 0) {
throw new CertprofileException("negative minimum is not allowed: " + min);
}
BigInteger minimum = (min == null) ? null : BigInteger.valueOf(min.intValue());
Integer max = type.getMaximum();
if (max != null && max < 0) {
throw new CertprofileException("negative maximum is not allowed: " + max);
}
BigInteger maximum = (max == null) ? null : BigInteger.valueOf(max.intValue());
return new GeneralSubtree(base, minimum, maximum);
}
use of org.bouncycastle.asn1.x509.GeneralSubtree in project keystore-explorer by kaikramer.
the class DNameConstraints method okPressed.
private void okPressed() {
List<GeneralSubtree> permittedSubtrees = jgsPermittedSubtrees.getGeneralSubtrees().getGeneralSubtrees();
List<GeneralSubtree> excludedSubtrees = jgsExcludedSubtrees.getGeneralSubtrees().getGeneralSubtrees();
GeneralSubtree[] permittedSubtreesArray = permittedSubtrees.toArray(new GeneralSubtree[permittedSubtrees.size()]);
GeneralSubtree[] excludedSubtreesArray = excludedSubtrees.toArray(new GeneralSubtree[excludedSubtrees.size()]);
NameConstraints nameConstraints = new NameConstraints(permittedSubtreesArray, excludedSubtreesArray);
try {
value = nameConstraints.getEncoded(ASN1Encoding.DER);
} catch (IOException e) {
DError.displayError(this, e);
return;
}
closeDialog();
}
use of org.bouncycastle.asn1.x509.GeneralSubtree in project keystore-explorer by kaikramer.
the class JGeneralSubtrees method removeSelectedGeneralSubtree.
private void removeSelectedGeneralSubtree() {
int selectedRow = jtGeneralSubtrees.getSelectedRow();
if (selectedRow != -1) {
GeneralSubtree generalSubtree = (GeneralSubtree) jtGeneralSubtrees.getValueAt(selectedRow, 0);
generalSubtrees.getGeneralSubtrees().remove(generalSubtree);
reloadGeneralSubtreesTable();
selectFirstGeneralSubtreeInTable();
updateButtonControls();
}
}
use of org.bouncycastle.asn1.x509.GeneralSubtree in project keystore-explorer by kaikramer.
the class X509Ext method getNameConstraintsStringValue.
private static String getNameConstraintsStringValue(byte[] value) throws IOException {
// @formatter:off
/*
* NameConstraints ::= ASN1Sequence { permittedSubtrees [0]
* GeneralSubtrees OPTIONAL, excludedSubtrees [1] GeneralSubtrees
* OPTIONAL }
*
* GeneralSubtrees ::= ASN1Sequence SIZE (1..MAX) OF GeneralSubtree
*
* GeneralSubtree ::= ASN1Sequence { base GeneralName, minimum [0]
* BaseDistance DEFAULT nodistance, maximum [1] BaseDistance OPTIONAL }
*
* BaseDistance ::= ASN1Integer {nodistance(0) } (0..MAX)
*/
// @formatter:on
StringBuilder sb = new StringBuilder();
NameConstraints nameConstraints = NameConstraints.getInstance(value);
GeneralSubtrees permittedSubtrees = null;
if (nameConstraints.getPermittedSubtrees() != null && nameConstraints.getPermittedSubtrees().length != 0) {
permittedSubtrees = new GeneralSubtrees(nameConstraints.getPermittedSubtrees());
}
sb.append(res.getString("PermittedSubtrees"));
if (permittedSubtrees == null) {
sb.append(" ").append(res.getString("NoValue"));
sb.append(NEWLINE);
} else {
sb.append(NEWLINE);
int permitted = 0;
for (GeneralSubtree permittedSubtree : permittedSubtrees.getGeneralSubtrees()) {
permitted++;
sb.append(INDENT);
sb.append(MessageFormat.format(res.getString("PermittedSubtree"), permitted));
sb.append(NEWLINE);
sb.append(INDENT);
sb.append(INDENT);
sb.append(res.getString("Base"));
sb.append(NEWLINE);
GeneralName base = permittedSubtree.getBase();
sb.append(INDENT);
sb.append(INDENT);
sb.append(INDENT);
sb.append(GeneralNameUtil.toString(base));
sb.append(NEWLINE);
BigInteger minimum = permittedSubtree.getMinimum();
// Default 'nodistance' value
int minimumInt = 0;
if (minimum != null) {
minimumInt = minimum.intValue();
}
sb.append(INDENT);
sb.append(INDENT);
sb.append(MessageFormat.format(res.getString("Minimum"), minimumInt));
sb.append(NEWLINE);
BigInteger maximum = permittedSubtree.getMaximum();
if (maximum != null) {
int maximumInt = maximum.intValue();
sb.append(INDENT);
sb.append(INDENT);
sb.append(MessageFormat.format(res.getString("Maximum"), maximumInt));
sb.append(NEWLINE);
}
}
}
GeneralSubtree[] excludedSubtreeArray = nameConstraints.getExcludedSubtrees();
sb.append(res.getString("ExcludedSubtrees"));
if (excludedSubtreeArray == null) {
// Optional
sb.append(" ").append(res.getString("NoValue"));
sb.append(NEWLINE);
} else {
GeneralSubtrees excludedSubtrees = new GeneralSubtrees(excludedSubtreeArray);
sb.append(NEWLINE);
int excluded = 0;
for (GeneralSubtree excludedSubtree : excludedSubtrees.getGeneralSubtrees()) {
excluded++;
sb.append(INDENT);
sb.append(MessageFormat.format(res.getString("ExcludedSubtree"), excluded));
sb.append(NEWLINE);
sb.append(INDENT);
sb.append(INDENT);
sb.append(res.getString("Base"));
sb.append(NEWLINE);
GeneralName base = excludedSubtree.getBase();
sb.append(INDENT);
sb.append(INDENT);
sb.append(INDENT);
sb.append(GeneralNameUtil.toString(base));
sb.append(NEWLINE);
BigInteger minimum = excludedSubtree.getMinimum();
int minimumInt = minimum.intValue();
sb.append(INDENT);
sb.append(INDENT);
sb.append(MessageFormat.format(res.getString("Minimum"), minimumInt));
sb.append(NEWLINE);
BigInteger maximum = excludedSubtree.getMaximum();
if (maximum != null) {
int maximumInt = maximum.intValue();
sb.append(INDENT);
sb.append(INDENT);
sb.append(MessageFormat.format(res.getString("Maximum"), maximumInt));
sb.append(NEWLINE);
}
}
}
return sb.toString();
}
use of org.bouncycastle.asn1.x509.GeneralSubtree in project LinLong-Java by zhenwei1108.
the class RFC3280CertPathUtilities method prepareNextCertG.
protected static void prepareNextCertG(CertPath certPath, int index, PKIXNameConstraintValidator nameConstraintValidator) throws CertPathValidatorException {
List certs = certPath.getCertificates();
X509Certificate cert = (X509Certificate) certs.get(index);
//
// (g) handle the name constraints extension
//
NameConstraints nc = null;
try {
ASN1Sequence ncSeq = ASN1Sequence.getInstance(CertPathValidatorUtilities.getExtensionValue(cert, RFC3280CertPathUtilities.NAME_CONSTRAINTS));
if (ncSeq != null) {
nc = NameConstraints.getInstance(ncSeq);
}
} catch (Exception e) {
throw new ExtCertPathValidatorException("Name constraints extension could not be decoded.", e, certPath, index);
}
if (nc != null) {
//
// (g) (1) permitted subtrees
//
GeneralSubtree[] permitted = nc.getPermittedSubtrees();
if (permitted != null) {
try {
nameConstraintValidator.intersectPermittedSubtree(permitted);
} catch (Exception ex) {
throw new ExtCertPathValidatorException("Permitted subtrees cannot be build from name constraints extension.", ex, certPath, index);
}
}
//
// (g) (2) excluded subtrees
//
GeneralSubtree[] excluded = nc.getExcludedSubtrees();
if (excluded != null) {
for (int i = 0; i != excluded.length; i++) {
try {
nameConstraintValidator.addExcludedSubtree(excluded[i]);
} catch (Exception ex) {
throw new ExtCertPathValidatorException("Excluded subtrees cannot be build from name constraints extension.", ex, certPath, index);
}
}
}
}
}
Aggregations