diff --git a/src/main/java/digital/slovensko/avm/core/SigningJob.java b/src/main/java/digital/slovensko/avm/core/SigningJob.java index 97cfae8..f8e8d5e 100644 --- a/src/main/java/digital/slovensko/avm/core/SigningJob.java +++ b/src/main/java/digital/slovensko/avm/core/SigningJob.java @@ -63,10 +63,28 @@ public SignedDocument signDocument(DataToSignStructure dataToSignStructure, Stri throw new DataToSignMismatchException(); var doc = service.signDocument(document, signatureParameters, signatureValue); + doc.setName(generatePrettyName(doc.getName(), document.getName())); + return new SignedDocument(doc, token); } + private static String generatePrettyName(String newName, String originalName) { + var lastDotIndex = originalName.lastIndexOf('.'); + var nameWithoutExtension = lastDotIndex == -1 ? originalName : originalName.substring(0, lastDotIndex); + var extension = generatePrettyExtension(newName.substring(newName.lastIndexOf('.') + 1)); + + return nameWithoutExtension + "_signed." + extension; + } + + private static String generatePrettyExtension(String extension) { + return switch (extension) { + case "scs" -> "asics"; + case "sce" -> "asice"; + default -> extension; + }; + } + private static AbstractSignatureService getServiceForSignatureLevel(SignatureForm signatureForm, ASiCContainerType container, CertificateVerifier certificateVerifier) { return switch (signatureForm) { case XAdES -> container != null ? new ASiCWithXAdESService(certificateVerifier) : new XAdESService(certificateVerifier);