2025-09-03 00:12:16 +01:00
|
|
|
import { Stack, Text, TextInput } from "@mantine/core";
|
|
|
|
import { useTranslation } from "react-i18next";
|
|
|
|
import { ManageSignaturesParameters } from "../../../hooks/tools/manageSignatures/useManageSignaturesParameters";
|
|
|
|
import FileUploadButton from "../../shared/FileUploadButton";
|
|
|
|
|
|
|
|
interface CertificateFilesSettingsProps {
|
|
|
|
parameters: ManageSignaturesParameters;
|
|
|
|
onParameterChange: (key: keyof ManageSignaturesParameters, value: any) => void;
|
|
|
|
disabled?: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
const CertificateFilesSettings = ({ parameters, onParameterChange, disabled = false }: CertificateFilesSettingsProps) => {
|
|
|
|
const { t } = useTranslation();
|
|
|
|
|
|
|
|
return (
|
|
|
|
<Stack gap="md">
|
|
|
|
{/* Certificate Files based on type */}
|
|
|
|
{parameters.certType === 'PEM' && (
|
|
|
|
<Stack gap="sm">
|
|
|
|
<FileUploadButton
|
|
|
|
file={parameters.privateKeyFile}
|
|
|
|
onChange={(file) => onParameterChange('privateKeyFile', file || undefined)}
|
2025-09-04 16:29:05 +01:00
|
|
|
accept=".pem,.der,.key"
|
2025-09-03 00:12:16 +01:00
|
|
|
disabled={disabled}
|
2025-09-04 16:29:05 +01:00
|
|
|
placeholder={t('certSign.choosePrivateKey', 'Choose Private Key File')}
|
2025-09-03 00:12:16 +01:00
|
|
|
/>
|
|
|
|
{parameters.privateKeyFile && (
|
|
|
|
<FileUploadButton
|
|
|
|
file={parameters.certFile}
|
|
|
|
onChange={(file) => onParameterChange('certFile', file || undefined)}
|
2025-09-04 16:29:05 +01:00
|
|
|
accept=".pem,.der,.crt,.cer"
|
2025-09-03 00:12:16 +01:00
|
|
|
disabled={disabled}
|
2025-09-04 16:29:05 +01:00
|
|
|
placeholder={t('certSign.chooseCertificate', 'Choose Certificate File')}
|
2025-09-03 00:12:16 +01:00
|
|
|
/>
|
|
|
|
)}
|
|
|
|
</Stack>
|
|
|
|
)}
|
|
|
|
|
|
|
|
{parameters.certType === 'PKCS12' && (
|
|
|
|
<FileUploadButton
|
|
|
|
file={parameters.p12File}
|
|
|
|
onChange={(file) => onParameterChange('p12File', file || undefined)}
|
2025-09-04 16:29:05 +01:00
|
|
|
accept=".p12"
|
2025-09-03 00:12:16 +01:00
|
|
|
disabled={disabled}
|
2025-09-04 16:29:05 +01:00
|
|
|
placeholder={t('certSign.chooseP12File', 'Choose PKCS12 File')}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
|
|
|
|
{parameters.certType === 'PFX' && (
|
|
|
|
<FileUploadButton
|
|
|
|
file={parameters.p12File}
|
|
|
|
onChange={(file) => onParameterChange('p12File', file || undefined)}
|
|
|
|
accept=".pfx"
|
|
|
|
disabled={disabled}
|
|
|
|
placeholder={t('certSign.choosePfxFile', 'Choose PFX File')}
|
2025-09-03 00:12:16 +01:00
|
|
|
/>
|
|
|
|
)}
|
|
|
|
|
|
|
|
{parameters.certType === 'JKS' && (
|
|
|
|
<FileUploadButton
|
|
|
|
file={parameters.jksFile}
|
|
|
|
onChange={(file) => onParameterChange('jksFile', file || undefined)}
|
|
|
|
accept=".jks,.keystore"
|
|
|
|
disabled={disabled}
|
2025-09-04 16:29:05 +01:00
|
|
|
placeholder={t('certSign.chooseJksFile', 'Choose JKS File')}
|
2025-09-03 00:12:16 +01:00
|
|
|
/>
|
|
|
|
)}
|
|
|
|
|
2025-09-05 15:49:59 +01:00
|
|
|
{parameters.signMode === 'AUTO' && (
|
2025-09-03 22:57:58 +01:00
|
|
|
<Text c="dimmed" size="sm">
|
2025-09-04 16:29:05 +01:00
|
|
|
{t('certSign.serverCertMessage', 'Using server certificate - no files or password required')}
|
2025-09-03 22:57:58 +01:00
|
|
|
</Text>
|
|
|
|
)}
|
|
|
|
|
2025-09-03 00:12:16 +01:00
|
|
|
{/* Password - only show when files are uploaded */}
|
|
|
|
{parameters.certType && (
|
|
|
|
(parameters.certType === 'PEM' && parameters.privateKeyFile && parameters.certFile) ||
|
|
|
|
(parameters.certType === 'PKCS12' && parameters.p12File) ||
|
2025-09-04 16:29:05 +01:00
|
|
|
(parameters.certType === 'PFX' && parameters.p12File) ||
|
2025-09-03 00:12:16 +01:00
|
|
|
(parameters.certType === 'JKS' && parameters.jksFile)
|
|
|
|
) && (
|
|
|
|
<TextInput
|
2025-09-04 16:29:05 +01:00
|
|
|
label={t('certSign.password', 'Certificate Password')}
|
|
|
|
placeholder={t('certSign.passwordOptional', 'Leave empty if no password')}
|
2025-09-03 00:12:16 +01:00
|
|
|
type="password"
|
|
|
|
value={parameters.password}
|
|
|
|
onChange={(event) => onParameterChange('password', event.currentTarget.value)}
|
|
|
|
disabled={disabled}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
</Stack>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default CertificateFilesSettings;
|