use of org.xipki.ca.api.profile.CertprofileException in project xipki by xipki.
the class X509CertprofileQa method buildConstantExtesions.
public static Map<ASN1ObjectIdentifier, QaExtensionValue> buildConstantExtesions(ExtensionsType extensionsType) throws CertprofileException {
if (extensionsType == null) {
return null;
}
Map<ASN1ObjectIdentifier, QaExtensionValue> map = new HashMap<>();
for (ExtensionType m : extensionsType.getExtension()) {
if (m.getValue() == null || !(m.getValue().getAny() instanceof ConstantExtValue)) {
continue;
}
ASN1ObjectIdentifier oid = new ASN1ObjectIdentifier(m.getType().getValue());
if (Extension.subjectAlternativeName.equals(oid) || Extension.subjectInfoAccess.equals(oid) || Extension.biometricInfo.equals(oid)) {
continue;
}
ConstantExtValue extConf = (ConstantExtValue) m.getValue().getAny();
byte[] encodedValue = extConf.getValue();
ASN1StreamParser parser = new ASN1StreamParser(encodedValue);
try {
parser.readObject();
} catch (IOException ex) {
throw new CertprofileException("could not parse the constant extension value", ex);
}
QaExtensionValue extension = new QaExtensionValue(m.isCritical(), encodedValue);
map.put(oid, extension);
}
if (CollectionUtil.isEmpty(map)) {
return null;
}
return Collections.unmodifiableMap(map);
}
use of org.xipki.ca.api.profile.CertprofileException in project xipki by xipki.
the class XmlX509CertprofileUtil method buildExtensionControls.
// method buildKeyAlgorithms
public static Map<ASN1ObjectIdentifier, ExtensionControl> buildExtensionControls(ExtensionsType extensionsType) throws CertprofileException {
ParamUtil.requireNonNull("extensionsType", extensionsType);
// Extension controls
Map<ASN1ObjectIdentifier, ExtensionControl> controls = new HashMap<>();
for (ExtensionType m : extensionsType.getExtension()) {
ASN1ObjectIdentifier oid = new ASN1ObjectIdentifier(m.getType().getValue());
if (controls.containsKey(oid)) {
throw new CertprofileException("duplicated definition of extension " + oid.getId());
}
ExtensionControl ctrl = new ExtensionControl(m.isCritical(), m.isRequired(), m.isPermittedInRequest());
controls.put(oid, ctrl);
}
return Collections.unmodifiableMap(controls);
}
use of org.xipki.ca.api.profile.CertprofileException in project xipki by xipki.
the class XmlX509CertprofileUtil method buildGeneralNameMode.
// method buildPolicyConstrains
public static Set<GeneralNameMode> buildGeneralNameMode(GeneralNameType name) throws CertprofileException {
ParamUtil.requireNonNull("name", name);
Set<GeneralNameMode> ret = new HashSet<>();
if (name.getOtherName() != null) {
List<OidWithDescType> list = name.getOtherName().getType();
Set<ASN1ObjectIdentifier> set = new HashSet<>();
for (OidWithDescType entry : list) {
set.add(new ASN1ObjectIdentifier(entry.getValue()));
}
ret.add(new GeneralNameMode(GeneralNameTag.otherName, set));
}
if (name.getRfc822Name() != null) {
ret.add(new GeneralNameMode(GeneralNameTag.rfc822Name));
}
if (name.getDnsName() != null) {
ret.add(new GeneralNameMode(GeneralNameTag.dNSName));
}
if (name.getDirectoryName() != null) {
ret.add(new GeneralNameMode(GeneralNameTag.directoryName));
}
if (name.getEdiPartyName() != null) {
ret.add(new GeneralNameMode(GeneralNameTag.ediPartyName));
}
if (name.getUniformResourceIdentifier() != null) {
ret.add(new GeneralNameMode(GeneralNameTag.uniformResourceIdentifier));
}
if (name.getIpAddress() != null) {
ret.add(new GeneralNameMode(GeneralNameTag.iPAddress));
}
if (name.getRegisteredID() != null) {
ret.add(new GeneralNameMode(GeneralNameTag.registeredID));
}
if (ret.isEmpty()) {
throw new CertprofileException("GeneralNameType must not be empty");
}
return ret;
}
use of org.xipki.ca.api.profile.CertprofileException in project xipki by xipki.
the class XmlX509CertprofileUtil method buildConstantExtesions.
// method buildExtKeyUsageOptions
public static Map<ASN1ObjectIdentifier, ExtensionValue> buildConstantExtesions(ExtensionsType extensionsType) throws CertprofileException {
if (extensionsType == null) {
return null;
}
Map<ASN1ObjectIdentifier, ExtensionValue> map = new HashMap<>();
for (ExtensionType m : extensionsType.getExtension()) {
ASN1ObjectIdentifier oid = new ASN1ObjectIdentifier(m.getType().getValue());
if (Extension.subjectAlternativeName.equals(oid) || Extension.subjectInfoAccess.equals(oid) || Extension.biometricInfo.equals(oid)) {
continue;
}
if (m.getValue() == null || !(m.getValue().getAny() instanceof ConstantExtValue)) {
continue;
}
ConstantExtValue extConf = (ConstantExtValue) m.getValue().getAny();
byte[] encodedValue = extConf.getValue();
ASN1StreamParser parser = new ASN1StreamParser(encodedValue);
ASN1Encodable value;
try {
value = parser.readObject();
} catch (IOException ex) {
throw new CertprofileException("could not parse the constant extension value", ex);
}
ExtensionValue extension = new ExtensionValue(m.isCritical(), value);
map.put(oid, extension);
}
if (CollectionUtil.isEmpty(map)) {
return null;
}
return Collections.unmodifiableMap(map);
}
use of org.xipki.ca.api.profile.CertprofileException 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);
}
Aggregations