Skip to content

Commit b60f7c4

Browse files
authored
MOSIP-43972: make allowed sign algorithm as configurable (#506)
Signed-off-by: nagendra0721 <nagendra0718@gmail.com>
1 parent d5b7764 commit b60f7c4

6 files changed

Lines changed: 21 additions & 8 deletions

File tree

kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/partnercertservice/constant/PartnerCertManagerConstants.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,6 @@ public interface PartnerCertManagerConstants {
8080
*/
8181
int RSA_MIN_KEY_SIZE = 2048;
8282

83-
/**
84-
* The constant HASH_SHA2
85-
*/
86-
String HASH_SHA2 = "SHA2";
87-
8883
int YEAR_DAYS = 365;
8984

9085
String GET_PARTNER_CERT = "GetPartnerCertificate";

kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/partnercertservice/service/impl/PartnerCertificateManagerServiceImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ public class PartnerCertificateManagerServiceImpl implements PartnerCertificateM
125125
@Value("${mosip.kernel.partner.cacertificate.upload.minimumvalidity.month:12}")
126126
private int minValidity;
127127

128+
@Value("${mosip.kernel.partner.certificate.allowed.sign.algorithms:SHA256withRSA}")
129+
private List<String> allowedSignAlgorithms;
128130

129131
/**
130132
* Utility to generate Metadata
@@ -638,7 +640,7 @@ private void validateOtherPartnerCertParams(X509Certificate reqX509Cert, String
638640
}
639641

640642
String signatureAlgorithm = reqX509Cert.getSigAlgName();
641-
if (!signatureAlgorithm.toUpperCase().startsWith(PartnerCertManagerConstants.HASH_SHA2)) {
643+
if (allowedSignAlgorithms.stream().noneMatch(signatureAlgorithm::equalsIgnoreCase)) {
642644
LOGGER.error(PartnerCertManagerConstants.SESSIONID, PartnerCertManagerConstants.UPLOAD_PARTNER_CERT,
643645
PartnerCertManagerConstants.EMPTY, "Signature Algorithm not supported.");
644646
throw new PartnerCertManagerException(

kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/constant/SignatureConstant.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,6 @@ private SignatureConstant() {
134134
public static final int CERTIFICATE_URL_TAG = 35;
135135

136136
public static final int CLAIM169_TAG = 169;
137+
138+
public static final String RANDOM_UUID = "UUID";
137139
}

kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CWTSignRequestDto.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,10 @@ public class CWTSignRequestDto {
9292
*/
9393
@ApiModelProperty(notes = "Not Before date in number of days", example = "1", required = false)
9494
private Integer notBeforeDays;
95+
96+
/**
97+
* CWT Id
98+
*/
99+
@ApiModelProperty(notes = "CWT Id", example = "123", required = false)
100+
private String CWTId;
95101
}

kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/util/SignatureUtil.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,10 @@ private CWTClaimsSetBuilder buildRegisteredCWTClaims(CWTSignRequestDto requestDt
467467
Date issuedAt = new Date();
468468
Date notBefore = DateUtils.addDays(issuedAt, notBeforeIndays);
469469
Date expire = DateUtils.addDays(notBefore, expireIndays);
470-
String cwtUniqueId = UUID.randomUUID().toString();
470+
String cwtId = requestDto.getCWTId() != null ? requestDto.getCWTId() : SignatureConstant.BLANK;
471+
String cwtUniqueId = (cwtId.equalsIgnoreCase(SignatureConstant.RANDOM_UUID))
472+
? UUID.randomUUID().toString()
473+
: cwtId;
471474

472475
if (issuer != null && !issuer.isBlank()) {
473476
claimsSetBuilder.iss(issuer);
@@ -484,7 +487,9 @@ private CWTClaimsSetBuilder buildRegisteredCWTClaims(CWTSignRequestDto requestDt
484487
claimsSetBuilder.exp(expire);
485488
claimsSetBuilder.nbf(notBefore);
486489
claimsSetBuilder.iat(issuedAt);
487-
claimsSetBuilder.cti(cwtUniqueId);
490+
491+
if (isDataValid(cwtUniqueId))
492+
claimsSetBuilder.cti(cwtUniqueId);
488493

489494
return claimsSetBuilder;
490495
}

kernel/kernel-keymanager-service/src/main/resources/application-local.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ mosip.kernel.keymanager.signature.cwt.verify.iss.enable=true
137137
mosip.kernel.keymanager.signature.cwt.verify.sub.enable=true
138138
mosip.kernel.partner.trust.validate.domain.name=TRUST_CA
139139

140+
# Partner certificate allowed sign algorithms
141+
mosip.kernel.partner.certificate.allowed.sign.algorithms=SHA256withRSA,SHA384withRSA,SHA512withRSA,SHA256withECDSA,SHA384withECDSA,SHA512withECDSA,Ed25519
142+
140143
##Adding controller props to local prop file
141144
mosip.role.keymanager.postcssign=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,TEST,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT
142145
mosip.role.keymanager.postcsverifysign=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,TEST,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT

0 commit comments

Comments
 (0)