fix:p10增加ou
This commit is contained in:
@@ -8,6 +8,9 @@ import org.bouncycastle.asn1.x500.style.BCStyle;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Schema(description = "证书主题信息")
|
||||
public class Subject {
|
||||
@@ -30,6 +33,9 @@ public class Subject {
|
||||
@Schema(description = "组织单元 OU", example = "Cert")
|
||||
private String orgUnit;
|
||||
|
||||
@Schema(description = "组织单元 OU 列表,最多支持两个;传入后优先于 orgUnit", example = "[\"Organizational-1\",\"CCFCCB\"]")
|
||||
private List<String> orgUnits;
|
||||
|
||||
public String getDN() {
|
||||
return toX500Name().toString();
|
||||
}
|
||||
@@ -40,8 +46,8 @@ public class Subject {
|
||||
if (StringUtils.hasText(commonName)) {
|
||||
builder.addRDN(BCStyle.CN, commonName);
|
||||
}
|
||||
if (StringUtils.hasText(orgUnit)) {
|
||||
builder.addRDN(BCStyle.OU, orgUnit);
|
||||
for (String unit : effectiveOrgUnits()) {
|
||||
builder.addRDN(BCStyle.OU, unit);
|
||||
}
|
||||
if (StringUtils.hasText(org)) {
|
||||
builder.addRDN(BCStyle.O, org);
|
||||
@@ -59,9 +65,26 @@ public class Subject {
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private List<String> effectiveOrgUnits() {
|
||||
List<String> units = new ArrayList<>();
|
||||
if (orgUnits != null) {
|
||||
for (String unit : orgUnits) {
|
||||
if (StringUtils.hasText(unit)) {
|
||||
units.add(unit.trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (units.isEmpty() && StringUtils.hasText(orgUnit)) {
|
||||
units.add(orgUnit.trim());
|
||||
}
|
||||
Assert.isTrue(units.size() <= 2, "组织单元最多支持2个");
|
||||
return units;
|
||||
}
|
||||
|
||||
public static Subject fromDN(String dn) {
|
||||
Assert.hasText(dn, "DN不能为空");
|
||||
Subject subject = new Subject();
|
||||
List<String> orgUnits = new ArrayList<>();
|
||||
String[] splits = dn.trim().split(",");
|
||||
for (String split : splits) {
|
||||
String trim = split.trim();
|
||||
@@ -78,12 +101,16 @@ public class Subject {
|
||||
subject.setOrg(trim.substring(2));
|
||||
}
|
||||
if (trim.startsWith("OU=")) {
|
||||
subject.setOrgUnit(trim.substring(3));
|
||||
orgUnits.add(trim.substring(3));
|
||||
}
|
||||
if (trim.startsWith("CN=")) {
|
||||
subject.setCommonName(trim.substring(3));
|
||||
}
|
||||
}
|
||||
if (!orgUnits.isEmpty()) {
|
||||
subject.setOrgUnit(orgUnits.get(0));
|
||||
subject.setOrgUnits(orgUnits);
|
||||
}
|
||||
Assert.hasText(subject.commonName, "通用名称不能为空");
|
||||
return subject;
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@ public class EntityService {
|
||||
.setOrgName(request.getOrgName())
|
||||
.setAlgoType(algoType)
|
||||
.setKeyLen(keyLen)
|
||||
//todo 后续增加密钥类型字段/增加加密密钥对字段
|
||||
.setKeyIdx(keyIdx)
|
||||
.setBackupData(Base64.getEncoder().encodeToString(backup.getData()))
|
||||
.setPublicKey(Base64.getEncoder().encodeToString(publicKey.getData()))
|
||||
|
||||
Reference in New Issue
Block a user