aboutsummaryrefslogtreecommitdiffstats
path: root/certService/src/main/java/org/onap/oom/certservice/api/CertificationController.java
diff options
context:
space:
mode:
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.java38
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]", "_");
+ }
}