diff --git a/app/core/.gitignore b/app/core/.gitignore index 5486f9afe..7d9dd6293 100644 --- a/app/core/.gitignore +++ b/app/core/.gitignore @@ -170,6 +170,10 @@ out/ *.jks *.asc +# test-cert +!**/test/resources/certs/test-cert.* +!**/test/resources/certs/test-key.* + # SSH Keys *.pub *.priv 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 7675355da..e32f4fac6 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 @@ -186,6 +186,7 @@ public class CertSignController { "alias", privateKey, password.toCharArray(), new Certificate[] {cert}); break; case "PKCS12": + case "PFX": ks = KeyStore.getInstance("PKCS12"); ks.load(p12File.getInputStream(), password.toCharArray()); break; diff --git a/app/core/src/main/java/stirling/software/SPDF/model/api/security/SignPDFWithCertRequest.java b/app/core/src/main/java/stirling/software/SPDF/model/api/security/SignPDFWithCertRequest.java index acb4b55fd..ac87fe61d 100644 --- a/app/core/src/main/java/stirling/software/SPDF/model/api/security/SignPDFWithCertRequest.java +++ b/app/core/src/main/java/stirling/software/SPDF/model/api/security/SignPDFWithCertRequest.java @@ -15,20 +15,25 @@ public class SignPDFWithCertRequest extends PDFFile { @Schema( description = "The type of the digital certificate", - allowableValues = {"PEM", "PKCS12", "JKS"}, + allowableValues = {"PEM", "PKCS12", "PFX", "JKS"}, requiredMode = Schema.RequiredMode.REQUIRED) private String certType; @Schema( description = "The private key for the digital certificate (required for PEM type" - + " certificates)") + + " certificates, supports .pem, .der, or .key files)") private MultipartFile privateKeyFile; - @Schema(description = "The digital certificate (required for PEM type certificates)") + @Schema( + description = + "The digital certificate (required for PEM type certificates, supports" + + " .pem, .der, .crt, or .cer files)") private MultipartFile certFile; - @Schema(description = "The PKCS12 keystore file (required for PKCS12 type certificates)") + @Schema( + description = + "The PKCS12/PFX keystore file (required for PKCS12 or PFX type certificates)") private MultipartFile p12File; @Schema(description = "The JKS keystore file (Java Key Store)") diff --git a/app/core/src/main/resources/templates/security/cert-sign.html b/app/core/src/main/resources/templates/security/cert-sign.html index d83f8c249..ea94b7ea9 100644 --- a/app/core/src/main/resources/templates/security/cert-sign.html +++ b/app/core/src/main/resources/templates/security/cert-sign.html @@ -31,17 +31,18 @@ +