From 68ccb0f970ff972d01cdc729861680e6b5632f9b Mon Sep 17 00:00:00 2001
From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
Date: Mon, 22 Sep 2025 14:47:28 +0100
Subject: [PATCH] formats and renames
---
.../software/common/model/api/PDFFile.java | 4 +-
.../controller/api/misc/ConfigController.java | 2 -
.../public/locales/en-GB/translation.json | 325 +++++-------------
.../CertificateFilesSettings.tsx | 6 +-
.../CertificateFormatSettings.tsx | 6 +-
.../CertificateTypeSettings.tsx | 6 +-
.../SignatureAppearanceSettings.tsx | 6 +-
.../tooltips/useCertSignTooltips.ts | 45 +++
.../tooltips/useCertificateTypeTips.ts | 22 +-
.../tooltips/useManageSignaturesTooltips.ts | 45 ---
.../components/tooltips/useSignModeTips.ts | 22 +-
.../tooltips/useSignatureAppearanceTips.ts | 24 +-
.../src/data/useTranslatedToolRegistry.tsx | 12 +-
.../useCertSignOperation.ts} | 18 +-
.../useCertSignParameters.ts} | 10 +-
.../{ManageSignatures.tsx => CertSign.tsx} | 24 +-
frontend/src/types/toolId.ts | 1 -
frontend/src/utils/urlMapping.ts | 4 +-
18 files changed, 216 insertions(+), 366 deletions(-)
rename frontend/src/components/tools/{manageSignatures => certSign}/CertificateFilesSettings.tsx (93%)
rename frontend/src/components/tools/{manageSignatures => certSign}/CertificateFormatSettings.tsx (91%)
rename frontend/src/components/tools/{manageSignatures => certSign}/CertificateTypeSettings.tsx (90%)
rename frontend/src/components/tools/{manageSignatures => certSign}/SignatureAppearanceSettings.tsx (94%)
create mode 100644 frontend/src/components/tooltips/useCertSignTooltips.ts
delete mode 100644 frontend/src/components/tooltips/useManageSignaturesTooltips.ts
rename frontend/src/hooks/tools/{manageSignatures/useManageSignaturesOperation.ts => certSign/useCertSignOperation.ts} (74%)
rename frontend/src/hooks/tools/{manageSignatures/useManageSignaturesParameters.ts => certSign/useCertSignParameters.ts} (80%)
rename frontend/src/tools/{ManageSignatures.tsx => CertSign.tsx} (82%)
diff --git a/app/common/src/main/java/stirling/software/common/model/api/PDFFile.java b/app/common/src/main/java/stirling/software/common/model/api/PDFFile.java
index aa811da1e..b584fde2f 100644
--- a/app/common/src/main/java/stirling/software/common/model/api/PDFFile.java
+++ b/app/common/src/main/java/stirling/software/common/model/api/PDFFile.java
@@ -18,7 +18,9 @@ public class PDFFile {
@Schema(description = "The input PDF file", format = "binary")
private MultipartFile fileInput;
- @Schema(description = "File ID for server-side files (can be used instead of fileInput if job was previously done on file in async mode)")
+ @Schema(
+ description =
+ "File ID for server-side files (can be used instead of fileInput if job was previously done on file in async mode)")
private String fileId;
@AssertTrue(message = "Either fileInput or fileId must be provided")
diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ConfigController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ConfigController.java
index afaa68df0..6d9263270 100644
--- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ConfigController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ConfigController.java
@@ -9,7 +9,6 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import io.swagger.v3.oas.annotations.Hidden;
-import lombok.RequiredArgsConstructor;
import stirling.software.SPDF.config.EndpointConfiguration;
import stirling.software.common.annotations.api.ConfigApi;
@@ -18,7 +17,6 @@ import stirling.software.common.model.ApplicationProperties;
import stirling.software.common.service.ServerCertificateServiceInterface;
@ConfigApi
-@RequiredArgsConstructor
@Hidden
public class ConfigController {
diff --git a/frontend/public/locales/en-GB/translation.json b/frontend/public/locales/en-GB/translation.json
index 126bc1a9f..9637c264e 100644
--- a/frontend/public/locales/en-GB/translation.json
+++ b/frontend/public/locales/en-GB/translation.json
@@ -427,9 +427,9 @@
"title": "Flatten",
"desc": "Remove all interactive elements and forms from a PDF"
},
- "manageSignatures": {
- "title": "Sign with Certificate",
- "desc": "Add digital signatures to PDF documents using certificates"
+ "certSign": {
+ "title": "Sign with Certificate",
+ "desc": "Signs a PDF with a Certificate/Key (PEM/P12)"
},
"repair": {
"title": "Repair",
@@ -447,14 +447,6 @@
"title": "Compare",
"desc": "Compares and shows the differences between 2 PDF Documents"
},
- "certSign": {
- "title": "Sign with Certificate",
- "desc": "Signs a PDF with a Certificate/Key (PEM/P12)"
- },
- "manageSignatures": {
- "title": "Manage Signatures",
- "desc": "Sign PDFs with certificates using manual or server-managed keys"
- },
"removeCertSign": {
"title": "Remove Certificate Sign",
"desc": "Remove certificate signature from PDF"
@@ -1191,7 +1183,9 @@
},
"pageSelection": {
"tooltip": {
- "header": { "title": "Page Selection Guide" },
+ "header": {
+ "title": "Page Selection Guide"
+ },
"basic": {
"title": "Basic Usage",
"text": "Select specific pages from your PDF document using simple syntax.",
@@ -1225,11 +1219,15 @@
"comma": "Comma: , or | — combine selections (e.g., 1-10, 20)",
"not": "NOT: ! or \"not\" — exclude pages (e.g., 3n & not 30)"
},
- "examples": { "title": "Examples" }
+ "examples": {
+ "title": "Examples"
+ }
}
},
"bulkSelection": {
- "header": { "title": "Page Selection Guide" },
+ "header": {
+ "title": "Page Selection Guide"
+ },
"syntax": {
"title": "Syntax Basics",
"text": "Use numbers, ranges, keywords, and progressions (n starts at 0). Parentheses are supported.",
@@ -1781,67 +1779,11 @@
}
},
"certSign": {
- "tags": "authenticate,PEM,P12,official,encrypt",
+ "tags": "authenticate,PEM,P12,official,encrypt,sign,certificate,PKCS12,JKS,server,manual,auto",
"title": "Certificate Signing",
- "header": "Sign a PDF with your certificate (Work in progress)",
- "selectPDF": "Select a PDF File for Signing:",
- "jksNote": "Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.",
- "selectKey": "Select Your Private Key File (PKCS#8 format, could be .pem or .der):",
- "selectCert": "Select Your Certificate File (X.509 format, could be .pem or .der):",
- "selectP12": "Select Your PKCS#12 Keystore File (.p12 or .pfx) (Optional, If provided, it should contain your private key and certificate):",
- "selectJKS": "Select Your Java Keystore File (.jks or .keystore):",
- "certType": "Certificate Type",
- "password": "Enter Your Keystore or Private Key Password (If Any):",
- "showSig": "Show Signature",
- "reason": "Reason",
- "location": "Location",
- "name": "Name",
- "showLogo": "Show Logo",
- "submit": "Sign PDF",
- "files": {
- "placeholder": "Select PDF files to sign with certificates"
- },
- "signMode": {
- "stepTitle": "Sign Mode"
- },
- "certTypeStep": {
- "stepTitle": "Certificate Format"
- },
- "certFiles": {
- "stepTitle": "Certificate Files"
- },
- "appearance": {
- "stepTitle": "Signature Appearance",
- "title": "Signature Appearance",
- "invisible": "Invisible",
- "visible": "Visible",
- "options": {
- "title": "Signature Details"
- }
- },
- "sign": {
- "submit": "Sign PDF",
- "results": "Signed PDF"
- },
- "error": {
- "failed": "An error occurred whilst signing the PDF."
- },
- "choosePrivateKey": "Choose Private Key File",
- "chooseCertificate": "Choose Certificate File",
- "chooseP12File": "Choose PKCS12 File",
- "choosePfxFile": "Choose PFX File",
- "chooseJksFile": "Choose JKS File",
- "passwordOptional": "Leave empty if no password",
- "serverCertMessage": "Using server certificate - no files or password required",
- "pageNumber": "Page Number",
- "logoTitle": "Logo",
- "noLogo": "No Logo"
- },
- "manageSignatures": {
- "tags": "sign,certificate,PEM,PKCS12,JKS,server,manual,auto",
- "title": "Manage Signatures",
- "desc": "Sign PDFs with certificates using manual or server-managed keys",
+ "filenamePrefix": "signed",
"signMode": {
+ "stepTitle": "Sign Mode",
"tooltip": {
"header": {
"title": "About PDF Signatures"
@@ -1866,6 +1808,72 @@
}
}
},
+ "certTypeStep": {
+ "stepTitle": "Certificate Format"
+ },
+ "certFiles": {
+ "stepTitle": "Certificate Files"
+ },
+ "appearance": {
+ "stepTitle": "Signature Appearance",
+ "tooltip": {
+ "header": {
+ "title": "About Signature Appearance"
+ },
+ "invisible": {
+ "title": "Invisible Signatures",
+ "text": "The signature is added to the PDF for security but won't be visible when viewing the document. Perfect for legal requirements without changing the document's appearance.",
+ "bullet1": "Provides security without visual changes",
+ "bullet2": "Meets legal requirements for digital signing",
+ "bullet3": "Doesn't affect document layout or design"
+ },
+ "visible": {
+ "title": "Visible Signatures",
+ "text": "Shows a signature block on the PDF with your name, date, and optional details. Useful when you want readers to clearly see the document is signed.",
+ "bullet1": "Shows signer name and date on the document",
+ "bullet2": "Can include reason and location for signing",
+ "bullet3": "Choose which page to place the signature",
+ "bullet4": "Optional logo can be included"
+ }
+ }
+ },
+ "sign": {
+ "submit": "Sign PDF",
+ "results": "Signed PDF"
+ },
+ "error": {
+ "failed": "An error occurred whilst processing signatures."
+ },
+ "tooltip": {
+ "header": {
+ "title": "About Managing Signatures"
+ },
+ "overview": {
+ "title": "What can this tool do?",
+ "text": "This tool lets you check if your PDFs are digitally signed and add new digital signatures. Digital signatures prove who created or approved a document and show if it has been changed since signing.",
+ "bullet1": "Check existing signatures and their validity",
+ "bullet2": "View detailed information about signers and certificates",
+ "bullet3": "Add new digital signatures to secure your documents",
+ "bullet4": "Multiple files supported with easy navigation"
+ },
+ "validation": {
+ "title": "Checking Signatures",
+ "text": "When you check signatures, the tool tells you if they're valid, who signed the document, when it was signed, and whether the document has been changed since signing.",
+ "bullet1": "Shows if signatures are valid or invalid",
+ "bullet2": "Displays signer information and signing date",
+ "bullet3": "Checks if the document was modified after signing",
+ "bullet4": "Can use custom certificates for verification"
+ },
+ "signing": {
+ "title": "Adding Signatures",
+ "text": "To sign a PDF, you need a digital certificate (like PEM, PKCS12, or JKS). You can choose to make the signature visible on the document or keep it invisible for security only.",
+ "bullet1": "Supports PEM, PKCS12, JKS, and server certificate formats",
+ "bullet2": "Option to show or hide signature on the PDF",
+ "bullet3": "Add reason, location, and signer name",
+ "bullet4": "Choose which page to place visible signatures",
+ "bullet5": "Use server certificate for simple 'Sign with Stirling-PDF' option"
+ }
+ },
"certType": {
"tooltip": {
"header": {
@@ -1878,7 +1886,7 @@
"which": {
"title": "Which option should I use?",
"text": "Choose the format that matches your certificate file:",
- "bullet1": "PKCS12 (.p12) – one combined file (most common)",
+ "bullet1": "PKCS#12 (.p12 / .pfx) – one combined file (most common)",
"bullet2": "PFX (.pfx) – Microsoft's version of PKCS12",
"bullet3": "PEM – separate private-key and certificate .pem files",
"bullet4": "JKS – Java .jks keystore for dev / CI-CD workflows"
@@ -2733,20 +2741,14 @@
"actualSize": "Actual Size"
},
"viewer": {
- "noPdfLoaded": "No PDF loaded. Click to upload a PDF.",
- "choosePdf": "Choose PDF",
- "noPagesToDisplay": "No pages to display.",
- "singlePageView": "Single Page View",
- "dualPageView": "Dual Page View",
- "hideSidebars": "Hide Sidebars",
- "showSidebars": "Show Sidebars",
- "zoomOut": "Zoom out",
- "zoomIn": "Zoom in",
+ "firstPage": "First Page",
+ "lastPage": "Last Page",
"previousPage": "Previous Page",
"nextPage": "Next Page",
- "pageNavigation": "Page Navigation",
- "currentPage": "Current Page",
- "totalPages": "Total Pages"
+ "zoomIn": "Zoom In",
+ "zoomOut": "Zoom Out",
+ "singlePageView": "Single Page View",
+ "dualPageView": "Dual Page View"
},
"rightRail": {
"closeSelected": "Close Selected Files",
@@ -3130,156 +3132,5 @@
"processImages": "Process Images",
"processImagesDesc": "Converts multiple image files into a single PDF document, then applies OCR technology to extract searchable text from the images."
}
- },
- "manageSignatures": {
- "title": "Sign with Certificate",
- "filenamePrefix": "signed",
- "files": {
- "placeholder": "Select PDF files to sign with certificates"
- },
- "fileStatus": {
- "stepTitle": "File Status"
- },
- "fileNavigation": "File {{current}} of {{total}}",
- "hasSignatures": "Contains {{count}} signature(s)",
- "noSignatures": "No signatures detected",
- "signed": "Signed",
- "certType": {
- "stepTitle": "Certificate Type",
- "tooltip": {
- "header": {
- "title": "About Certificate Types"
- },
- "what": {
- "title": "What's a certificate?",
- "text": "It's a secure ID for your signature that proves you signed. Unless you're required to sign via certificate, we recommend using another secure method like Type, Draw, or Upload."
- },
- "which": {
- "title": "Which option should I use?",
- "text": "Choose the format that matches your certificate file:",
- "bullet1": "PKCS#12 (.p12 / .pfx) – one combined file (most common)",
- "bullet2": "PEM – separate private-key and certificate .pem files",
- "bullet3": "JKS – Java .jks keystore for dev / CI-CD workflows"
- },
- "convert": {
- "title": "Key not listed?",
- "text": "Convert your file to a Java keystore (.jks) with keytool, then pick JKS."
- }
- }
- },
- "certFiles": {
- "stepTitle": "Certificate Files"
- },
- "appearance": {
- "stepTitle": "Signature Appearance",
- "title": "Signature Appearance",
- "invisible": "Invisible",
- "visible": "Visible",
- "options": {
- "title": "Signature Details"
- },
- "tooltip": {
- "header": {
- "title": "About Signature Appearance"
- },
- "invisible": {
- "title": "Invisible Signatures",
- "text": "The signature is added to the PDF for security but won't be visible when viewing the document. Perfect for legal requirements without changing the document's appearance.",
- "bullet1": "Provides security without visual changes",
- "bullet2": "Meets legal requirements for digital signing",
- "bullet3": "Doesn't affect document layout or design"
- },
- "visible": {
- "title": "Visible Signatures",
- "text": "Shows a signature block on the PDF with your name, date, and optional details. Useful when you want readers to clearly see the document is signed.",
- "bullet1": "Shows signer name and date on the document",
- "bullet2": "Can include reason and location for signing",
- "bullet3": "Choose which page to place the signature",
- "bullet4": "Optional logo can be included"
- }
- }
- },
- "mode": {
- "title": "Action",
- "validate": "Check for Signatures",
- "viewEdit": "View/Edit Signatures",
- "sign": "Add New Signature"
- },
- "validation": {
- "title": "Validation Options",
- "customCert": "Custom Certificate (Optional)",
- "customCert.desc": "Upload a custom certificate for validation"
- },
- "signing": {
- "title": "Certificate Settings",
- "certType": "Certificate Type",
- "choosePrivateKey": "Choose Private Key File",
- "chooseCertificate": "Choose Certificate File",
- "chooseP12File": "Choose PKCS12 File",
- "chooseJksFile": "Choose JKS File",
- "password": "Certificate Password",
- "passwordOptional": "Leave empty if no password",
- "showSignature": "Show visible signature on PDF",
- "reason": "Reason for Signing",
- "location": "Location",
- "name": "Signer Name",
- "pageNumber": "Page Number",
- "logoTitle": "Logo",
- "noLogo": "No Logo",
- "showLogo": "Show Logo"
- },
- "validate": {
- "submit": "Validate Signatures",
- "results": "Signature Validation Results"
- },
- "sign": {
- "submit": "Sign PDF",
- "results": "Signed PDF"
- },
- "results": {
- "title": "Signature Results"
- },
- "error": {
- "failed": "An error occurred whilst processing signatures."
- },
- "tooltip": {
- "header": {
- "title": "About Managing Signatures"
- },
- "overview": {
- "title": "What can this tool do?",
- "text": "This tool lets you check if your PDFs are digitally signed and add new digital signatures. Digital signatures prove who created or approved a document and show if it has been changed since signing.",
- "bullet1": "Check existing signatures and their validity",
- "bullet2": "View detailed information about signers and certificates",
- "bullet3": "Add new digital signatures to secure your documents",
- "bullet4": "Multiple files supported with easy navigation"
- },
- "validation": {
- "title": "Checking Signatures",
- "text": "When you check signatures, the tool tells you if they're valid, who signed the document, when it was signed, and whether the document has been changed since signing.",
- "bullet1": "Shows if signatures are valid or invalid",
- "bullet2": "Displays signer information and signing date",
- "bullet3": "Checks if the document was modified after signing",
- "bullet4": "Can use custom certificates for verification"
- },
- "signing": {
- "title": "Adding Signatures",
- "text": "To sign a PDF, you need a digital certificate (like PEM, PKCS12, or JKS). You can choose to make the signature visible on the document or keep it invisible for security only.",
- "bullet1": "Supports PEM, PKCS12, and JKS certificate formats",
- "bullet2": "Option to show or hide signature on the PDF",
- "bullet3": "Add reason, location, and signer name",
- "bullet4": "Choose which page to place visible signatures"
- }
- }
- },
- "viewer": {
- "firstPage": "First Page",
- "lastPage": "Last Page",
- "previousPage": "Previous Page",
- "nextPage": "Next Page",
- "zoomIn": "Zoom In",
- "zoomOut": "Zoom Out",
- "singlePageView": "Single Page View",
- "dualPageView": "Dual Page View"
}
}
\ No newline at end of file
diff --git a/frontend/src/components/tools/manageSignatures/CertificateFilesSettings.tsx b/frontend/src/components/tools/certSign/CertificateFilesSettings.tsx
similarity index 93%
rename from frontend/src/components/tools/manageSignatures/CertificateFilesSettings.tsx
rename to frontend/src/components/tools/certSign/CertificateFilesSettings.tsx
index 4b825801f..a11ba5b72 100644
--- a/frontend/src/components/tools/manageSignatures/CertificateFilesSettings.tsx
+++ b/frontend/src/components/tools/certSign/CertificateFilesSettings.tsx
@@ -1,11 +1,11 @@
import { Stack, Text, TextInput } from "@mantine/core";
import { useTranslation } from "react-i18next";
-import { ManageSignaturesParameters } from "../../../hooks/tools/manageSignatures/useManageSignaturesParameters";
+import { CertSignParameters } from "../../../hooks/tools/certSign/useCertSignParameters";
import FileUploadButton from "../../shared/FileUploadButton";
interface CertificateFilesSettingsProps {
- parameters: ManageSignaturesParameters;
- onParameterChange: (key: keyof ManageSignaturesParameters, value: any) => void;
+ parameters: CertSignParameters;
+ onParameterChange: (key: keyof CertSignParameters, value: any) => void;
disabled?: boolean;
}
diff --git a/frontend/src/components/tools/manageSignatures/CertificateFormatSettings.tsx b/frontend/src/components/tools/certSign/CertificateFormatSettings.tsx
similarity index 91%
rename from frontend/src/components/tools/manageSignatures/CertificateFormatSettings.tsx
rename to frontend/src/components/tools/certSign/CertificateFormatSettings.tsx
index d461caca6..6fac53f4d 100644
--- a/frontend/src/components/tools/manageSignatures/CertificateFormatSettings.tsx
+++ b/frontend/src/components/tools/certSign/CertificateFormatSettings.tsx
@@ -1,9 +1,9 @@
import { Stack, Button } from "@mantine/core";
-import { ManageSignaturesParameters } from "../../../hooks/tools/manageSignatures/useManageSignaturesParameters";
+import { CertSignParameters } from "../../../hooks/tools/certSign/useCertSignParameters";
interface CertificateFormatSettingsProps {
- parameters: ManageSignaturesParameters;
- onParameterChange: (key: keyof ManageSignaturesParameters, value: any) => void;
+ parameters: CertSignParameters;
+ onParameterChange: (key: keyof CertSignParameters, value: any) => void;
disabled?: boolean;
}
diff --git a/frontend/src/components/tools/manageSignatures/CertificateTypeSettings.tsx b/frontend/src/components/tools/certSign/CertificateTypeSettings.tsx
similarity index 90%
rename from frontend/src/components/tools/manageSignatures/CertificateTypeSettings.tsx
rename to frontend/src/components/tools/certSign/CertificateTypeSettings.tsx
index 887a7f528..2d514a161 100644
--- a/frontend/src/components/tools/manageSignatures/CertificateTypeSettings.tsx
+++ b/frontend/src/components/tools/certSign/CertificateTypeSettings.tsx
@@ -1,10 +1,10 @@
import { Stack, Button } from "@mantine/core";
-import { ManageSignaturesParameters } from "../../../hooks/tools/manageSignatures/useManageSignaturesParameters";
+import { CertSignParameters } from "../../../hooks/tools/certSign/useCertSignParameters";
import { useAppConfig } from "../../../hooks/useAppConfig";
interface CertificateTypeSettingsProps {
- parameters: ManageSignaturesParameters;
- onParameterChange: (key: keyof ManageSignaturesParameters, value: any) => void;
+ parameters: CertSignParameters;
+ onParameterChange: (key: keyof CertSignParameters, value: any) => void;
disabled?: boolean;
}
diff --git a/frontend/src/components/tools/manageSignatures/SignatureAppearanceSettings.tsx b/frontend/src/components/tools/certSign/SignatureAppearanceSettings.tsx
similarity index 94%
rename from frontend/src/components/tools/manageSignatures/SignatureAppearanceSettings.tsx
rename to frontend/src/components/tools/certSign/SignatureAppearanceSettings.tsx
index f59537fd7..aa99be742 100644
--- a/frontend/src/components/tools/manageSignatures/SignatureAppearanceSettings.tsx
+++ b/frontend/src/components/tools/certSign/SignatureAppearanceSettings.tsx
@@ -1,10 +1,10 @@
import { Stack, Text, Button, TextInput, NumberInput } from "@mantine/core";
import { useTranslation } from "react-i18next";
-import { ManageSignaturesParameters } from "../../../hooks/tools/manageSignatures/useManageSignaturesParameters";
+import { CertSignParameters } from "../../../hooks/tools/certSign/useCertSignParameters";
interface SignatureAppearanceSettingsProps {
- parameters: ManageSignaturesParameters;
- onParameterChange: (key: keyof ManageSignaturesParameters, value: any) => void;
+ parameters: CertSignParameters;
+ onParameterChange: (key: keyof CertSignParameters, value: any) => void;
disabled?: boolean;
}
diff --git a/frontend/src/components/tooltips/useCertSignTooltips.ts b/frontend/src/components/tooltips/useCertSignTooltips.ts
new file mode 100644
index 000000000..77245a130
--- /dev/null
+++ b/frontend/src/components/tooltips/useCertSignTooltips.ts
@@ -0,0 +1,45 @@
+import { useTranslation } from 'react-i18next';
+import { TooltipContent } from '../../types/tips';
+
+export const useCertSignTooltips = (): TooltipContent => {
+ const { t } = useTranslation();
+
+ return {
+ header: {
+ title: t("certSign.tooltip.header.title", "About Managing Signatures")
+ },
+ tips: [
+ {
+ title: t("certSign.tooltip.overview.title", "What can this tool do?"),
+ description: t("certSign.tooltip.overview.text", "This tool lets you check if your PDFs are digitally signed and add new digital signatures. Digital signatures prove who created or approved a document and show if it has been changed since signing."),
+ bullets: [
+ t("certSign.tooltip.overview.bullet1", "Check existing signatures and their validity"),
+ t("certSign.tooltip.overview.bullet2", "View detailed information about signers and certificates"),
+ t("certSign.tooltip.overview.bullet3", "Add new digital signatures to secure your documents"),
+ t("certSign.tooltip.overview.bullet4", "Multiple files supported with easy navigation")
+ ]
+ },
+ {
+ title: t("certSign.tooltip.validation.title", "Checking Signatures"),
+ description: t("certSign.tooltip.validation.text", "When you check signatures, the tool tells you if they're valid, who signed the document, when it was signed, and whether the document has been changed since signing."),
+ bullets: [
+ t("certSign.tooltip.validation.bullet1", "Shows if signatures are valid or invalid"),
+ t("certSign.tooltip.validation.bullet2", "Displays signer information and signing date"),
+ t("certSign.tooltip.validation.bullet3", "Checks if the document was modified after signing"),
+ t("certSign.tooltip.validation.bullet4", "Can use custom certificates for verification")
+ ]
+ },
+ {
+ title: t("certSign.tooltip.signing.title", "Adding Signatures"),
+ description: t("certSign.tooltip.signing.text", "To sign a PDF, you need a digital certificate (like PEM, PKCS12, or JKS). You can choose to make the signature visible on the document or keep it invisible for security only."),
+ bullets: [
+ t("certSign.tooltip.signing.bullet1", "Supports PEM, PKCS12, JKS, and server certificate formats"),
+ t("certSign.tooltip.signing.bullet2", "Option to show or hide signature on the PDF"),
+ t("certSign.tooltip.signing.bullet3", "Add reason, location, and signer name"),
+ t("certSign.tooltip.signing.bullet4", "Choose which page to place visible signatures"),
+ t("certSign.tooltip.signing.bullet5", "Use server certificate for simple 'Sign with Stirling-PDF' option")
+ ]
+ }
+ ]
+ };
+};
\ No newline at end of file
diff --git a/frontend/src/components/tooltips/useCertificateTypeTips.ts b/frontend/src/components/tooltips/useCertificateTypeTips.ts
index b01da9c2f..9e6a13076 100644
--- a/frontend/src/components/tooltips/useCertificateTypeTips.ts
+++ b/frontend/src/components/tooltips/useCertificateTypeTips.ts
@@ -6,26 +6,26 @@ export const useCertificateTypeTips = (): TooltipContent => {
return {
header: {
- title: t("manageSignatures.certType.tooltip.header.title", "About Certificate Types")
+ title: t("certSign.certType.tooltip.header.title", "About Certificate Types")
},
tips: [
{
- title: t("manageSignatures.certType.tooltip.what.title", "What's a certificate?"),
- description: t("manageSignatures.certType.tooltip.what.text", "It's a secure ID for your signature that proves you signed. Unless you're required to sign via certificate, we recommend using another secure method like Type, Draw, or Upload.")
+ title: t("certSign.certType.tooltip.what.title", "What's a certificate?"),
+ description: t("certSign.certType.tooltip.what.text", "It's a secure ID for your signature that proves you signed. Unless you're required to sign via certificate, we recommend using another secure method like Type, Draw, or Upload.")
},
{
- title: t("manageSignatures.certType.tooltip.which.title", "Which option should I use?"),
- description: t("manageSignatures.certType.tooltip.which.text", "Choose the format that matches your certificate file:"),
+ title: t("certSign.certType.tooltip.which.title", "Which option should I use?"),
+ description: t("certSign.certType.tooltip.which.text", "Choose the format that matches your certificate file:"),
bullets: [
- t("manageSignatures.certType.tooltip.which.bullet1", "PKCS12 (.p12) – one combined file (most common)"),
- t("manageSignatures.certType.tooltip.which.bullet2", "PFX (.pfx) – Microsoft's version of PKCS12"),
- t("manageSignatures.certType.tooltip.which.bullet3", "PEM – separate private-key and certificate .pem files"),
- t("manageSignatures.certType.tooltip.which.bullet4", "JKS – Java .jks keystore for dev / CI-CD workflows")
+ t("certSign.certType.tooltip.which.bullet1", "PKCS12 (.p12) – one combined file (most common)"),
+ t("certSign.certType.tooltip.which.bullet2", "PFX (.pfx) – Microsoft's version of PKCS12"),
+ t("certSign.certType.tooltip.which.bullet3", "PEM – separate private-key and certificate .pem files"),
+ t("certSign.certType.tooltip.which.bullet4", "JKS – Java .jks keystore for dev / CI-CD workflows")
]
},
{
- title: t("manageSignatures.certType.tooltip.convert.title", "Key not listed?"),
- description: t("manageSignatures.certType.tooltip.convert.text", "Convert your file to a Java keystore (.jks) with keytool, then pick JKS.")
+ title: t("certSign.certType.tooltip.convert.title", "Key not listed?"),
+ description: t("certSign.certType.tooltip.convert.text", "Convert your file to a Java keystore (.jks) with keytool, then pick JKS.")
}
]
};
diff --git a/frontend/src/components/tooltips/useManageSignaturesTooltips.ts b/frontend/src/components/tooltips/useManageSignaturesTooltips.ts
deleted file mode 100644
index 3ff95cda5..000000000
--- a/frontend/src/components/tooltips/useManageSignaturesTooltips.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { useTranslation } from 'react-i18next';
-import { TooltipContent } from '../../types/tips';
-
-export const useManageSignaturesTooltips = (): TooltipContent => {
- const { t } = useTranslation();
-
- return {
- header: {
- title: t("manageSignatures.tooltip.header.title", "About Managing Signatures")
- },
- tips: [
- {
- title: t("manageSignatures.tooltip.overview.title", "What can this tool do?"),
- description: t("manageSignatures.tooltip.overview.text", "This tool lets you check if your PDFs are digitally signed and add new digital signatures. Digital signatures prove who created or approved a document and show if it has been changed since signing."),
- bullets: [
- t("manageSignatures.tooltip.overview.bullet1", "Check existing signatures and their validity"),
- t("manageSignatures.tooltip.overview.bullet2", "View detailed information about signers and certificates"),
- t("manageSignatures.tooltip.overview.bullet3", "Add new digital signatures to secure your documents"),
- t("manageSignatures.tooltip.overview.bullet4", "Multiple files supported with easy navigation")
- ]
- },
- {
- title: t("manageSignatures.tooltip.validation.title", "Checking Signatures"),
- description: t("manageSignatures.tooltip.validation.text", "When you check signatures, the tool tells you if they're valid, who signed the document, when it was signed, and whether the document has been changed since signing."),
- bullets: [
- t("manageSignatures.tooltip.validation.bullet1", "Shows if signatures are valid or invalid"),
- t("manageSignatures.tooltip.validation.bullet2", "Displays signer information and signing date"),
- t("manageSignatures.tooltip.validation.bullet3", "Checks if the document was modified after signing"),
- t("manageSignatures.tooltip.validation.bullet4", "Can use custom certificates for verification")
- ]
- },
- {
- title: t("manageSignatures.tooltip.signing.title", "Adding Signatures"),
- description: t("manageSignatures.tooltip.signing.text", "To sign a PDF, you need a digital certificate (like PEM, PKCS12, or JKS). You can choose to make the signature visible on the document or keep it invisible for security only."),
- bullets: [
- t("manageSignatures.tooltip.signing.bullet1", "Supports PEM, PKCS12, JKS, and server certificate formats"),
- t("manageSignatures.tooltip.signing.bullet2", "Option to show or hide signature on the PDF"),
- t("manageSignatures.tooltip.signing.bullet3", "Add reason, location, and signer name"),
- t("manageSignatures.tooltip.signing.bullet4", "Choose which page to place visible signatures"),
- t("manageSignatures.tooltip.signing.bullet5", "Use server certificate for simple 'Sign with Stirling-PDF' option")
- ]
- }
- ]
- };
-};
\ No newline at end of file
diff --git a/frontend/src/components/tooltips/useSignModeTips.ts b/frontend/src/components/tooltips/useSignModeTips.ts
index 63bbe93dc..6b68565f1 100644
--- a/frontend/src/components/tooltips/useSignModeTips.ts
+++ b/frontend/src/components/tooltips/useSignModeTips.ts
@@ -6,30 +6,30 @@ export const useSignModeTips = (): TooltipContent => {
return {
header: {
- title: t("manageSignatures.signMode.tooltip.header.title", "About PDF Signatures")
+ title: t("certSign.signMode.tooltip.header.title", "About PDF Signatures")
},
tips: [
{
- title: t("manageSignatures.signMode.tooltip.overview.title", "How signatures work"),
- description: t("manageSignatures.signMode.tooltip.overview.text", "Both modes seal the document (any edits are flagged as tampering) and record who/when/how for auditing. Viewer trust depends on the certificate chain.")
+ title: t("certSign.signMode.tooltip.overview.title", "How signatures work"),
+ description: t("certSign.signMode.tooltip.overview.text", "Both modes seal the document (any edits are flagged as tampering) and record who/when/how for auditing. Viewer trust depends on the certificate chain.")
},
{
- title: t("manageSignatures.signMode.tooltip.manual.title", "Manual - Bring your certificate"),
- description: t("manageSignatures.signMode.tooltip.manual.text", "Use your own certificate files for brand-aligned identity. Can display Trusted when your CA/chain is recognized."),
+ title: t("certSign.signMode.tooltip.manual.title", "Manual - Bring your certificate"),
+ description: t("certSign.signMode.tooltip.manual.text", "Use your own certificate files for brand-aligned identity. Can display Trusted when your CA/chain is recognized."),
bullets: [
- t("manageSignatures.signMode.tooltip.manual.use", "Use for: customer-facing, legal, compliance.")
+ t("certSign.signMode.tooltip.manual.use", "Use for: customer-facing, legal, compliance.")
]
},
{
- title: t("manageSignatures.signMode.tooltip.auto.title", "Auto - Zero-setup, instant system seal"),
- description: t("manageSignatures.signMode.tooltip.auto.text", "Signs with a server self-signed certificate. Same tamper-evident seal and audit trail; typically shows Unverified in viewers."),
+ title: t("certSign.signMode.tooltip.auto.title", "Auto - Zero-setup, instant system seal"),
+ description: t("certSign.signMode.tooltip.auto.text", "Signs with a server self-signed certificate. Same tamper-evident seal and audit trail; typically shows Unverified in viewers."),
bullets: [
- t("manageSignatures.signMode.tooltip.auto.use", "Use when: you need speed and consistent internal identity across reviews and records.")
+ t("certSign.signMode.tooltip.auto.use", "Use when: you need speed and consistent internal identity across reviews and records.")
]
},
{
- title: t("manageSignatures.signMode.tooltip.rule.title", "Rule of thumb"),
- description: t("manageSignatures.signMode.tooltip.rule.text", "Need recipient Trusted status? Manual. Need a fast, tamper-evident seal and audit trail with no setup? Auto.")
+ title: t("certSign.signMode.tooltip.rule.title", "Rule of thumb"),
+ description: t("certSign.signMode.tooltip.rule.text", "Need recipient Trusted status? Manual. Need a fast, tamper-evident seal and audit trail with no setup? Auto.")
}
]
};
diff --git a/frontend/src/components/tooltips/useSignatureAppearanceTips.ts b/frontend/src/components/tooltips/useSignatureAppearanceTips.ts
index 20580dabb..79dc3f65a 100644
--- a/frontend/src/components/tooltips/useSignatureAppearanceTips.ts
+++ b/frontend/src/components/tooltips/useSignatureAppearanceTips.ts
@@ -6,26 +6,26 @@ export const useSignatureAppearanceTips = (): TooltipContent => {
return {
header: {
- title: t("manageSignatures.appearance.tooltip.header.title", "About Signature Appearance")
+ title: t("certSign.appearance.tooltip.header.title", "About Signature Appearance")
},
tips: [
{
- title: t("manageSignatures.appearance.tooltip.invisible.title", "Invisible Signatures"),
- description: t("manageSignatures.appearance.tooltip.invisible.text", "The signature is added to the PDF for security but won't be visible when viewing the document. Perfect for legal requirements without changing the document's appearance."),
+ title: t("certSign.appearance.tooltip.invisible.title", "Invisible Signatures"),
+ description: t("certSign.appearance.tooltip.invisible.text", "The signature is added to the PDF for security but won't be visible when viewing the document. Perfect for legal requirements without changing the document's appearance."),
bullets: [
- t("manageSignatures.appearance.tooltip.invisible.bullet1", "Provides security without visual changes"),
- t("manageSignatures.appearance.tooltip.invisible.bullet2", "Meets legal requirements for digital signing"),
- t("manageSignatures.appearance.tooltip.invisible.bullet3", "Doesn't affect document layout or design")
+ t("certSign.appearance.tooltip.invisible.bullet1", "Provides security without visual changes"),
+ t("certSign.appearance.tooltip.invisible.bullet2", "Meets legal requirements for digital signing"),
+ t("certSign.appearance.tooltip.invisible.bullet3", "Doesn't affect document layout or design")
]
},
{
- title: t("manageSignatures.appearance.tooltip.visible.title", "Visible Signatures"),
- description: t("manageSignatures.appearance.tooltip.visible.text", "Shows a signature block on the PDF with your name, date, and optional details. Useful when you want readers to clearly see the document is signed."),
+ title: t("certSign.appearance.tooltip.visible.title", "Visible Signatures"),
+ description: t("certSign.appearance.tooltip.visible.text", "Shows a signature block on the PDF with your name, date, and optional details. Useful when you want readers to clearly see the document is signed."),
bullets: [
- t("manageSignatures.appearance.tooltip.visible.bullet1", "Shows signer name and date on the document"),
- t("manageSignatures.appearance.tooltip.visible.bullet2", "Can include reason and location for signing"),
- t("manageSignatures.appearance.tooltip.visible.bullet3", "Choose which page to place the signature"),
- t("manageSignatures.appearance.tooltip.visible.bullet4", "Optional logo can be included")
+ t("certSign.appearance.tooltip.visible.bullet1", "Shows signer name and date on the document"),
+ t("certSign.appearance.tooltip.visible.bullet2", "Can include reason and location for signing"),
+ t("certSign.appearance.tooltip.visible.bullet3", "Choose which page to place the signature"),
+ t("certSign.appearance.tooltip.visible.bullet4", "Optional logo can be included")
]
}
]
diff --git a/frontend/src/data/useTranslatedToolRegistry.tsx b/frontend/src/data/useTranslatedToolRegistry.tsx
index 1c42e13e9..ce4b6ff78 100644
--- a/frontend/src/data/useTranslatedToolRegistry.tsx
+++ b/frontend/src/data/useTranslatedToolRegistry.tsx
@@ -19,7 +19,7 @@ import AutoRename from "../tools/AutoRename";
import SingleLargePage from "../tools/SingleLargePage";
import UnlockPdfForms from "../tools/UnlockPdfForms";
import RemoveCertificateSign from "../tools/RemoveCertificateSign";
-import ManageSignatures from "../tools/ManageSignatures";
+import CertSign from "../tools/CertSign";
import BookletImposition from "../tools/BookletImposition";
import Flatten from "../tools/Flatten";
import Rotate from "../tools/Rotate";
@@ -37,7 +37,7 @@ import { ocrOperationConfig } from "../hooks/tools/ocr/useOCROperation";
import { convertOperationConfig } from "../hooks/tools/convert/useConvertOperation";
import { removeCertificateSignOperationConfig } from "../hooks/tools/removeCertificateSign/useRemoveCertificateSignOperation";
import { changePermissionsOperationConfig } from "../hooks/tools/changePermissions/useChangePermissionsOperation";
-import { manageSignaturesOperationConfig } from "../hooks/tools/manageSignatures/useManageSignaturesOperation";
+import { certSignOperationConfig } from "../hooks/tools/certSign/useCertSignOperation";
import { bookletImpositionOperationConfig } from "../hooks/tools/bookletImposition/useBookletImpositionOperation";
import { mergeOperationConfig } from '../hooks/tools/merge/useMergeOperation';
import { autoRenameOperationConfig } from "../hooks/tools/autoRename/useAutoRenameOperation";
@@ -56,7 +56,7 @@ import AddWatermarkSingleStepSettings from "../components/tools/addWatermark/Add
import OCRSettings from "../components/tools/ocr/OCRSettings";
import ConvertSettings from "../components/tools/convert/ConvertSettings";
import ChangePermissionsSettings from "../components/tools/changePermissions/ChangePermissionsSettings";
-import CertificateTypeSettings from "../components/tools/manageSignatures/CertificateTypeSettings";
+import CertificateTypeSettings from "../components/tools/certSign/CertificateTypeSettings";
import BookletImpositionSettings from "../components/tools/bookletImposition/BookletImpositionSettings";
import FlattenSettings from "../components/tools/flatten/FlattenSettings";
import RedactSingleStepSettings from "../components/tools/redact/RedactSingleStepSettings";
@@ -160,16 +160,16 @@ export function useFlatToolRegistry(): ToolRegistry {
const allTools: ToolRegistry = {
// Signing
- manageSignatures: {
+ certSign: {
icon: ,
name: t("home.certSign.title", "Certificate Sign"),
- component: ManageSignatures,
+ component: CertSign,
description: t("home.certSign.desc", "Sign PDF documents using digital certificates"),
categoryId: ToolCategoryId.STANDARD_TOOLS,
subcategoryId: SubcategoryId.SIGNING,
maxFiles: -1,
endpoints: ["cert-sign"],
- operationConfig: manageSignaturesOperationConfig,
+ operationConfig: certSignOperationConfig,
settingsComponent: CertificateTypeSettings,
},
sign: {
diff --git a/frontend/src/hooks/tools/manageSignatures/useManageSignaturesOperation.ts b/frontend/src/hooks/tools/certSign/useCertSignOperation.ts
similarity index 74%
rename from frontend/src/hooks/tools/manageSignatures/useManageSignaturesOperation.ts
rename to frontend/src/hooks/tools/certSign/useCertSignOperation.ts
index dcf7ce655..0422e7d56 100644
--- a/frontend/src/hooks/tools/manageSignatures/useManageSignaturesOperation.ts
+++ b/frontend/src/hooks/tools/certSign/useCertSignOperation.ts
@@ -1,10 +1,10 @@
import { useTranslation } from 'react-i18next';
import { ToolType, useToolOperation } from '../shared/useToolOperation';
import { createStandardErrorHandler } from '../../../utils/toolErrorHandler';
-import { ManageSignaturesParameters, defaultParameters } from './useManageSignaturesParameters';
+import { CertSignParameters, defaultParameters } from './useCertSignParameters';
// Build form data for signing
-export const buildManageSignaturesFormData = (parameters: ManageSignaturesParameters, file: File): FormData => {
+export const buildCertSignFormData = (parameters: CertSignParameters, file: File): FormData => {
const formData = new FormData();
formData.append('fileInput', file);
@@ -52,20 +52,20 @@ export const buildManageSignaturesFormData = (parameters: ManageSignaturesParame
};
// Static configuration object
-export const manageSignaturesOperationConfig = {
+export const certSignOperationConfig = {
toolType: ToolType.singleFile,
- buildFormData: buildManageSignaturesFormData,
- operationType: 'manageSignatures',
+ buildFormData: buildCertSignFormData,
+ operationType: 'certSign',
endpoint: '/api/v1/security/cert-sign',
multiFileEndpoint: false,
defaultParameters,
} as const;
-export const useManageSignaturesOperation = () => {
+export const useCertSignOperation = () => {
const { t } = useTranslation();
- return useToolOperation({
- ...manageSignaturesOperationConfig,
- getErrorMessage: createStandardErrorHandler(t('manageSignatures.error.failed', 'An error occurred while processing signatures.'))
+ return useToolOperation({
+ ...certSignOperationConfig,
+ getErrorMessage: createStandardErrorHandler(t('certSign.error.failed', 'An error occurred while processing signatures.'))
});
};
\ No newline at end of file
diff --git a/frontend/src/hooks/tools/manageSignatures/useManageSignaturesParameters.ts b/frontend/src/hooks/tools/certSign/useCertSignParameters.ts
similarity index 80%
rename from frontend/src/hooks/tools/manageSignatures/useManageSignaturesParameters.ts
rename to frontend/src/hooks/tools/certSign/useCertSignParameters.ts
index 70fa80c29..aa49cb31c 100644
--- a/frontend/src/hooks/tools/manageSignatures/useManageSignaturesParameters.ts
+++ b/frontend/src/hooks/tools/certSign/useCertSignParameters.ts
@@ -1,7 +1,7 @@
import { BaseParameters } from '../../../types/parameters';
import { useBaseParameters, BaseParametersHook } from '../shared/useBaseParameters';
-export interface ManageSignaturesParameters extends BaseParameters {
+export interface CertSignParameters extends BaseParameters {
// Sign mode selection
signMode: 'MANUAL' | 'AUTO';
// Certificate signing options (only for manual mode)
@@ -21,7 +21,7 @@ export interface ManageSignaturesParameters extends BaseParameters {
showLogo: boolean;
}
-export const defaultParameters: ManageSignaturesParameters = {
+export const defaultParameters: CertSignParameters = {
signMode: 'MANUAL',
certType: '',
password: '',
@@ -33,12 +33,12 @@ export const defaultParameters: ManageSignaturesParameters = {
showLogo: true,
};
-export type ManageSignaturesParametersHook = BaseParametersHook;
+export type CertSignParametersHook = BaseParametersHook;
-export const useManageSignaturesParameters = (): ManageSignaturesParametersHook => {
+export const useCertSignParameters = (): CertSignParametersHook => {
return useBaseParameters({
defaultParameters,
- endpointName: 'manage-signatures',
+ endpointName: 'cert-sign',
validateFn: (params) => {
// Auto mode (server certificate) - no additional validation needed
if (params.signMode === 'AUTO') {
diff --git a/frontend/src/tools/ManageSignatures.tsx b/frontend/src/tools/CertSign.tsx
similarity index 82%
rename from frontend/src/tools/ManageSignatures.tsx
rename to frontend/src/tools/CertSign.tsx
index afc1fdd47..fd8dabc9c 100644
--- a/frontend/src/tools/ManageSignatures.tsx
+++ b/frontend/src/tools/CertSign.tsx
@@ -1,24 +1,24 @@
import { useTranslation } from "react-i18next";
import { createToolFlow } from "../components/tools/shared/createToolFlow";
-import CertificateTypeSettings from "../components/tools/manageSignatures/CertificateTypeSettings";
-import CertificateFormatSettings from "../components/tools/manageSignatures/CertificateFormatSettings";
-import CertificateFilesSettings from "../components/tools/manageSignatures/CertificateFilesSettings";
-import SignatureAppearanceSettings from "../components/tools/manageSignatures/SignatureAppearanceSettings";
-import { useManageSignaturesParameters } from "../hooks/tools/manageSignatures/useManageSignaturesParameters";
-import { useManageSignaturesOperation } from "../hooks/tools/manageSignatures/useManageSignaturesOperation";
+import CertificateTypeSettings from "../components/tools/certSign/CertificateTypeSettings";
+import CertificateFormatSettings from "../components/tools/certSign/CertificateFormatSettings";
+import CertificateFilesSettings from "../components/tools/certSign/CertificateFilesSettings";
+import SignatureAppearanceSettings from "../components/tools/certSign/SignatureAppearanceSettings";
+import { useCertSignParameters } from "../hooks/tools/certSign/useCertSignParameters";
+import { useCertSignOperation } from "../hooks/tools/certSign/useCertSignOperation";
import { useCertificateTypeTips } from "../components/tooltips/useCertificateTypeTips";
import { useSignatureAppearanceTips } from "../components/tooltips/useSignatureAppearanceTips";
import { useSignModeTips } from "../components/tooltips/useSignModeTips";
import { useBaseTool } from "../hooks/tools/shared/useBaseTool";
import { BaseToolProps, ToolComponent } from "../types/tool";
-const ManageSignatures = (props: BaseToolProps) => {
+const CertSign = (props: BaseToolProps) => {
const { t } = useTranslation();
const base = useBaseTool(
- 'manageSignatures',
- useManageSignaturesParameters,
- useManageSignaturesOperation,
+ 'certSign',
+ useCertSignParameters,
+ useCertSignOperation,
props
);
@@ -126,6 +126,6 @@ const ManageSignatures = (props: BaseToolProps) => {
};
// Static method to get the operation hook for automation
-ManageSignatures.tool = () => useManageSignaturesOperation;
+CertSign.tool = () => useCertSignOperation;
-export default ManageSignatures as ToolComponent;
\ No newline at end of file
+export default CertSign as ToolComponent;
\ No newline at end of file
diff --git a/frontend/src/types/toolId.ts b/frontend/src/types/toolId.ts
index 7cf39b358..1a5fb1d4f 100644
--- a/frontend/src/types/toolId.ts
+++ b/frontend/src/types/toolId.ts
@@ -56,7 +56,6 @@ const TOOL_IDS = [
'devSsoGuide',
'devAirgapped',
'bookletImposition',
- 'manageSignatures',
] as const;
// Tool identity - what PDF operation we're performing (type-safe)
diff --git a/frontend/src/utils/urlMapping.ts b/frontend/src/utils/urlMapping.ts
index 6ec06c89d..0c271952c 100644
--- a/frontend/src/utils/urlMapping.ts
+++ b/frontend/src/utils/urlMapping.ts
@@ -31,7 +31,7 @@ export const URL_TO_TOOL_MAP: Record = {
'/unlock-pdf-forms': 'unlockPDFForms',
'/remove-certificate-sign': 'removeCertSign',
'/remove-cert-sign': 'removeCertSign',
- '/cert-sign': 'manageSignatures',
- '/manage-signatures': 'manageSignatures',
+ '/cert-sign': 'certSign',
+ '/manage-signatures': 'certSign',
'/booklet-imposition': 'bookletImposition',
};