node-opcua-pki 6.22.0 → 7.0.0

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.
Files changed (137) hide show
  1. package/bin/install_prerequisite.ts +1 -1
  2. package/bin/pki.ts +1 -1
  3. package/dist/bin/install_prerequisite.d.ts +2 -0
  4. package/dist/bin/install_prerequisite.js +6 -0
  5. package/dist/bin/install_prerequisite.js.map +1 -0
  6. package/dist/bin/pki.d.ts +2 -0
  7. package/dist/bin/pki.js +4 -0
  8. package/dist/bin/pki.js.map +1 -0
  9. package/dist/lib/ca/backends/native_ca_backend.d.ts +49 -0
  10. package/dist/lib/ca/backends/native_ca_backend.js +365 -0
  11. package/dist/lib/ca/backends/native_ca_backend.js.map +1 -0
  12. package/dist/lib/ca/backends/openssl_ca_backend.d.ts +47 -0
  13. package/dist/lib/ca/backends/openssl_ca_backend.js +398 -0
  14. package/dist/lib/ca/backends/openssl_ca_backend.js.map +1 -0
  15. package/dist/lib/ca/certificate_authority.d.ts +62 -0
  16. package/dist/lib/ca/certificate_authority.js +91 -0
  17. package/dist/lib/ca/certificate_authority.js.map +1 -0
  18. package/dist/lib/ca/core/ca_backend.d.ts +89 -0
  19. package/dist/lib/ca/core/ca_backend.js +24 -0
  20. package/dist/lib/ca/core/ca_backend.js.map +1 -0
  21. package/dist/lib/ca/core/ca_database.d.ts +91 -0
  22. package/dist/lib/ca/core/ca_database.js +267 -0
  23. package/dist/lib/ca/core/ca_database.js.map +1 -0
  24. package/dist/{core-BwqSJPHc.d.mts → lib/ca/core/certificate_authority_core.d.ts} +45 -394
  25. package/dist/lib/ca/core/certificate_authority_core.js +1300 -0
  26. package/dist/lib/ca/core/certificate_authority_core.js.map +1 -0
  27. package/dist/lib/ca/core/index.d.ts +17 -0
  28. package/dist/lib/ca/core/index.js +25 -0
  29. package/dist/lib/ca/core/index.js.map +1 -0
  30. package/dist/lib/ca/crypto_create_CA.d.ts +1 -0
  31. package/dist/lib/ca/crypto_create_CA.js +821 -0
  32. package/dist/lib/ca/crypto_create_CA.js.map +1 -0
  33. package/dist/lib/ca/index.d.ts +1 -0
  34. package/dist/lib/ca/index.js +2 -0
  35. package/dist/lib/ca/index.js.map +1 -0
  36. package/dist/lib/ca/templates/ca_config_template.cnf.d.ts +2 -0
  37. package/dist/lib/ca/templates/ca_config_template.cnf.js +170 -0
  38. package/dist/lib/ca/templates/ca_config_template.cnf.js.map +1 -0
  39. package/dist/lib/core.d.ts +33 -0
  40. package/dist/lib/core.js +56 -0
  41. package/dist/lib/core.js.map +1 -0
  42. package/dist/lib/index.d.ts +11 -0
  43. package/dist/lib/index.js +37 -0
  44. package/dist/lib/index.js.map +1 -0
  45. package/dist/lib/misc/applicationurn.d.ts +1 -0
  46. package/dist/lib/misc/applicationurn.js +40 -0
  47. package/dist/lib/misc/applicationurn.js.map +1 -0
  48. package/dist/lib/misc/hostname.d.ts +8 -0
  49. package/dist/lib/misc/hostname.js +82 -0
  50. package/dist/lib/misc/hostname.js.map +1 -0
  51. package/dist/lib/misc/subject.d.ts +2 -0
  52. package/dist/lib/misc/subject.js +2 -0
  53. package/dist/lib/misc/subject.js.map +1 -0
  54. package/dist/{index.d.ts → lib/pki/certificate_manager.d.ts} +24 -246
  55. package/dist/lib/pki/certificate_manager.js +2302 -0
  56. package/dist/lib/pki/certificate_manager.js.map +1 -0
  57. package/dist/lib/pki/templates/simple_config_template.cnf.d.ts +2 -0
  58. package/dist/lib/pki/templates/simple_config_template.cnf.js +74 -0
  59. package/dist/lib/pki/templates/simple_config_template.cnf.js.map +1 -0
  60. package/dist/lib/pki/toolbox_pfx.d.ts +127 -0
  61. package/dist/lib/pki/toolbox_pfx.js +248 -0
  62. package/dist/lib/pki/toolbox_pfx.js.map +1 -0
  63. package/dist/lib/toolbox/common.d.ts +150 -0
  64. package/dist/lib/toolbox/common.js +82 -0
  65. package/dist/lib/toolbox/common.js.map +1 -0
  66. package/dist/lib/toolbox/common2.d.ts +25 -0
  67. package/dist/lib/toolbox/common2.js +97 -0
  68. package/dist/lib/toolbox/common2.js.map +1 -0
  69. package/dist/lib/toolbox/config.d.ts +5 -0
  70. package/dist/lib/toolbox/config.js +28 -0
  71. package/dist/lib/toolbox/config.js.map +1 -0
  72. package/dist/lib/toolbox/debug.d.ts +5 -0
  73. package/dist/lib/toolbox/debug.js +35 -0
  74. package/dist/lib/toolbox/debug.js.map +1 -0
  75. package/dist/lib/toolbox/display.d.ts +4 -0
  76. package/dist/lib/toolbox/display.js +56 -0
  77. package/dist/lib/toolbox/display.js.map +1 -0
  78. package/dist/lib/toolbox/index.d.ts +5 -0
  79. package/dist/lib/toolbox/index.js +28 -0
  80. package/dist/lib/toolbox/index.js.map +1 -0
  81. package/dist/lib/toolbox/with_openssl/_create_random_file.d.ts +4 -0
  82. package/dist/lib/toolbox/with_openssl/_create_random_file.js +50 -0
  83. package/dist/lib/toolbox/with_openssl/_create_random_file.js.map +1 -0
  84. package/dist/lib/toolbox/with_openssl/_env.d.ts +58 -0
  85. package/dist/lib/toolbox/with_openssl/_env.js +126 -0
  86. package/dist/lib/toolbox/with_openssl/_env.js.map +1 -0
  87. package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.d.ts +5 -0
  88. package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.js +72 -0
  89. package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.js.map +1 -0
  90. package/dist/lib/toolbox/with_openssl/create_private_key.d.ts +5 -0
  91. package/dist/lib/toolbox/with_openssl/create_private_key.js +92 -0
  92. package/dist/lib/toolbox/with_openssl/create_private_key.js.map +1 -0
  93. package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.d.ts +5 -0
  94. package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.js +135 -0
  95. package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.js.map +1 -0
  96. package/dist/lib/toolbox/with_openssl/execute_openssl.d.ts +67 -0
  97. package/dist/lib/toolbox/with_openssl/execute_openssl.js +246 -0
  98. package/dist/lib/toolbox/with_openssl/execute_openssl.js.map +1 -0
  99. package/dist/lib/toolbox/with_openssl/index.d.ts +5 -0
  100. package/dist/lib/toolbox/with_openssl/index.js +30 -0
  101. package/dist/lib/toolbox/with_openssl/index.js.map +1 -0
  102. package/dist/lib/toolbox/with_openssl/install_prerequisite.d.ts +7 -0
  103. package/dist/lib/toolbox/with_openssl/install_prerequisite.js +358 -0
  104. package/dist/lib/toolbox/with_openssl/install_prerequisite.js.map +1 -0
  105. package/dist/lib/toolbox/with_openssl/toolbox.d.ts +53 -0
  106. package/dist/lib/toolbox/with_openssl/toolbox.js +190 -0
  107. package/dist/lib/toolbox/with_openssl/toolbox.js.map +1 -0
  108. package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.d.ts +5 -0
  109. package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.js +69 -0
  110. package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.js.map +1 -0
  111. package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.d.ts +3 -0
  112. package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.js +78 -0
  113. package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.js.map +1 -0
  114. package/dist/lib/toolbox/without_openssl/index.d.ts +2 -0
  115. package/dist/lib/toolbox/without_openssl/index.js +25 -0
  116. package/dist/lib/toolbox/without_openssl/index.js.map +1 -0
  117. package/package.json +11 -30
  118. package/dist/bin/install_prerequisite.mjs +0 -18
  119. package/dist/bin/install_prerequisite.mjs.map +0 -1
  120. package/dist/bin/pki.mjs +0 -5895
  121. package/dist/bin/pki.mjs.map +0 -1
  122. package/dist/chunk-EQ4DGI4M.mjs +0 -1917
  123. package/dist/chunk-EQ4DGI4M.mjs.map +0 -1
  124. package/dist/chunk-GCHH54PS.mjs +0 -30
  125. package/dist/chunk-GCHH54PS.mjs.map +0 -1
  126. package/dist/core-BwqSJPHc.d.ts +0 -1041
  127. package/dist/core.d.mts +0 -2
  128. package/dist/core.d.ts +0 -2
  129. package/dist/core.js +0 -1902
  130. package/dist/core.js.map +0 -1
  131. package/dist/core.mjs +0 -21
  132. package/dist/core.mjs.map +0 -1
  133. package/dist/index.d.mts +0 -1001
  134. package/dist/index.js +0 -4968
  135. package/dist/index.js.map +0 -1
  136. package/dist/index.mjs +0 -3106
  137. package/dist/index.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate_manager.js","sourceRoot":"","sources":["../../../lib/pki/certificate_manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const config: string;
2
+ export default config;
@@ -0,0 +1,74 @@
1
+ const config = "##################################################################################################\n" +
2
+ "## SIMPLE OPENSSL CONFIG FILE FOR SELF-SIGNED CERTIFICATE GENERATION\n" +
3
+ "################################################################################################################\n" +
4
+ "\n" +
5
+ "distinguished_name = req_distinguished_name\n" +
6
+ "default_md = sha1\n" +
7
+ "\n" +
8
+ "default_md = sha256 # The default digest algorithm\n" +
9
+ "\n" +
10
+ "[ v3_ca ]\n" +
11
+ "subjectKeyIdentifier = hash\n" +
12
+ "authorityKeyIdentifier = keyid:always,issuer:always\n" +
13
+ "\n" +
14
+ "# authorityKeyIdentifier = keyid\n" +
15
+ "basicConstraints = CA:TRUE\n" +
16
+ "keyUsage = critical, cRLSign, keyCertSign\n" +
17
+ 'nsComment = "Self-signed Certificate for CA generated by Node-OPCUA Certificate utility"\n' +
18
+ "#nsCertType = sslCA, emailCA\n" +
19
+ "#subjectAltName = email:copy\n" +
20
+ "#issuerAltName = issuer:copy\n" +
21
+ "#obj = DER:02:03\n" +
22
+ "# crlDistributionPoints = @crl_info\n" +
23
+ "# [ crl_info ]\n" +
24
+ "# URI.0 = http://localhost:8900/crl.pem\n" +
25
+ "subjectAltName = $ENV::ALTNAME\n" +
26
+ "\n" +
27
+ "[ req ]\n" +
28
+ "days = 390\n" +
29
+ "req_extensions = v3_req\n" +
30
+ "x509_extensions = v3_ca\n" +
31
+ "\n" +
32
+ "[v3_req]\n" +
33
+ "basicConstraints = CA:false\n" +
34
+ "keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment\n" +
35
+ "subjectAltName = $ENV::ALTNAME\n" +
36
+ "\n" +
37
+ "[ v3_ca_signed]\n" +
38
+ "subjectKeyIdentifier = hash\n" +
39
+ "authorityKeyIdentifier = keyid,issuer\n" +
40
+ "basicConstraints = critical, CA:FALSE\n" +
41
+ "keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment\n" +
42
+ "extendedKeyUsage = clientAuth,serverAuth \n" +
43
+ 'nsComment = "certificate generated by Node-OPCUA Certificate utility and signed by a CA"\n' +
44
+ "subjectAltName = $ENV::ALTNAME\n" +
45
+ "[ v3_selfsigned]\n" +
46
+ "subjectKeyIdentifier = hash\n" +
47
+ "authorityKeyIdentifier = keyid,issuer\n" +
48
+ "basicConstraints = critical, CA:FALSE\n" +
49
+ "keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment\n" +
50
+ "extendedKeyUsage = clientAuth,serverAuth \n" +
51
+ 'nsComment = "Self-signed certificate generated by Node-OPCUA Certificate utility"\n' +
52
+ "subjectAltName = $ENV::ALTNAME\n" +
53
+ "[ req_distinguished_name ]\n" +
54
+ "countryName = Country Name (2 letter code)\n" +
55
+ "countryName_default = FR\n" +
56
+ "countryName_min = 2\n" +
57
+ "countryName_max = 2\n" +
58
+ "# stateOrProvinceName = State or Province Name (full name)\n" +
59
+ "# stateOrProvinceName_default = Ile de France\n" +
60
+ "# localityName = Locality Name (city, district)\n" +
61
+ "# localityName_default = Paris\n" +
62
+ "organizationName = Organization Name (company)\n" +
63
+ "organizationName_default = NodeOPCUA\n" +
64
+ "# organizationalUnitName = Organizational Unit Name (department, division)\n" +
65
+ "# organizationalUnitName_default = R&D\n" +
66
+ "commonName = Common Name (hostname, FQDN, IP, or your name)\n" +
67
+ "commonName_max = 256\n" +
68
+ "commonName_default = NodeOPCUA\n" +
69
+ "# emailAddress = Email Address\n" +
70
+ "# emailAddress_max = 40\n" +
71
+ "# emailAddress_default = node-opcua (at) node-opcua (dot) com\n" +
72
+ "subjectAltName = $ENV::ALTNAME";
73
+ export default config;
74
+ //# sourceMappingURL=simple_config_template.cnf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple_config_template.cnf.js","sourceRoot":"","sources":["../../../../lib/pki/templates/simple_config_template.cnf.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GACR,sGAAsG;IACtG,wEAAwE;IACxE,oHAAoH;IACpH,IAAI;IACJ,qDAAqD;IACrD,mCAAmC;IACnC,IAAI;IACJ,0FAA0F;IAC1F,IAAI;IACJ,aAAa;IACb,sCAAsC;IACtC,4DAA4D;IAC5D,IAAI;IACJ,uCAAuC;IACvC,yCAAyC;IACzC,gEAAgE;IAChE,8GAA8G;IAC9G,gDAAgD;IAChD,4CAA4C;IAC5C,6CAA6C;IAC7C,2CAA2C;IAC3C,6CAA6C;IAC7C,kBAAkB;IAClB,+DAA+D;IAC/D,+CAA+C;IAC/C,IAAI;IACJ,WAAW;IACX,mCAAmC;IACnC,sCAAsC;IACtC,qCAAqC;IACrC,IAAI;IACJ,YAAY;IACZ,qCAAqC;IACrC,0GAA0G;IAC1G,0CAA0C;IAC1C,IAAI;IACJ,mBAAmB;IACnB,oCAAoC;IACpC,4CAA4C;IAC5C,kDAAkD;IAClD,mGAAmG;IACnG,sDAAsD;IACtD,4GAA4G;IAC5G,6CAA6C;IAC7C,oBAAoB;IACpB,oCAAoC;IACpC,4CAA4C;IAC5C,kDAAkD;IAClD,mGAAmG;IACnG,sDAAsD;IACtD,qGAAqG;IACrG,6CAA6C;IAC7C,8BAA8B;IAC9B,0DAA0D;IAC1D,gCAAgC;IAChC,+BAA+B;IAC/B,+BAA+B;IAC/B,kEAAkE;IAClE,iDAAiD;IACjD,8DAA8D;IAC9D,qCAAqC;IACrC,2DAA2D;IAC3D,yCAAyC;IACzC,+EAA+E;IAC/E,0CAA0C;IAC1C,8EAA8E;IAC9E,mCAAmC;IACnC,yCAAyC;IACzC,6CAA6C;IAC7C,kCAAkC;IAClC,oEAAoE;IACpE,2CAA2C,CAAC;AAEhD,eAAe,MAAM,CAAC"}
@@ -0,0 +1,127 @@
1
+ import type { Filename } from "../toolbox/common.js";
2
+ /**
3
+ * Options for creating a PFX (PKCS#12) file.
4
+ */
5
+ export interface CreatePFXOptions {
6
+ /** Path to the certificate file (PEM or DER). */
7
+ certificateFile: Filename;
8
+ /** Path to the private key file (PEM, plaintext or encrypted PKCS#8). */
9
+ privateKeyFile: Filename;
10
+ /**
11
+ * Passphrase that decrypts `privateKeyFile` if it is an encrypted
12
+ * PKCS#8 key (e.g. a `CertificateManager` created with
13
+ * `privateKeyPassphrase`). Omit for a plaintext key. This is distinct
14
+ * from `passphrase`, which protects the *output* PFX bundle.
15
+ */
16
+ privateKeyPassphrase?: string;
17
+ /** Output path for the generated PFX file. */
18
+ outputFile: Filename;
19
+ /**
20
+ * Optional passphrase to protect the PFX file.
21
+ * If omitted, the PFX is created without a password.
22
+ */
23
+ passphrase?: string;
24
+ /**
25
+ * Optional path(s) to CA / intermediate certificate files
26
+ * to include in the PFX bundle.
27
+ */
28
+ caCertificateFiles?: Filename[];
29
+ /**
30
+ * Optional display label stored on the bundle, the equivalent of
31
+ * openssl's `-name`. The Windows certificate store and `keytool` show
32
+ * it; {@link extractAllFromPFX} and {@link dumpPFX} report it back.
33
+ */
34
+ friendlyName?: string;
35
+ }
36
+ /**
37
+ * Options for extracting data from a PFX (PKCS#12) file.
38
+ */
39
+ export interface ExtractPFXOptions {
40
+ /** Path to the PFX file. */
41
+ pfxFile: Filename;
42
+ /**
43
+ * Passphrase used when the PFX was created.
44
+ * Pass an empty string for unprotected PFX files.
45
+ */
46
+ passphrase?: string;
47
+ }
48
+ /**
49
+ * Result of extracting data from a PFX file.
50
+ */
51
+ export interface ExtractPFXResult {
52
+ /** The certificate in PEM format. */
53
+ certificate: string;
54
+ /** The private key in PEM format. */
55
+ privateKey: string;
56
+ /**
57
+ * The CA / intermediate certificates in PEM format
58
+ * (empty string if none).
59
+ */
60
+ caCertificates: string;
61
+ /** The display label the bundle carries, if it has one. */
62
+ friendlyName?: string;
63
+ }
64
+ /**
65
+ * Create a PFX (PKCS#12) file from a certificate and private key.
66
+ *
67
+ * The bundle is protected with PBES2 / AES-256-CBC under an SHA-256 MAC. If
68
+ * `certificateFile` holds more than one PEM block, the first is the
69
+ * identity and the rest join the issuer chain, ahead of any
70
+ * `caCertificateFiles`.
71
+ *
72
+ * Nothing is written unless every input reads back cleanly and the private
73
+ * key belongs to the certificate, so a wrong `privateKeyPassphrase` or a
74
+ * mismatched pair leaves no half-made file behind.
75
+ *
76
+ * @param options - see {@link CreatePFXOptions}
77
+ */
78
+ export declare function createPFX(options: CreatePFXOptions): Promise<void>;
79
+ /**
80
+ * Extract the client/server certificate from a PFX file.
81
+ *
82
+ * @returns the certificate in PEM format.
83
+ */
84
+ export declare function extractCertificateFromPFX(options: ExtractPFXOptions): Promise<string>;
85
+ /**
86
+ * Extract the private key from a PFX file.
87
+ *
88
+ * @returns the private key as unencrypted PKCS#8 PEM.
89
+ */
90
+ export declare function extractPrivateKeyFromPFX(options: ExtractPFXOptions): Promise<string>;
91
+ /**
92
+ * Extract the CA / intermediate certificates from a PFX file.
93
+ *
94
+ * @returns the CA certificates in PEM format
95
+ * (empty string if none are present).
96
+ */
97
+ export declare function extractCACertificatesFromPFX(options: ExtractPFXOptions): Promise<string>;
98
+ /**
99
+ * Extract certificate + private key + CA certs from a PFX file
100
+ * in a single call.
101
+ *
102
+ * Prefer this over the single-part helpers when you want more than one
103
+ * part: the file is read, decrypted and MAC-verified once here, against
104
+ * once per part.
105
+ *
106
+ * @returns an {@link ExtractPFXResult} with all PEM-encoded parts.
107
+ */
108
+ export declare function extractAllFromPFX(options: ExtractPFXOptions): Promise<ExtractPFXResult>;
109
+ /**
110
+ * Convert a PFX file to a single PEM file holding the private key, the
111
+ * certificate, and any issuer certificates the bundle carries, in that
112
+ * order.
113
+ */
114
+ export declare function convertPFXtoPEM(pfxFile: Filename, pemFile: Filename, passphrase?: string): Promise<void>;
115
+ /**
116
+ * Dump the contents of a PFX file in human-readable form.
117
+ *
118
+ * The layout is this package's own, not `openssl pkcs12 -info`'s: it
119
+ * describes the identity the bundle carries rather than the algorithms it
120
+ * was encrypted with, and it states outright whether the enclosed key
121
+ * matches the enclosed certificate - the question a bundle that will not
122
+ * load is usually being asked. Treat the text as something to read, not to
123
+ * parse; use {@link extractAllFromPFX} to get at the parts.
124
+ *
125
+ * @returns the human-readable dump as a string.
126
+ */
127
+ export declare function dumpPFX(pfxFile: Filename, passphrase?: string): Promise<string>;
@@ -0,0 +1,248 @@
1
+ // ---------------------------------------------------------------------------------------------------------------------
2
+ // node-opcua-pki
3
+ // ---------------------------------------------------------------------------------------------------------------------
4
+ // Copyright (c) 2014-2026 - Etienne Rossignon - etienne.rossignon (at) gadz.org
5
+ // Copyright (c) 2022-2026 - Sterfive.com
6
+ // ---------------------------------------------------------------------------------------------------------------------
7
+ //
8
+ // This project is licensed under the terms of the MIT license.
9
+ //
10
+ // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
11
+ // documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
12
+ // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
13
+ // permit persons to whom the Software is furnished to do so, subject to the following conditions:
14
+ //
15
+ // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
16
+ // Software.
17
+ //
18
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
19
+ // WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
21
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ // ---------------------------------------------------------------------------------------------------------------------
23
+ /**
24
+ * PFX (PKCS#12) bundling, implemented in pure JavaScript.
25
+ *
26
+ * These helpers used to shell out to `openssl pkcs12`. They no longer do:
27
+ * every function here goes through `node-opcua-crypto`, so a program that
28
+ * only bundles and unbundles PFX files needs no `openssl` executable on the
29
+ * machine. The exported API is unchanged.
30
+ *
31
+ * Two consequences are worth knowing about:
32
+ *
33
+ * - **What is written.** Bundles are protected with PBES2 / AES-256-CBC
34
+ * under an SHA-256 MAC, which is what openssl 3 produces by default and
35
+ * what openssl 1.x produced only when asked. Both read them back.
36
+ * - **What can be read.** A bundle whose certificate safe uses the 40-bit
37
+ * RC2 encryption that openssl 1.x chose by default cannot be read here.
38
+ * That cipher is broken, and openssl 3 itself refuses it without
39
+ * `-legacy`. {@link readPfxFile} turns the failure into a message saying
40
+ * how to convert the file, rather than leaving an OID to be decoded by
41
+ * hand.
42
+ */
43
+ import assert from "node:assert";
44
+ import fs from "node:fs";
45
+ import { certificateMatchesPrivateKey, certificatesToPem, coercePrivateKeyPem, createPfx, makeSHA1Thumbprint, Pkcs12UnsupportedAlgorithmError, parsePfx, readCertificateChain, readPrivateKey, toPem, x509 } from "node-opcua-crypto";
46
+ // ── Reading a bundle ───────────────────────────────────────────
47
+ /**
48
+ * Open and decrypt a PFX file, reporting failures in terms of the file the
49
+ * caller named.
50
+ *
51
+ * The one failure worth translating is a bundle encrypted with an algorithm
52
+ * this implementation will not touch. In practice that means openssl 1.x's
53
+ * default certificate-safe cipher, 40-bit RC2: the underlying error names
54
+ * an OID, which tells the reader nothing about what to do next.
55
+ */
56
+ async function readPfxFile(options) {
57
+ const { pfxFile, passphrase = "" } = options;
58
+ assert(fs.existsSync(pfxFile), `PFX file does not exist: ${pfxFile}`);
59
+ try {
60
+ return await parsePfx(await fs.promises.readFile(pfxFile), passphrase);
61
+ }
62
+ catch (err) {
63
+ if (err instanceof Pkcs12UnsupportedAlgorithmError) {
64
+ const explained = new Error([
65
+ `${pfxFile} uses an encryption algorithm that is not supported (${err.message}).`,
66
+ "Bundles written by openssl 1.x default to 40-bit RC2, which openssl 3 itself",
67
+ "rejects unless given -legacy. Convert the file once with:",
68
+ " openssl pkcs12 -legacy -in old.pfx -nodes -out tmp.pem",
69
+ " openssl pkcs12 -export -in tmp.pem -out new.pfx"
70
+ ].join("\n"));
71
+ // assigned rather than passed to the constructor: `lib` is empty
72
+ // in this project, so the ES2022 ErrorOptions overload is not in
73
+ // scope even though every supported Node runtime honours it.
74
+ explained.cause = err;
75
+ throw explained;
76
+ }
77
+ throw err;
78
+ }
79
+ }
80
+ // ── Create PFX ─────────────────────────────────────────────────
81
+ /**
82
+ * Create a PFX (PKCS#12) file from a certificate and private key.
83
+ *
84
+ * The bundle is protected with PBES2 / AES-256-CBC under an SHA-256 MAC. If
85
+ * `certificateFile` holds more than one PEM block, the first is the
86
+ * identity and the rest join the issuer chain, ahead of any
87
+ * `caCertificateFiles`.
88
+ *
89
+ * Nothing is written unless every input reads back cleanly and the private
90
+ * key belongs to the certificate, so a wrong `privateKeyPassphrase` or a
91
+ * mismatched pair leaves no half-made file behind.
92
+ *
93
+ * @param options - see {@link CreatePFXOptions}
94
+ */
95
+ export async function createPFX(options) {
96
+ const { certificateFile, privateKeyFile, privateKeyPassphrase, outputFile, passphrase = "", caCertificateFiles } = options;
97
+ assert(fs.existsSync(certificateFile), `Certificate file does not exist: ${certificateFile}`);
98
+ assert(fs.existsSync(privateKeyFile), `Private key file does not exist: ${privateKeyFile}`);
99
+ const [certificate, ...bundledIssuers] = readCertificateChain(certificateFile);
100
+ if (!certificate) {
101
+ throw new Error(`Certificate file holds no certificate: ${certificateFile}`);
102
+ }
103
+ const certificateChain = [...bundledIssuers];
104
+ for (const caFile of caCertificateFiles ?? []) {
105
+ assert(fs.existsSync(caFile), `CA certificate file does not exist: ${caFile}`);
106
+ certificateChain.push(...readCertificateChain(caFile));
107
+ }
108
+ // throws on an encrypted key with no passphrase - where the openssl
109
+ // version would instead block on a terminal prompt that never came
110
+ const privateKey = readPrivateKey(privateKeyFile, privateKeyPassphrase);
111
+ // `openssl pkcs12 -export` refuses a key that does not go with the
112
+ // certificate ("No certificate matches private key"); keep that guard,
113
+ // or the result is a bundle nothing can use.
114
+ if (!certificateMatchesPrivateKey(certificate, privateKey)) {
115
+ throw new Error(`The private key ${privateKeyFile} does not match the certificate ${certificateFile}`);
116
+ }
117
+ const pfx = await createPfx({
118
+ certificate,
119
+ certificateChain,
120
+ privateKey,
121
+ password: passphrase,
122
+ friendlyName: options.friendlyName
123
+ });
124
+ await fs.promises.writeFile(outputFile, pfx);
125
+ }
126
+ // ── Extract certificate from PFX ───────────────────────────────
127
+ /**
128
+ * Extract the client/server certificate from a PFX file.
129
+ *
130
+ * @returns the certificate in PEM format.
131
+ */
132
+ export async function extractCertificateFromPFX(options) {
133
+ const { certificate } = await readPfxFile(options);
134
+ return toPem(certificate, "CERTIFICATE");
135
+ }
136
+ // ── Extract private key from PFX ───────────────────────────────
137
+ /**
138
+ * Extract the private key from a PFX file.
139
+ *
140
+ * @returns the private key as unencrypted PKCS#8 PEM.
141
+ */
142
+ export async function extractPrivateKeyFromPFX(options) {
143
+ const { privateKey } = await readPfxFile(options);
144
+ return coercePrivateKeyPem(privateKey);
145
+ }
146
+ // ── Extract CA certificates from PFX ───────────────────────────
147
+ /**
148
+ * Extract the CA / intermediate certificates from a PFX file.
149
+ *
150
+ * @returns the CA certificates in PEM format
151
+ * (empty string if none are present).
152
+ */
153
+ export async function extractCACertificatesFromPFX(options) {
154
+ const { certificateChain } = await readPfxFile(options);
155
+ return certificateChain.length === 0 ? "" : certificatesToPem(certificateChain);
156
+ }
157
+ // ── Extract everything from PFX ────────────────────────────────
158
+ /**
159
+ * Extract certificate + private key + CA certs from a PFX file
160
+ * in a single call.
161
+ *
162
+ * Prefer this over the single-part helpers when you want more than one
163
+ * part: the file is read, decrypted and MAC-verified once here, against
164
+ * once per part.
165
+ *
166
+ * @returns an {@link ExtractPFXResult} with all PEM-encoded parts.
167
+ */
168
+ export async function extractAllFromPFX(options) {
169
+ const { certificate, certificateChain, privateKey, friendlyName } = await readPfxFile(options);
170
+ return {
171
+ certificate: toPem(certificate, "CERTIFICATE"),
172
+ privateKey: coercePrivateKeyPem(privateKey),
173
+ caCertificates: certificateChain.length === 0 ? "" : certificatesToPem(certificateChain),
174
+ friendlyName
175
+ };
176
+ }
177
+ // ── Convert PFX to PEM (combined) ──────────────────────────────
178
+ /**
179
+ * Convert a PFX file to a single PEM file holding the private key, the
180
+ * certificate, and any issuer certificates the bundle carries, in that
181
+ * order.
182
+ */
183
+ export async function convertPFXtoPEM(pfxFile, pemFile, passphrase = "") {
184
+ const { certificate, certificateChain, privateKey } = await readPfxFile({ pfxFile, passphrase });
185
+ const parts = [coercePrivateKeyPem(privateKey), toPem(certificate, "CERTIFICATE")];
186
+ if (certificateChain.length > 0) {
187
+ parts.push(certificatesToPem(certificateChain));
188
+ }
189
+ await fs.promises.writeFile(pemFile, `${parts.map((part) => part.trimEnd()).join("\n")}\n`, "utf-8");
190
+ }
191
+ // ── Inspect PFX ────────────────────────────────────────────────
192
+ function formatThumbprint(certificate) {
193
+ return (makeSHA1Thumbprint(certificate).toString("hex").toUpperCase().match(/../g) ?? []).join(":");
194
+ }
195
+ function describePublicKey(certificate) {
196
+ const algorithm = certificate.publicKey.algorithm;
197
+ if (algorithm.modulusLength) {
198
+ return `${algorithm.name} ${algorithm.modulusLength} bits`;
199
+ }
200
+ if (algorithm.namedCurve) {
201
+ return `${algorithm.name} ${algorithm.namedCurve}`;
202
+ }
203
+ return algorithm.name;
204
+ }
205
+ function describeCertificate(der, indent) {
206
+ // der is a DER Buffer; wrap in a plain Uint8Array so the type is
207
+ // Uint8Array<ArrayBuffer> (not Buffer<ArrayBufferLike>) for x509's AsnEncodedType.
208
+ const certificate = new x509.X509Certificate(new Uint8Array(der));
209
+ return [
210
+ `${indent}subject : ${certificate.subject}`,
211
+ `${indent}issuer : ${certificate.issuer}`,
212
+ `${indent}serial number : ${certificate.serialNumber}`,
213
+ `${indent}not before : ${certificate.notBefore.toISOString()}`,
214
+ `${indent}not after : ${certificate.notAfter.toISOString()}`,
215
+ `${indent}public key : ${describePublicKey(certificate)}`,
216
+ `${indent}signature : ${certificate.signatureAlgorithm.name}`,
217
+ `${indent}SHA-1 thumbprint : ${formatThumbprint(der)}`
218
+ ];
219
+ }
220
+ /**
221
+ * Dump the contents of a PFX file in human-readable form.
222
+ *
223
+ * The layout is this package's own, not `openssl pkcs12 -info`'s: it
224
+ * describes the identity the bundle carries rather than the algorithms it
225
+ * was encrypted with, and it states outright whether the enclosed key
226
+ * matches the enclosed certificate - the question a bundle that will not
227
+ * load is usually being asked. Treat the text as something to read, not to
228
+ * parse; use {@link extractAllFromPFX} to get at the parts.
229
+ *
230
+ * @returns the human-readable dump as a string.
231
+ */
232
+ export async function dumpPFX(pfxFile, passphrase = "") {
233
+ const { certificate, certificateChain, privateKey, friendlyName } = await readPfxFile({ pfxFile, passphrase });
234
+ const lines = [`PFX bundle : ${pfxFile}`];
235
+ if (friendlyName) {
236
+ lines.push(`friendly name : ${friendlyName}`);
237
+ }
238
+ const keyVerdict = certificateMatchesPrivateKey(certificate, privateKey)
239
+ ? "matches this certificate"
240
+ : "DOES NOT match this certificate";
241
+ lines.push("", "certificate", ...describeCertificate(certificate, " "), ` private key : ${keyVerdict}`);
242
+ lines.push("", `issuer chain : ${certificateChain.length} certificate(s)`);
243
+ for (const [index, issuer] of certificateChain.entries()) {
244
+ lines.push(` [${index}]`, ...describeCertificate(issuer, " "));
245
+ }
246
+ return `${lines.join("\n")}\n`;
247
+ }
248
+ //# sourceMappingURL=toolbox_pfx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbox_pfx.js","sourceRoot":"","sources":["../../../lib/pki/toolbox_pfx.ts"],"names":[],"mappings":"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"}