Pull request #667: RED-6362 - Cannot add KMS signature

Merge in RED/persistence-service from bugfix/RED-6362-kms to master

* commit '52480314c35562b8f15e7cee4e6b5f87538b1a3a':
  RED-6362 - Cannot add KMS signature - update saveDigitalSignatureKms signature - move the convert from DigitalSignatureKms to DigitalSignatureKmsEntity to the service - remove the magicConvertor which cause problem for the certificate
This commit is contained in:
Corina Olariu 2023-04-10 10:32:31 +02:00 committed by Timo Bejan
commit f2a53d4da4
2 changed files with 19 additions and 18 deletions

View File

@ -117,7 +117,7 @@ public class DigitalSignatureController implements DigitalSignatureResource {
@PreAuthorize("hasAuthority('" + WRITE_DIGITAL_SIGNATURE + "')") @PreAuthorize("hasAuthority('" + WRITE_DIGITAL_SIGNATURE + "')")
public DigitalSignatureKmsViewModel saveDigitalSignatureKms(@RequestBody DigitalSignatureKms digitalSignature) { public DigitalSignatureKmsViewModel saveDigitalSignatureKms(@RequestBody DigitalSignatureKms digitalSignature) {
DigitalSignatureKmsViewModel result = convert(digitalSignatureKmsService.saveDigitalSignature(convert(digitalSignature))); DigitalSignatureKmsViewModel result = convert(digitalSignatureKmsService.saveDigitalSignature(digitalSignature));
auditPersistenceService.insertRecord(AuditRequest.builder() auditPersistenceService.insertRecord(AuditRequest.builder()
.userId(KeycloakSecurity.getUserId()) .userId(KeycloakSecurity.getUserId())
.objectId(DIGITAL_SIGNATURE_AUDIT_ID) .objectId(DIGITAL_SIGNATURE_AUDIT_ID)
@ -162,20 +162,6 @@ public class DigitalSignatureController implements DigitalSignatureResource {
} }
private DigitalSignatureKmsEntity convert(DigitalSignatureKms digitalSignatureKms) {
return DigitalSignatureKmsEntity.builder()
.certificate(digitalSignatureKms.getCertificate().getBytes(StandardCharsets.UTF_8))
.kmsAccessKey(digitalSignatureKms.getKmsAccessKey())
.kmsKeyId(digitalSignatureKms.getKmsKeyId())
.kmsRegion(digitalSignatureKms.getKmsRegion())
.kmsSecretKey(digitalSignatureKms.getKmsSecretKey())
.kmsServiceEndpoint(digitalSignatureKms.getKmsServiceEndpoint())
.certificateName(digitalSignatureKms.getCertificateName())
.build();
}
private DigitalSignatureEntity convert(DigitalSignatureViewModel digitalSignature) { private DigitalSignatureEntity convert(DigitalSignatureViewModel digitalSignature) {
return DigitalSignatureEntity.builder() return DigitalSignatureEntity.builder()

View File

@ -1,5 +1,7 @@
package com.iqser.red.service.persistence.management.v1.processor.service; package com.iqser.red.service.persistence.management.v1.processor.service;
import java.nio.charset.StandardCharsets;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -10,7 +12,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureKmsRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureKmsRepository;
import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter;
import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureKms; import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureKms;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignatureType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignatureType;
@ -29,11 +30,11 @@ public class DigitalSignatureKmsService {
private final PDFTronClient pdfTronRedactionClient; private final PDFTronClient pdfTronRedactionClient;
public DigitalSignatureKmsEntity saveDigitalSignature(DigitalSignatureKmsEntity digitalSignature) { public DigitalSignatureKmsEntity saveDigitalSignature(DigitalSignatureKms digitalSignatureKms) {
log.info("Validate digital KMS signature before saving"); log.info("Validate digital KMS signature before saving");
try { try {
pdfTronRedactionClient.testDigitalSignatureKms(MagicConverter.convert(digitalSignature, DigitalSignatureKms.class)); pdfTronRedactionClient.testDigitalSignatureKms(digitalSignatureKms);
} catch (FeignException e) { } catch (FeignException e) {
if (e.status() == HttpStatus.BAD_REQUEST.value()) { if (e.status() == HttpStatus.BAD_REQUEST.value()) {
throw new BadRequestException(e.getMessage(), e); throw new BadRequestException(e.getMessage(), e);
@ -41,6 +42,7 @@ public class DigitalSignatureKmsService {
throw new BadRequestException("Could not validate digital KMS signature", e); throw new BadRequestException("Could not validate digital KMS signature", e);
} }
log.info("Digital KMS signature is valid"); log.info("Digital KMS signature is valid");
DigitalSignatureKmsEntity digitalSignature = convert(digitalSignatureKms);
encrypt(digitalSignature); encrypt(digitalSignature);
var result = digitalSignatureKmsRepository.save(digitalSignature); var result = digitalSignatureKmsRepository.save(digitalSignature);
@ -85,4 +87,17 @@ public class DigitalSignatureKmsService {
digitalSignatureTypeService.deleteDigitalSignatureType(); digitalSignatureTypeService.deleteDigitalSignatureType();
} }
private DigitalSignatureKmsEntity convert(DigitalSignatureKms digitalSignatureKms) {
return DigitalSignatureKmsEntity.builder()
.certificate(digitalSignatureKms.getCertificate().getBytes(StandardCharsets.UTF_8))
.kmsAccessKey(digitalSignatureKms.getKmsAccessKey())
.kmsKeyId(digitalSignatureKms.getKmsKeyId())
.kmsRegion(digitalSignatureKms.getKmsRegion())
.kmsSecretKey(digitalSignatureKms.getKmsSecretKey())
.kmsServiceEndpoint(digitalSignatureKms.getKmsServiceEndpoint())
.certificateName(digitalSignatureKms.getCertificateName())
.build();
}
} }