diff --git a/app/common/src/main/java/stirling/software/common/service/ServerCertificateService.java b/app/common/src/main/java/stirling/software/common/service/ServerCertificateServiceInterface.java similarity index 55% rename from app/common/src/main/java/stirling/software/common/service/ServerCertificateService.java rename to app/common/src/main/java/stirling/software/common/service/ServerCertificateServiceInterface.java index 4e398e8b4..df5dd0534 100644 --- a/app/common/src/main/java/stirling/software/common/service/ServerCertificateService.java +++ b/app/common/src/main/java/stirling/software/common/service/ServerCertificateServiceInterface.java @@ -5,7 +5,10 @@ import java.security.KeyStore; import java.security.cert.X509Certificate; import java.util.Date; -public interface ServerCertificateService { +import lombok.AllArgsConstructor; +import lombok.Getter; + +public interface ServerCertificateServiceInterface { boolean isEnabled(); @@ -27,40 +30,13 @@ public interface ServerCertificateService { ServerCertificateInfo getServerCertificateInfo() throws Exception; + @Getter + @AllArgsConstructor class ServerCertificateInfo { private final boolean exists; private final String subject; private final String issuer; private final Date validFrom; private final Date validTo; - - public ServerCertificateInfo( - boolean exists, String subject, String issuer, Date validFrom, Date validTo) { - this.exists = exists; - this.subject = subject; - this.issuer = issuer; - this.validFrom = validFrom; - this.validTo = validTo; - } - - public boolean isExists() { - return exists; - } - - public String getSubject() { - return subject; - } - - public String getIssuer() { - return issuer; - } - - public Date getValidFrom() { - return validFrom; - } - - public Date getValidTo() { - return validTo; - } } } \ No newline at end of file diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java index 8a73e872f..8ab23be25 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java @@ -68,11 +68,12 @@ import io.micrometer.common.util.StringUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + import stirling.software.SPDF.model.api.security.SignPDFWithCertRequest; -import stirling.software.common.service.ServerCertificateService; +import stirling.software.common.service.ServerCertificateServiceInterface; import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; @@ -82,7 +83,6 @@ import stirling.software.common.util.WebResponseUtils; @RequestMapping("/api/v1/security") @Slf4j @Tag(name = "Security", description = "Security APIs") -@RequiredArgsConstructor public class CertSignController { static { @@ -102,7 +102,14 @@ public class CertSignController { } private final CustomPDFDocumentFactory pdfDocumentFactory; - private final ServerCertificateService serverCertificateService; + private final ServerCertificateServiceInterface serverCertificateService; + + public CertSignController( + CustomPDFDocumentFactory pdfDocumentFactory, + @Autowired(required = false) ServerCertificateServiceInterface serverCertificateService) { + this.pdfDocumentFactory = pdfDocumentFactory; + this.serverCertificateService = serverCertificateService; + } private static void sign( CustomPDFDocumentFactory pdfDocumentFactory, @@ -197,6 +204,11 @@ public class CertSignController { ks.load(jksfile.getInputStream(), password.toCharArray()); break; case "SERVER": + if (serverCertificateService == null) { + throw ExceptionUtils.createIllegalArgumentException( + "error.serverCertificateNotAvailable", + "Server certificate service is not available in this edition"); + } if (!serverCertificateService.isEnabled()) { throw ExceptionUtils.createIllegalArgumentException( "error.serverCertificateDisabled", diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/service/ServerCertificateService.java b/app/proprietary/src/main/java/stirling/software/proprietary/service/ServerCertificateService.java index edc29d331..900ab7773 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/service/ServerCertificateService.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/service/ServerCertificateService.java @@ -23,10 +23,11 @@ import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import stirling.software.common.configuration.InstallationPathConfig; +import stirling.software.common.service.ServerCertificateServiceInterface; @Service @Slf4j -public class ServerCertificateService implements stirling.software.common.service.ServerCertificateService { +public class ServerCertificateService implements ServerCertificateServiceInterface { private static final String KEYSTORE_FILENAME = "server-certificate.p12"; private static final String KEYSTORE_ALIAS = "stirling-pdf-server";