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 + "')")
public DigitalSignatureKmsViewModel saveDigitalSignatureKms(@RequestBody DigitalSignatureKms digitalSignature) {
DigitalSignatureKmsViewModel result = convert(digitalSignatureKmsService.saveDigitalSignature(convert(digitalSignature)));
DigitalSignatureKmsViewModel result = convert(digitalSignatureKmsService.saveDigitalSignature(digitalSignature));
auditPersistenceService.insertRecord(AuditRequest.builder()
.userId(KeycloakSecurity.getUserId())
.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) {
return DigitalSignatureEntity.builder()

View File

@ -1,5 +1,7 @@
package com.iqser.red.service.persistence.management.v1.processor.service;
import java.nio.charset.StandardCharsets;
import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpStatus;
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.NotFoundException;
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.dossiertemplate.configuration.DigitalSignatureType;
@ -29,11 +30,11 @@ public class DigitalSignatureKmsService {
private final PDFTronClient pdfTronRedactionClient;
public DigitalSignatureKmsEntity saveDigitalSignature(DigitalSignatureKmsEntity digitalSignature) {
public DigitalSignatureKmsEntity saveDigitalSignature(DigitalSignatureKms digitalSignatureKms) {
log.info("Validate digital KMS signature before saving");
try {
pdfTronRedactionClient.testDigitalSignatureKms(MagicConverter.convert(digitalSignature, DigitalSignatureKms.class));
pdfTronRedactionClient.testDigitalSignatureKms(digitalSignatureKms);
} catch (FeignException e) {
if (e.status() == HttpStatus.BAD_REQUEST.value()) {
throw new BadRequestException(e.getMessage(), e);
@ -41,6 +42,7 @@ public class DigitalSignatureKmsService {
throw new BadRequestException("Could not validate digital KMS signature", e);
}
log.info("Digital KMS signature is valid");
DigitalSignatureKmsEntity digitalSignature = convert(digitalSignatureKms);
encrypt(digitalSignature);
var result = digitalSignatureKmsRepository.save(digitalSignature);
@ -85,4 +87,17 @@ public class DigitalSignatureKmsService {
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();
}
}