UNPKG

dte-signer-sv

Version:

Sign Digital Tax Documents (DTE) for El Salvador's Ministry of Finance

60 lines 2.07 kB
import Certificate from "./lib/certificate.js"; import signer from "./lib/signer.js"; import { readFileSync } from 'fs'; /** * Signs a DTE (Digital Tax Document) for El Salvador using a certificate and private key password. * * @param params - The parameters for signing the DTE * @returns A Promise that resolves to the signed DTE in JWS compact format * * @example * // Example 1: Using certificate file path * const signedDTE = await signDTE({ * dte: { * identificacion: { * version: 1, * ambiente: "00", * tipoDte: "01", * // ... other DTE fields * } * }, * privatePassword: "mySecurePassword123", * certificate: "./certificates/88888888888888.crt", * loadCertificateFromPath: true * }); * * @example * // Example 2: Using certificate XML content directly * const certXML = fs.readFileSync("./certificate.crt", "utf8"); * const signedDTE = await signDTE({ * dte: myDTEObject, * privatePassword: "mySecurePassword123", * certificate: certXML * }); * * @throws {Error} Throws an error if the private password is invalid * @throws {Error} Throws an error if the certificate cannot be parsed * @throws {Error} Throws an error if the certificate file is not found (when loadCertificateFromPath is true) */ export const signDTE = async (params) => { const { privatePassword, certificate, loadCertificateFromPath } = params; let certificateData; if (loadCertificateFromPath) { certificateData = readFileSync(certificate, "utf8"); } else { certificateData = certificate; } const certificateObject = await new Certificate().parseCertificate(certificateData); const isPrivatePasswordValid = certificateObject.validatePrivatePassword(privatePassword); if (!isPrivatePasswordValid) { throw new Error("Invalid private password"); } const signature = await signer({ dteObject: params.dte, certificate: certificateObject }); return signature; }; export default signDTE; //# sourceMappingURL=index.js.map