import { faCheck, faCopy, faDownload } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import FileSaver from "file-saver"; import { IconButton, Tooltip } from "@app/components/v2"; import { useTimedReset } from "@app/hooks"; type Props = { serialNumber: string; certificate: string; certificateChain: string; privateKey?: string; }; export const CertificateContent = ({ serialNumber, certificate, certificateChain, privateKey }: Props) => { const [copyTextSerialNumber, isCopyingSerialNumber, setCopyTextSerialNumber] = useTimedReset({ initialState: "Copy to clipboard" }); const [copyTextCertificate, isCopyingCertificate, setCopyTextCertificate] = useTimedReset( { initialState: "Copy to clipboard" } ); const [copyTextCertificateChain, isCopyingCertificateChain, setCopyTextCertificateChain] = useTimedReset({ initialState: "Copy to clipboard" }); const [copyTextCertificateSk, isCopyingCertificateSk, setCopyTextCertificateSk] = useTimedReset({ initialState: "Copy to clipboard" }); const downloadTxtFile = (filename: string, content: string) => { const blob = new Blob([content], { type: "text/plain;charset=utf-8" }); FileSaver.saveAs(blob, filename); }; return (

Serial Number

{serialNumber}

{ navigator.clipboard.writeText(serialNumber); setCopyTextSerialNumber("Copied"); }} >

Certificate Body

{ navigator.clipboard.writeText(certificate); setCopyTextCertificate("Copied"); }} > { downloadTxtFile("cert.pem", certificate); }} >

{certificate}

{certificateChain && ( <>

Certificate Chain

{ navigator.clipboard.writeText(certificateChain); setCopyTextCertificateChain("Copied"); }} > { downloadTxtFile("chain.pem", certificateChain); }} >

{certificateChain}

)} {privateKey && ( <>

Certificate Private Key

{ navigator.clipboard.writeText(privateKey); setCopyTextCertificateSk("Copied"); }} > { downloadTxtFile("private_key.txt", privateKey); }} >

{privateKey}

)}
); };