diff options
Diffstat (limited to 'certService/src/main/java/org/onap/oom/certservice/api/CertificationController.java')
-rw-r--r-- | certService/src/main/java/org/onap/oom/certservice/api/CertificationController.java | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/certService/src/main/java/org/onap/oom/certservice/api/CertificationController.java b/certService/src/main/java/org/onap/oom/certservice/api/CertificationController.java index fd35ec8e..a0972d59 100644 --- a/certService/src/main/java/org/onap/oom/certservice/api/CertificationController.java +++ b/certService/src/main/java/org/onap/oom/certservice/api/CertificationController.java @@ -27,6 +27,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; +import org.onap.oom.certservice.certification.model.CertificateUpdateModel; import org.onap.oom.certservice.certification.CertificationModelFactory; import org.onap.oom.certservice.certification.exception.DecryptionException; import org.onap.oom.certservice.certification.exception.ErrorResponseModel; @@ -86,11 +87,46 @@ public class CertificationController { @Parameter(description = "Private key in form of PEM object encoded in Base64 (with header and footer).") @RequestHeader("PK") String encodedPrivateKey ) throws DecryptionException, CmpClientException { - caName = caName.replaceAll("[\n\r\t]", "_"); + caName = replaceWhiteSpaceChars(caName); LOGGER.info("Received certificate signing request for CA named: {}", caName); CertificationModel certificationModel = certificationModelFactory .createCertificationModel(encodedCsr, encodedPrivateKey, caName); return new ResponseEntity<>(certificationModel, HttpStatus.OK); } + /** + * Request for updating certificate by given CA. + * + * @param caName the name of Certification Authority that will sign root certificate + * @param encodedCsr Certificate Sign Request encoded in Base64 form + * @param encodedPrivateKey Private key for CSR, needed for PoP, encoded in Base64 form + * @param encodedOldCert Certificate (signed by Certification Authority) that should be renewed + * @param encodedOldPrivateKey Old private key corresponding with old certificate + * @return JSON containing trusted certificates and certificate chain + */ + @GetMapping(value = "v1/certificate-update/{caName}", produces = "application/json") + public ResponseEntity<CertificationModel> updateCertificate( + @PathVariable String caName, + @RequestHeader("CSR") String encodedCsr, + @RequestHeader("PK") String encodedPrivateKey, + @RequestHeader("OLD_CERT") String encodedOldCert, + @RequestHeader("OLD_PK") String encodedOldPrivateKey + ) { + caName = replaceWhiteSpaceChars(caName); + LOGGER.info("Received certificate update request for CA named: {}", caName); + CertificateUpdateModel certificateUpdateModel = new CertificateUpdateModel.CertificateUpdateModelBuilder() + .setEncodedCsr(encodedCsr) + .setEncodedPrivateKey(encodedPrivateKey) + .setEncodedOldCert(encodedOldCert) + .setEncodedOldPrivateKey(encodedOldPrivateKey) + .setCaName(caName) + .build(); + CertificationModel certificationModel = certificationModelFactory + .createCertificationModel(certificateUpdateModel); + return new ResponseEntity<>(certificationModel, HttpStatus.OK); + } + + private String replaceWhiteSpaceChars(String text) { + return text.replaceAll("[\n\r\t]", "_"); + } } |