@ripwords/myinvois-client 0.0.10 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +99 -0
- package/README.md +128 -4
- package/bun.lock +138 -122
- package/dist/0X-CG1S1WKn.d.ts +210 -0
- package/dist/0X-ChfmeAYF.d.cts +211 -0
- package/dist/1X-CmlbG02M.d.ts +111 -0
- package/dist/1X-DFikQbP0.d.cts +20 -0
- package/dist/1X-DbFshzup.d.ts +19 -0
- package/dist/1X-jFrFCOs0.d.cts +112 -0
- package/dist/2X-5cE4ojEX.d.cts +140 -0
- package/dist/2X-DA6J6Wd7.d.ts +139 -0
- package/dist/2X-FWZ1rYVt.d.cts +40 -0
- package/dist/2X-eC_p0QJf.d.ts +39 -0
- package/dist/3X-D9duw0Ro.d.cts +21 -0
- package/dist/3X-DbfkwdkO.d.ts +20 -0
- package/dist/3X-GxuN79Ax.d.ts +61 -0
- package/dist/3X-r9xbWJ2l.d.cts +62 -0
- package/dist/4X-1ZkK-uH5.d.cts +31 -0
- package/dist/4X-CLO9OuKa.d.cts +265 -0
- package/dist/4X-CnHtgO6u.d.ts +30 -0
- package/dist/4X-DYz_nYSD.d.ts +264 -0
- package/dist/5X-BzPEdkbC.d.ts +21 -0
- package/dist/5X-BziH0a09.d.cts +77 -0
- package/dist/5X-Cfe39fFc.d.cts +22 -0
- package/dist/5X-kBF74qx1.d.ts +76 -0
- package/dist/6X-BceErbps.d.cts +105 -0
- package/dist/6X-C_xpeu6J.d.ts +15 -0
- package/dist/6X-DLWEe1bP.d.cts +16 -0
- package/dist/6X-sQZfT0ZK.d.ts +104 -0
- package/dist/7X-Bet2agJ6.d.ts +15 -0
- package/dist/7X-BoKQxMoO.d.ts +70 -0
- package/dist/7X-CucHYQsA.d.cts +16 -0
- package/dist/7X-CwPAqozm.d.cts +71 -0
- package/dist/8X-BIjJ9kaV.d.cts +110 -0
- package/dist/8X-BOEWATU3.d.ts +109 -0
- package/dist/8X-CJpqd5xp.d.cts +19 -0
- package/dist/8X-s5AzkHR-.d.ts +18 -0
- package/dist/9X-BBDP1gZ6.d.ts +14 -0
- package/dist/9X-CP5Xp6bE.d.cts +98 -0
- package/dist/9X-D3aOVCnz.d.cts +15 -0
- package/dist/9X-DAAZV4sr.d.ts +97 -0
- package/dist/AX-CmpMMhII.d.ts +110 -0
- package/dist/AX-DFzpxGOT.d.cts +111 -0
- package/dist/BX-CyiqNE6b.d.cts +115 -0
- package/dist/BX-j78z_ju_.d.ts +114 -0
- package/dist/CX-B6rEhQx7.d.ts +127 -0
- package/dist/CX-BTPvC3Dv.d.cts +128 -0
- package/dist/DX-BD4-hTCh.d.cts +115 -0
- package/dist/DX-CAmMnx5a.d.ts +114 -0
- package/dist/EX-CXhSC85J.d.ts +106 -0
- package/dist/EX-mTHCH0Yk.d.cts +107 -0
- package/dist/FX-DOOMoQl2.d.cts +127 -0
- package/dist/FX-DYVIJ3l0.d.ts +126 -0
- package/dist/GX-8URJ7WHz.d.cts +136 -0
- package/dist/GX-eBOVHqi6.d.ts +135 -0
- package/dist/HX-49z8CzsE.d.cts +126 -0
- package/dist/HX-Dz5T0xXI.d.ts +125 -0
- package/dist/IX-B6kblmBs.d.cts +23 -0
- package/dist/IX-PiKYro5a.d.ts +22 -0
- package/dist/JX-DMwHLGEE.d.cts +104 -0
- package/dist/JX-Dvnt0mSK.d.ts +103 -0
- package/dist/KX-BUb8e0yg.d.ts +150 -0
- package/dist/KX-DaJPkefl.d.cts +151 -0
- package/dist/LX-BnILxjdS.d.cts +123 -0
- package/dist/LX-l5ZBaGov.d.ts +122 -0
- package/dist/MX-BbPO8mTj.d.cts +153 -0
- package/dist/MX-C7C15AWi.d.ts +152 -0
- package/dist/NX-C7nFVC-D.d.ts +121 -0
- package/dist/NX-xy5uw7H3.d.cts +122 -0
- package/dist/OX-CIzARbON.d.cts +26 -0
- package/dist/OX-Dmkvcaij.d.ts +25 -0
- package/dist/PX-BKZ14N7N.d.ts +120 -0
- package/dist/PX-CL8waFgx.d.cts +121 -0
- package/dist/QX-6xdSNtxZ.d.ts +58 -0
- package/dist/QX-BowAYqZb.d.cts +59 -0
- package/dist/RX-DFoiOK5q.d.ts +22 -0
- package/dist/RX-fWoWcHTG.d.cts +23 -0
- package/dist/SX-CZ3e31OT.d.cts +40 -0
- package/dist/SX-D-Szi9wa.d.ts +39 -0
- package/dist/TX-CJhJ-HYX.d.cts +31 -0
- package/dist/TX-DTfkGsqn.d.ts +30 -0
- package/dist/UX-Bw4HHAj4.d.ts +17 -0
- package/dist/UX-P7-u2y70.d.cts +18 -0
- package/dist/VX-C8Eu5gQf.d.cts +17 -0
- package/dist/VX-DCv5x_hi.d.ts +16 -0
- package/dist/WX-BYtJ5_if.d.ts +25 -0
- package/dist/WX-DkiaqB2V.d.cts +26 -0
- package/dist/XX-D4p4iK-a.d.cts +828 -0
- package/dist/XX-Jo1yJO3A.d.ts +827 -0
- package/dist/YX-BvGmEsVG.d.ts +19 -0
- package/dist/YX-Du8zv9qz.d.cts +20 -0
- package/dist/ZX-B4jFD-21.d.cts +22 -0
- package/dist/ZX-B59AJcBY.d.ts +21 -0
- package/dist/api/platform/platformLogin.d.ts +65 -0
- package/dist/api/platform/platformLogin.js +3 -0
- package/dist/certificate-DFK-788s.cjs +62 -0
- package/dist/certificate-DFK-788s.cjs.map +1 -0
- package/dist/certificate-aooIRf9A.js +49 -0
- package/dist/chunk-CUT6urMc.cjs +30 -0
- package/dist/classification-codes-B15PbWxz.d.cts +118 -0
- package/dist/classification-codes-BKxV-rO9.d.ts +117 -0
- package/dist/country-code-CQuaiQm2.d.ts +542 -0
- package/dist/country-code-DPeNFMMi.d.cts +543 -0
- package/dist/currencies-BYJK-m6v.d.ts +207 -0
- package/dist/currencies-S5g1gzBU.d.cts +208 -0
- package/dist/document-DMIMRJV0.cjs +472 -0
- package/dist/document-DMIMRJV0.cjs.map +1 -0
- package/dist/document-NQos5fSr.js +405 -0
- package/dist/documents-BVG7KIKY.d.ts +847 -0
- package/dist/documents-C066EC9m.d.cts +848 -0
- package/dist/e-invoice-BuwtFnlI.d.cts +44 -0
- package/dist/e-invoice-CmbLQkHw.d.ts +43 -0
- package/dist/getBaseUrl-CO7Jp27d.cjs +14 -0
- package/dist/getBaseUrl-CO7Jp27d.cjs.map +1 -0
- package/dist/getBaseUrl-R3IdgCu3.js +7 -0
- package/dist/index-0-EvC6Nv.d.ts +15 -0
- package/dist/index-D2_HVwCz.d.cts +16 -0
- package/dist/index.cjs +256 -50
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +232 -5665
- package/dist/index.js +253 -46
- package/dist/index10.cjs +0 -0
- package/dist/index11.cjs +34 -0
- package/dist/index11.cjs.map +1 -0
- package/dist/index12.cjs +24 -0
- package/dist/index12.cjs.map +1 -0
- package/dist/index13.cjs +0 -0
- package/dist/index14.cjs +13 -0
- package/dist/index14.cjs.map +1 -0
- package/dist/index15.cjs +4 -0
- package/dist/index16.cjs +13 -0
- package/dist/index17.cjs +3 -0
- package/dist/index18.cjs +340 -0
- package/dist/index18.cjs.map +1 -0
- package/dist/index19.cjs +329 -0
- package/dist/index19.cjs.map +1 -0
- package/dist/index2.cjs +62 -0
- package/dist/index2.cjs.map +1 -0
- package/dist/index20.cjs +140 -0
- package/dist/index20.cjs.map +1 -0
- package/dist/index21.cjs +3 -0
- package/dist/index22.cjs +208 -0
- package/dist/index22.cjs.map +1 -0
- package/dist/index23.cjs +109 -0
- package/dist/index23.cjs.map +1 -0
- package/dist/index24.cjs +137 -0
- package/dist/index24.cjs.map +1 -0
- package/dist/index25.cjs +64 -0
- package/dist/index25.cjs.map +1 -0
- package/dist/index26.cjs +267 -0
- package/dist/index26.cjs.map +1 -0
- package/dist/index27.cjs +79 -0
- package/dist/index27.cjs.map +1 -0
- package/dist/index28.cjs +107 -0
- package/dist/index28.cjs.map +1 -0
- package/dist/index29.cjs +73 -0
- package/dist/index29.cjs.map +1 -0
- package/dist/index3.cjs +532 -0
- package/dist/index3.cjs.map +1 -0
- package/dist/index30.cjs +112 -0
- package/dist/index30.cjs.map +1 -0
- package/dist/index31.cjs +100 -0
- package/dist/index31.cjs.map +1 -0
- package/dist/index32.cjs +18 -0
- package/dist/index32.cjs.map +1 -0
- package/dist/index33.cjs +38 -0
- package/dist/index33.cjs.map +1 -0
- package/dist/index34.cjs +19 -0
- package/dist/index34.cjs.map +1 -0
- package/dist/index35.cjs +29 -0
- package/dist/index35.cjs.map +1 -0
- package/dist/index36.cjs +20 -0
- package/dist/index36.cjs.map +1 -0
- package/dist/index37.cjs +14 -0
- package/dist/index37.cjs.map +1 -0
- package/dist/index38.cjs +14 -0
- package/dist/index38.cjs.map +1 -0
- package/dist/index39.cjs +17 -0
- package/dist/index39.cjs.map +1 -0
- package/dist/index4.cjs +196 -0
- package/dist/index4.cjs.map +1 -0
- package/dist/index40.cjs +13 -0
- package/dist/index40.cjs.map +1 -0
- package/dist/index41.cjs +108 -0
- package/dist/index41.cjs.map +1 -0
- package/dist/index42.cjs +113 -0
- package/dist/index42.cjs.map +1 -0
- package/dist/index43.cjs +126 -0
- package/dist/index43.cjs.map +1 -0
- package/dist/index44.cjs +113 -0
- package/dist/index44.cjs.map +1 -0
- package/dist/index45.cjs +105 -0
- package/dist/index45.cjs.map +1 -0
- package/dist/index46.cjs +125 -0
- package/dist/index46.cjs.map +1 -0
- package/dist/index47.cjs +134 -0
- package/dist/index47.cjs.map +1 -0
- package/dist/index48.cjs +124 -0
- package/dist/index48.cjs.map +1 -0
- package/dist/index49.cjs +21 -0
- package/dist/index49.cjs.map +1 -0
- package/dist/index5.cjs +0 -0
- package/dist/index50.cjs +102 -0
- package/dist/index50.cjs.map +1 -0
- package/dist/index51.cjs +149 -0
- package/dist/index51.cjs.map +1 -0
- package/dist/index52.cjs +121 -0
- package/dist/index52.cjs.map +1 -0
- package/dist/index53.cjs +151 -0
- package/dist/index53.cjs.map +1 -0
- package/dist/index54.cjs +120 -0
- package/dist/index54.cjs.map +1 -0
- package/dist/index55.cjs +24 -0
- package/dist/index55.cjs.map +1 -0
- package/dist/index56.cjs +119 -0
- package/dist/index56.cjs.map +1 -0
- package/dist/index57.cjs +54 -0
- package/dist/index57.cjs.map +1 -0
- package/dist/index58.cjs +21 -0
- package/dist/index58.cjs.map +1 -0
- package/dist/index58.cts.map +1 -0
- package/dist/index59.cjs +35 -0
- package/dist/index59.cjs.map +1 -0
- package/dist/index59.cts.map +1 -0
- package/dist/index6.cjs +25 -0
- package/dist/index6.cjs.map +1 -0
- package/dist/index60.cjs +29 -0
- package/dist/index60.cjs.map +1 -0
- package/dist/index60.cts.map +1 -0
- package/dist/index61.cjs +16 -0
- package/dist/index61.cjs.map +1 -0
- package/dist/index61.cts.map +1 -0
- package/dist/index62.cjs +15 -0
- package/dist/index62.cjs.map +1 -0
- package/dist/index62.cts.map +1 -0
- package/dist/index63.cjs +24 -0
- package/dist/index63.cjs.map +1 -0
- package/dist/index63.cts.map +1 -0
- package/dist/index64.cjs +419 -0
- package/dist/index64.cjs.map +1 -0
- package/dist/index64.cts.map +1 -0
- package/dist/index65.cjs +15 -0
- package/dist/index65.cjs.map +1 -0
- package/dist/index65.cts.map +1 -0
- package/dist/index66.cjs +16 -0
- package/dist/index66.cjs.map +1 -0
- package/dist/index66.cts.map +1 -0
- package/dist/index7.cjs +0 -0
- package/dist/index8.cjs +0 -0
- package/dist/index9.cjs +25 -0
- package/dist/index9.cjs.map +1 -0
- package/dist/msic-codes-CPWVNnpq.d.cts +26 -0
- package/dist/msic-codes-DToUqTI6.d.ts +25 -0
- package/dist/payment-modes-DA7uBIGb.d.ts +43 -0
- package/dist/payment-modes-FX88uyhP.d.cts +44 -0
- package/dist/platformLogin-PGzMhw1X.cjs +37 -0
- package/dist/platformLogin-PGzMhw1X.cjs.map +1 -0
- package/dist/platformLogin-f0bNAoZI.js +30 -0
- package/dist/signatures-BKi9DP2K.d.cts +173 -0
- package/dist/signatures-CG175mpg.d.ts +172 -0
- package/dist/state-codes-CNp_6051.d.cts +62 -0
- package/dist/state-codes-dvoTe5pC.d.ts +61 -0
- package/dist/tax-types-CgwxONDS.d.cts +42 -0
- package/dist/tax-types-tosH5I0q.d.ts +41 -0
- package/dist/types/classification-codes.d.ts +2 -0
- package/dist/types/country-code.d.ts +2 -0
- package/dist/types/currencies.d.ts +2 -0
- package/dist/types/documents.d.ts +7 -0
- package/dist/types/e-invoice.d.ts +2 -0
- package/dist/types/index.d.ts +58 -0
- package/dist/types/msic/0X.d.ts +2 -0
- package/dist/types/msic/1X.d.ts +2 -0
- package/dist/types/msic/2X.d.ts +2 -0
- package/dist/types/msic/3X.d.ts +2 -0
- package/dist/types/msic/4X.d.ts +2 -0
- package/dist/types/msic/5X.d.ts +2 -0
- package/dist/types/msic/6X.d.ts +2 -0
- package/dist/types/msic/7X.d.ts +2 -0
- package/dist/types/msic/8X.d.ts +2 -0
- package/dist/types/msic/9X.d.ts +2 -0
- package/dist/types/msic-codes.d.ts +12 -0
- package/dist/types/payment-modes.d.ts +2 -0
- package/dist/types/signatures.d.ts +2 -0
- package/dist/types/state-codes.d.ts +2 -0
- package/dist/types/tax-types.d.ts +2 -0
- package/dist/types/unit/1X.d.ts +2 -0
- package/dist/types/unit/2X.d.ts +2 -0
- package/dist/types/unit/3X.d.ts +2 -0
- package/dist/types/unit/4X.d.ts +2 -0
- package/dist/types/unit/5X.d.ts +2 -0
- package/dist/types/unit/6X.d.ts +2 -0
- package/dist/types/unit/7X.d.ts +2 -0
- package/dist/types/unit/8X.d.ts +2 -0
- package/dist/types/unit/9X.d.ts +2 -0
- package/dist/types/unit/AX.d.ts +2 -0
- package/dist/types/unit/BX.d.ts +2 -0
- package/dist/types/unit/CX.d.ts +2 -0
- package/dist/types/unit/DX.d.ts +2 -0
- package/dist/types/unit/EX.d.ts +2 -0
- package/dist/types/unit/FX.d.ts +2 -0
- package/dist/types/unit/GX.d.ts +2 -0
- package/dist/types/unit/HX.d.ts +2 -0
- package/dist/types/unit/IX.d.ts +2 -0
- package/dist/types/unit/JX.d.ts +2 -0
- package/dist/types/unit/KX.d.ts +2 -0
- package/dist/types/unit/LX.d.ts +2 -0
- package/dist/types/unit/MX.d.ts +2 -0
- package/dist/types/unit/NX.d.ts +2 -0
- package/dist/types/unit/OX.d.ts +2 -0
- package/dist/types/unit/PX.d.ts +2 -0
- package/dist/types/unit/QX.d.ts +2 -0
- package/dist/types/unit/RX.d.ts +2 -0
- package/dist/types/unit/SX.d.ts +2 -0
- package/dist/types/unit/TX.d.ts +2 -0
- package/dist/types/unit/UX.d.ts +2 -0
- package/dist/types/unit/VX.d.ts +2 -0
- package/dist/types/unit/WX.d.ts +2 -0
- package/dist/types/unit/XX.d.ts +2 -0
- package/dist/types/unit/YX.d.ts +2 -0
- package/dist/types/unit/ZX.d.ts +2 -0
- package/dist/types/unit-types.d.ts +37 -0
- package/dist/unit-types-BKZxwVYQ.d.ts +55 -0
- package/dist/unit-types-CaOA5ZDG.d.cts +56 -0
- package/dist/utils/base64.d.ts +5 -0
- package/dist/utils/base64.js +10 -0
- package/dist/utils/certificate.d.ts +22 -0
- package/dist/utils/certificate.js +3 -0
- package/dist/utils/document.d.ts +135 -0
- package/dist/utils/document.js +3 -0
- package/dist/utils/getBaseUrl.d.ts +4 -0
- package/dist/utils/getBaseUrl.js +3 -0
- package/dist/utils/helpers.d.ts +271 -0
- package/dist/utils/helpers.js +330 -0
- package/dist/utils/signature-diagnostics.d.ts +93 -0
- package/dist/utils/signature-diagnostics.js +326 -0
- package/dist/utils/validation.d.ts +46 -0
- package/dist/utils/validation.js +134 -0
- package/myinvois-cert.conf.template +23 -0
- package/package.json +20 -7
- package/scripts/gen-cert.sh +159 -0
- package/src/api/platform/platformLogin.ts +7 -2
- package/src/index.ts +528 -1
- package/src/types/documents.d.ts +862 -0
- package/src/types/index.d.ts +1 -1
- package/src/types/msic-codes.d.ts +1 -7
- package/src/utils/base64.ts +7 -0
- package/src/utils/certificate.ts +60 -0
- package/src/utils/document.ts +852 -0
- package/src/utils/getBaseUrl.ts +1 -1
- package/src/utils/helpers.ts +552 -0
- package/src/utils/signature-diagnostics.ts +583 -0
- package/src/utils/validation.ts +268 -0
- package/test/MyInvoiClientWithRealData.test.ts +11 -2
- package/test/MyInvoisClient.test.ts +23 -9
- package/test/base64.test.ts +43 -0
- package/test/dynamicInvoiceFeatures.test.ts +449 -0
- package/test/signAndSubmitInvoice.test.ts +450 -0
- package/test/signature-diagnostics.test.ts +128 -0
- package/tsconfig.json +4 -1
- package/tsdown.config.ts +31 -0
- package/rolldown.config.ts +0 -26
- package/src/types/documents/index.d.ts +0 -1
- package/src/types/documents/invoice-1_1.d.ts +0 -349
- package/src/utils/MyInvoisClient.ts +0 -88
package/src/types/index.d.ts
CHANGED
|
@@ -9,19 +9,13 @@ import type { MSIC_7X_CODE } from './msic/7X.d.ts'
|
|
|
9
9
|
import type { MSIC_8X_CODE } from './msic/8X.d.ts'
|
|
10
10
|
import type { MSIC_9X_CODE } from './msic/9X.d.ts'
|
|
11
11
|
|
|
12
|
-
export type MSICCode = {
|
|
13
|
-
code: string
|
|
14
|
-
description: string
|
|
15
|
-
msicCategoryReference: string
|
|
16
|
-
}
|
|
17
|
-
|
|
18
12
|
/**
|
|
19
13
|
* Represents the allowed 5-digit Malaysia Standard Industrial Classification (MSIC) codes.
|
|
20
14
|
* Based on the documentation: https://sdk.myinvois.hasil.gov.my/codes/msic-codes/
|
|
21
15
|
* Interface representing an MSIC code entry.
|
|
22
16
|
* Contains the 5-digit code and its description.
|
|
23
17
|
*/
|
|
24
|
-
export interface
|
|
18
|
+
export interface MSICCode {
|
|
25
19
|
code:
|
|
26
20
|
| MSIC_0X_CODE
|
|
27
21
|
| MSIC_1X_CODE
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import crypto from 'crypto'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Extracts certificate information from PEM certificate
|
|
5
|
+
* Converts hex serial number to decimal as required by MyInvois
|
|
6
|
+
*
|
|
7
|
+
* @param certificatePem - Certificate in PEM format
|
|
8
|
+
* @returns Object with issuer name and decimal serial number
|
|
9
|
+
*/
|
|
10
|
+
export const extractCertificateInfo = (
|
|
11
|
+
certificatePem: string,
|
|
12
|
+
): {
|
|
13
|
+
issuerName: string
|
|
14
|
+
serialNumber: string
|
|
15
|
+
} => {
|
|
16
|
+
try {
|
|
17
|
+
const cert = new crypto.X509Certificate(certificatePem)
|
|
18
|
+
|
|
19
|
+
// Convert hex serial number to decimal (MyInvois requirement)
|
|
20
|
+
const serialNumberHex = cert.serialNumber
|
|
21
|
+
const serialNumberDecimal = BigInt('0x' + serialNumberHex).toString()
|
|
22
|
+
|
|
23
|
+
return {
|
|
24
|
+
issuerName: cert.issuer,
|
|
25
|
+
serialNumber: serialNumberDecimal,
|
|
26
|
+
}
|
|
27
|
+
} catch (error) {
|
|
28
|
+
throw new Error(`Failed to extract certificate info: ${error}`)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Validates that certificate and private key form a valid pair
|
|
34
|
+
*
|
|
35
|
+
* @param certificatePem - Certificate in PEM format
|
|
36
|
+
* @param privateKeyPem - Private key in PEM format
|
|
37
|
+
* @returns Boolean indicating if key pair is valid
|
|
38
|
+
*/
|
|
39
|
+
export const validateKeyPair = (
|
|
40
|
+
certificatePem: string,
|
|
41
|
+
privateKeyPem: string,
|
|
42
|
+
): boolean => {
|
|
43
|
+
try {
|
|
44
|
+
const cert = new crypto.X509Certificate(certificatePem)
|
|
45
|
+
const publicKey = cert.publicKey
|
|
46
|
+
|
|
47
|
+
// Test signature/verification cycle
|
|
48
|
+
const testData = 'validation-test-data'
|
|
49
|
+
const signer = crypto.createSign('RSA-SHA256')
|
|
50
|
+
signer.update(testData)
|
|
51
|
+
const signature = signer.sign(privateKeyPem)
|
|
52
|
+
|
|
53
|
+
const verifier = crypto.createVerify('RSA-SHA256')
|
|
54
|
+
verifier.update(testData)
|
|
55
|
+
return verifier.verify(publicKey, signature)
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error('Key pair validation failed:', error)
|
|
58
|
+
return false
|
|
59
|
+
}
|
|
60
|
+
}
|