node-opcua-pki 6.22.1 → 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 -248
  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 -5932
  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 -1003
  134. package/dist/index.js +0 -5009
  135. package/dist/index.js.map +0 -1
  136. package/dist/index.mjs +0 -3145
  137. package/dist/index.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install_prerequisite.js","sourceRoot":"","sources":["../../../../lib/toolbox/with_openssl/install_prerequisite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { Filename } from "../common.js";
2
+ import { type ExecuteOptions } from "./execute_openssl.js";
3
+ /**
4
+ * Render an OpenSSL config template (`$ENV::NAME` substitution, `{{#NAME}}`
5
+ * conditional blocks) to a temporary file and return its path.
6
+ *
7
+ * `envOverrides`, when given, is consulted before the global env registry
8
+ * for every key it names — the substituted value never depends on whatever
9
+ * `setEnv()` calls other, possibly-concurrent code made before or after this
10
+ * call. Pass it for any value the caller has already computed locally (as
11
+ * every `CertificateAuthority` operation now does for `ALTNAME` /
12
+ * `CDP_URL` / `AIA_VALUE`); omit it, as every other caller does, to keep
13
+ * reading the shared registry exactly as before.
14
+ */
15
+ export declare function generateStaticConfig(configPath: string, options?: ExecuteOptions, envOverrides?: Readonly<Record<string, string>>): string;
16
+ /**
17
+ * Remove a rendered temp config produced by {@link generateStaticConfig}.
18
+ * `configFile` is whatever that function returned (relative to
19
+ * `options.cwd` when a cwd was given, absolute otherwise). Every caller of
20
+ * `generateStaticConfig` is expected to pair it with this in a `finally`,
21
+ * or the `<name>.<pid>-<n>.tmp` files accumulate next to the real config
22
+ * forever.
23
+ */
24
+ export declare function cleanupStaticConfig(configFile: string, options?: ExecuteOptions): Promise<void>;
25
+ /**
26
+ * calculate the public key from private key
27
+ * openssl rsa -pubout -in private_key.pem -passin env:...
28
+ *
29
+ * `-passin` is always emitted (empty for a plaintext key) so an encrypted
30
+ * key without a passphrase fails fast instead of hanging on a TTY prompt.
31
+ *
32
+ * @method getPublicKeyFromPrivateKey
33
+ * @param privateKeyFilename: the existing file with the private key
34
+ * @param publicKeyFilename: the file where to store the public key
35
+ * @param passphrase: decrypts `privateKeyFilename` if it is an encrypted PKCS#8 key
36
+ */
37
+ export declare function getPublicKeyFromPrivateKey(privateKeyFilename: string, publicKeyFilename: string, passphrase?: string): Promise<void>;
38
+ /**
39
+ * extract public key from a certificate
40
+ * openssl x509 -pubkey -in certificate.pem -nottext
41
+ *
42
+ * @method getPublicKeyFromCertificate
43
+ * @param certificateFilename
44
+ * @param publicKeyFilename
45
+ */
46
+ export declare function getPublicKeyFromCertificate(certificateFilename: string, publicKeyFilename: string): Promise<void>;
47
+ export declare function x509Date(date?: Date): string;
48
+ /**
49
+ * @param certificate - the certificate file in PEM format, file must exist
50
+ */
51
+ export declare function dumpCertificate(certificate: Filename): Promise<string>;
52
+ export declare function toDer(certificatePem: string): Promise<string>;
53
+ export declare function fingerprint(certificatePem: string): Promise<string>;
@@ -0,0 +1,190 @@
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
+ import assert from "node:assert";
24
+ import fs from "node:fs";
25
+ import path from "node:path";
26
+ import { makePath } from "../common2.js";
27
+ import { g_config } from "../config.js";
28
+ import { getEnv, getEnvironmentVarNames, hasEnv } from "./_env.js";
29
+ import { execute_openssl, passinArg } from "./execute_openssl.js";
30
+ function openssl_require2DigitYearInDate() {
31
+ // istanbul ignore next
32
+ if (!g_config.opensslVersion) {
33
+ throw new Error("openssl_require2DigitYearInDate : openssl version is not known:" + " please call ensure_openssl_installed()");
34
+ }
35
+ return g_config.opensslVersion.match(/OpenSSL 0\.9/);
36
+ }
37
+ g_config.opensslVersion = "";
38
+ let _counter = 0;
39
+ /**
40
+ * Strip Mustache-style conditional blocks from an OpenSSL config template.
41
+ *
42
+ * {{#KEY}}...{{/KEY}}
43
+ *
44
+ * The block content is **kept** (markers removed) iff `KEY` resolves to a
45
+ * non-empty value — from `envOverrides` if it names the key, otherwise from
46
+ * the global registry (see {@link exportedEnvVars}) — and stripped
47
+ * (including the markers and the trailing newline) otherwise.
48
+ *
49
+ * Used to drive opt-in extensions like CRL Distribution Points and
50
+ * Authority Information Access: the same template serves the
51
+ * extension-set case (URL configured) and the extension-omitted case
52
+ * (no URL configured).
53
+ */
54
+ function stripConditionalBlocks(template, envOverrides) {
55
+ return template.replace(/\{\{#([A-Z_][A-Z0-9_]*)\}\}([\s\S]*?)\{\{\/\1\}\}\r?\n?/g, (_match, key, content) => {
56
+ const keep = envOverrides && Object.prototype.hasOwnProperty.call(envOverrides, key)
57
+ ? envOverrides[key] !== ""
58
+ : hasEnv(key) && getEnv(key) !== "";
59
+ return keep ? content : "";
60
+ });
61
+ }
62
+ /**
63
+ * Render an OpenSSL config template (`$ENV::NAME` substitution, `{{#NAME}}`
64
+ * conditional blocks) to a temporary file and return its path.
65
+ *
66
+ * `envOverrides`, when given, is consulted before the global env registry
67
+ * for every key it names — the substituted value never depends on whatever
68
+ * `setEnv()` calls other, possibly-concurrent code made before or after this
69
+ * call. Pass it for any value the caller has already computed locally (as
70
+ * every `CertificateAuthority` operation now does for `ALTNAME` /
71
+ * `CDP_URL` / `AIA_VALUE`); omit it, as every other caller does, to keep
72
+ * reading the shared registry exactly as before.
73
+ */
74
+ export function generateStaticConfig(configPath, options, envOverrides) {
75
+ const prePath = options?.cwd || "";
76
+ const originalFilename = !path.isAbsolute(configPath) ? path.join(prePath, configPath) : configPath;
77
+ let staticConfig = fs.readFileSync(originalFilename, { encoding: "utf8" });
78
+ // Strip conditional blocks first so unset placeholders never reach
79
+ // the env-var substitution pass below.
80
+ staticConfig = stripConditionalBlocks(staticConfig, envOverrides);
81
+ // Substituted values go through the function form of String.replace: the
82
+ // string form interprets `$`-sequences (`$&`, `$$`, "$`", `$'`) in the
83
+ // VALUE as replacement patterns, so a subject CN or CDP/OCSP URL
84
+ // containing `$&` would re-insert the `$ENV::NAME` literal into the
85
+ // rendered config and every openssl call on it would fail with
86
+ // "variable has no value".
87
+ for (const envVar of getEnvironmentVarNames()) {
88
+ if (envOverrides && Object.prototype.hasOwnProperty.call(envOverrides, envVar.key)) {
89
+ continue; // overridden below
90
+ }
91
+ staticConfig = staticConfig.replace(new RegExp(envVar.pattern, "gi"), () => getEnv(envVar.key));
92
+ }
93
+ if (envOverrides) {
94
+ for (const [key, value] of Object.entries(envOverrides)) {
95
+ staticConfig = staticConfig.replace(new RegExp(`\\$ENV\\:\\:${key}`, "gi"), () => value);
96
+ }
97
+ }
98
+ const staticConfigPath = `${configPath}.${process.pid}-${_counter++}.tmp`;
99
+ const temporaryConfigPath = !path.isAbsolute(configPath) ? path.join(prePath, staticConfigPath) : staticConfigPath;
100
+ fs.writeFileSync(temporaryConfigPath, staticConfig);
101
+ if (options?.cwd) {
102
+ return path.relative(options.cwd, temporaryConfigPath);
103
+ }
104
+ else {
105
+ return temporaryConfigPath;
106
+ }
107
+ }
108
+ /**
109
+ * Remove a rendered temp config produced by {@link generateStaticConfig}.
110
+ * `configFile` is whatever that function returned (relative to
111
+ * `options.cwd` when a cwd was given, absolute otherwise). Every caller of
112
+ * `generateStaticConfig` is expected to pair it with this in a `finally`,
113
+ * or the `<name>.<pid>-<n>.tmp` files accumulate next to the real config
114
+ * forever.
115
+ */
116
+ export async function cleanupStaticConfig(configFile, options) {
117
+ await fs.promises.rm(path.resolve(options?.cwd ?? "", configFile), { force: true });
118
+ }
119
+ const n = makePath;
120
+ /**
121
+ * calculate the public key from private key
122
+ * openssl rsa -pubout -in private_key.pem -passin env:...
123
+ *
124
+ * `-passin` is always emitted (empty for a plaintext key) so an encrypted
125
+ * key without a passphrase fails fast instead of hanging on a TTY prompt.
126
+ *
127
+ * @method getPublicKeyFromPrivateKey
128
+ * @param privateKeyFilename: the existing file with the private key
129
+ * @param publicKeyFilename: the file where to store the public key
130
+ * @param passphrase: decrypts `privateKeyFilename` if it is an encrypted PKCS#8 key
131
+ */
132
+ export async function getPublicKeyFromPrivateKey(privateKeyFilename, publicKeyFilename, passphrase) {
133
+ assert(fs.existsSync(privateKeyFilename));
134
+ const passin = passinArg(passphrase);
135
+ await execute_openssl(["rsa", "-pubout", "-in", n(privateKeyFilename), "-out", n(publicKeyFilename), ...passin.args], {
136
+ env: passin.env
137
+ });
138
+ }
139
+ /**
140
+ * extract public key from a certificate
141
+ * openssl x509 -pubkey -in certificate.pem -nottext
142
+ *
143
+ * @method getPublicKeyFromCertificate
144
+ * @param certificateFilename
145
+ * @param publicKeyFilename
146
+ */
147
+ export async function getPublicKeyFromCertificate(certificateFilename, publicKeyFilename) {
148
+ assert(fs.existsSync(certificateFilename));
149
+ // no shell, so no `>` redirection: capture stdout and write it ourselves
150
+ const output = await execute_openssl(["x509", "-pubkey", "-in", n(certificateFilename)], {});
151
+ await fs.promises.writeFile(publicKeyFilename, output);
152
+ }
153
+ export function x509Date(date) {
154
+ date = date || new Date();
155
+ const Y = date.getUTCFullYear();
156
+ const M = date.getUTCMonth() + 1;
157
+ const D = date.getUTCDate();
158
+ const h = date.getUTCHours();
159
+ const m = date.getUTCMinutes();
160
+ const s = date.getUTCSeconds();
161
+ function w(s, l) {
162
+ return `${s}`.padStart(l, "0");
163
+ }
164
+ if (openssl_require2DigitYearInDate()) {
165
+ // for example: on MacOS , where openssl 0.98 is installed by default
166
+ return `${w(Y, 2) + w(M, 2) + w(D, 2) + w(h, 2) + w(m, 2) + w(s, 2)}Z`;
167
+ }
168
+ else {
169
+ // for instance when openssl version is greater than 1.0.0
170
+ return `${w(Y, 4) + w(M, 2) + w(D, 2) + w(h, 2) + w(m, 2) + w(s, 2)}Z`;
171
+ }
172
+ }
173
+ /**
174
+ * @param certificate - the certificate file in PEM format, file must exist
175
+ */
176
+ export async function dumpCertificate(certificate) {
177
+ assert(fs.existsSync(certificate));
178
+ return await execute_openssl(["x509", "-in", n(certificate), "-text", "-noout"], {});
179
+ }
180
+ export async function toDer(certificatePem) {
181
+ assert(fs.existsSync(certificatePem));
182
+ const certificateDer = certificatePem.replace(".pem", ".der");
183
+ return await execute_openssl(["x509", "-outform", "der", "-in", certificatePem, "-out", certificateDer], {});
184
+ }
185
+ export async function fingerprint(certificatePem) {
186
+ // openssl x509 -in my_certificate.pem -hash -dates -noout -fingerprint
187
+ assert(fs.existsSync(certificatePem));
188
+ return await execute_openssl(["x509", "-fingerprint", "-noout", "-in", certificatePem], {});
189
+ }
190
+ //# sourceMappingURL=toolbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbox.js","sourceRoot":"","sources":["../../../../lib/toolbox/with_openssl/toolbox.ts"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,iBAAiB;AACjB,wHAAwH;AACxH,gFAAgF;AAChF,yCAAyC;AACzC,wHAAwH;AACxH,EAAE;AACF,gEAAgE;AAChE,EAAE;AACF,+GAA+G;AAC/G,sHAAsH;AACtH,kHAAkH;AAClH,mGAAmG;AACnG,EAAE;AACF,uHAAuH;AACvH,YAAY;AACZ,EAAE;AACF,uHAAuH;AACvH,wHAAwH;AACxH,mHAAmH;AACnH,mHAAmH;AACnH,wHAAwH;AAExH,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAuB,eAAe,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEvF,SAAS,+BAA+B;IACpC,uBAAuB;IACvB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACX,iEAAiE,GAAG,0CAA0C,CACjH,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AACzD,CAAC;AAED,QAAQ,CAAC,cAAc,GAAG,EAAE,CAAC;AAE7B,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB;;;;;;;;;;;;;;GAcG;AACH,SAAS,sBAAsB,CAAC,QAAgB,EAAE,YAA+C;IAC7F,OAAO,QAAQ,CAAC,OAAO,CAAC,0DAA0D,EAAE,CAAC,MAAM,EAAE,GAAW,EAAE,OAAe,EAAE,EAAE;QACzH,MAAM,IAAI,GACN,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;YACnE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE;YAC1B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAChC,UAAkB,EAClB,OAAwB,EACxB,YAA+C;IAE/C,MAAM,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IAEnC,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACpG,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3E,mEAAmE;IACnE,uCAAuC;IACvC,YAAY,GAAG,sBAAsB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAClE,yEAAyE;IACzE,uEAAuE;IACvE,iEAAiE;IACjE,oEAAoE;IACpE,+DAA+D;IAC/D,2BAA2B;IAC3B,KAAK,MAAM,MAAM,IAAI,sBAAsB,EAAE,EAAE,CAAC;QAC5C,IAAI,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACjF,SAAS,CAAC,mBAAmB;QACjC,CAAC;QACD,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACtD,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7F,CAAC;IACL,CAAC;IACD,MAAM,gBAAgB,GAAG,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,IAAI,QAAQ,EAAE,MAAM,CAAC;IAC1E,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACnH,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACJ,OAAO,mBAAmB,CAAC;IAC/B,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAkB,EAAE,OAAwB;IAClF,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,GAAG,QAAQ,CAAC;AAEnB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC5C,kBAA0B,EAC1B,iBAAyB,EACzB,UAAmB;IAEnB,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,eAAe,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE;QAClH,GAAG,EAAE,MAAM,CAAC,GAAG;KAClB,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,mBAA2B,EAAE,iBAAyB;IACpG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC3C,yEAAyE;IACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,IAAW;IAChC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAE/B,SAAS,CAAC,CAAC,CAAkB,EAAE,CAAS;QACpC,OAAO,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,+BAA+B,EAAE,EAAE,CAAC;QACpC,qEAAqE;QACrE,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;IAC3E,CAAC;SAAM,CAAC;QACJ,0DAA0D;QAC1D,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;IAC3E,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAqB;IACvD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACnC,OAAO,MAAM,eAAe,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,cAAsB;IAC9C,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,OAAO,MAAM,eAAe,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;AACjH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,cAAsB;IACpD,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACtC,OAAO,MAAM,eAAe,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;AAChG,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type CreateCertificateSigningRequestWithConfigOptions } from "../common.js";
2
+ /**
3
+ * create a certificate signing request
4
+ */
5
+ export declare function createCertificateSigningRequestAsync(certificateSigningRequestFilename: string, params: CreateCertificateSigningRequestWithConfigOptions): Promise<void>;
@@ -0,0 +1,69 @@
1
+ // ---------------------------------------------------------------------------------------------------------------------
2
+ // node-opcua-pki
3
+ // ---------------------------------------------------------------------------------------------------------------------
4
+ // Copyright (c) 2022-2026 Sterfive.com
5
+ // ---------------------------------------------------------------------------------------------------------------------
6
+ //
7
+ // This project is licensed under the terms of the MIT license.
8
+ //
9
+ // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
10
+ // documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
11
+ // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
12
+ // permit persons to whom the Software is furnished to do so, subject to the following conditions:
13
+ //
14
+ // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
15
+ // Software.
16
+ //
17
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18
+ // WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ // ---------------------------------------------------------------------------------------------------------------------
22
+ import assert from "node:assert";
23
+ import fs from "node:fs";
24
+ import { coercePrivateKeyPem, createCertificateSigningRequest, pemToPrivateKey, Subject } from "node-opcua-crypto";
25
+ import { isOpaqueSigner } from "../common.js";
26
+ import { display, displaySubtitle } from "../display.js";
27
+ /**
28
+ * create a certificate signing request
29
+ */
30
+ export async function createCertificateSigningRequestAsync(certificateSigningRequestFilename, params) {
31
+ assert(params);
32
+ assert(params.rootDir);
33
+ assert(params.configFile);
34
+ assert(params.privateKey);
35
+ if (typeof params.privateKey === "string") {
36
+ assert(fs.existsSync(params.privateKey), `Private key must exist${params.privateKey}`);
37
+ }
38
+ // assert(fs.existsSync(params.configFile), "config file must exist " + params.configFile);
39
+ assert(fs.existsSync(params.rootDir), "RootDir key must exist");
40
+ assert(typeof certificateSigningRequestFilename === "string");
41
+ const subject = params.subject ? new Subject(params.subject).toString() : undefined;
42
+ displaySubtitle("- Creating a Certificate Signing Request with subtile");
43
+ // an opaque signer is handed to the CSR primitive as-is: the
44
+ // proof-of-possession signature and the embedded public key both come
45
+ // from the signer, and there is no PEM to coerce
46
+ const privateKey = isOpaqueSigner(params.privateKey)
47
+ ? params.privateKey
48
+ : await pemToPrivateKey(typeof params.privateKey === "string"
49
+ ? await fs.promises.readFile(params.privateKey, "utf-8")
50
+ : coercePrivateKeyPem(params.privateKey));
51
+ const { csr } = await createCertificateSigningRequest({
52
+ privateKey,
53
+ dns: params.dns,
54
+ ip: params.ip,
55
+ subject,
56
+ applicationUri: params.applicationUri,
57
+ purpose: params.purpose
58
+ });
59
+ await fs.promises.writeFile(certificateSigningRequestFilename, csr, "utf-8");
60
+ display(`- privateKey ${typeof params.privateKey === "string"
61
+ ? params.privateKey
62
+ : isOpaqueSigner(params.privateKey)
63
+ ? "<opaque-signer>"
64
+ : "<in-memory>"}`);
65
+ display(`- certificateSigningRequestFilename ${certificateSigningRequestFilename}`);
66
+ // to verify that the CSR is correct:
67
+ // openssl req -in ./tmp/without_openssl.csr -noout -verify
68
+ }
69
+ //# sourceMappingURL=create_certificate_signing_request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_certificate_signing_request.js","sourceRoot":"","sources":["../../../../lib/toolbox/without_openssl/create_certificate_signing_request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type CreateSelfSignCertificateWithConfigParam } from "../common.js";
2
+ export declare function createSelfSignedCertificateAsync(certificate: string, params: CreateSelfSignCertificateWithConfigParam): Promise<void>;
3
+ export declare function createSelfSignedCertificate(certificate: string, params: CreateSelfSignCertificateWithConfigParam): Promise<void>;
@@ -0,0 +1,78 @@
1
+ // ---------------------------------------------------------------------------------------------------------------------
2
+ // node-opcua-pki
3
+ // ---------------------------------------------------------------------------------------------------------------------
4
+ // Copyright (c) 2022-2026 Sterfive.com
5
+ // ---------------------------------------------------------------------------------------------------------------------
6
+ //
7
+ // This project is licensed under the terms of the MIT license.
8
+ //
9
+ // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
10
+ // documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
11
+ // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
12
+ // permit persons to whom the Software is furnished to do so, subject to the following conditions:
13
+ //
14
+ // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
15
+ // Software.
16
+ //
17
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18
+ // WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ // ---------------------------------------------------------------------------------------------------------------------
22
+ import assert from "node:assert";
23
+ import fs from "node:fs";
24
+ import { CertificatePurpose, coercePrivateKeyPem, createSelfSignedCertificate as createSelfSignedCertificate1, pemToPrivateKey, Subject } from "node-opcua-crypto";
25
+ import { adjustDate, isOpaqueSigner } from "../common.js";
26
+ import { displayTitle } from "../display.js";
27
+ export async function createSelfSignedCertificateAsync(certificate, params) {
28
+ params.purpose = params.purpose || CertificatePurpose.ForApplication;
29
+ assert(params.purpose, "Please provide a Certificate Purpose");
30
+ /**
31
+ * note: due to a limitation of openssl ,
32
+ * it is not possible to control the startDate of the certificate validity
33
+ * to achieve this the certificateAuthority tool shall be used.
34
+ */
35
+ assert(fs.existsSync(params.configFile));
36
+ assert(fs.existsSync(params.rootDir));
37
+ if (typeof params.privateKey === "string") {
38
+ assert(fs.existsSync(params.privateKey));
39
+ }
40
+ if (!params.subject) {
41
+ throw Error("Missing subject");
42
+ }
43
+ assert(typeof params.applicationUri === "string");
44
+ assert(Array.isArray(params.dns));
45
+ // xx no key size in self-signed assert(params.keySize == 2048 || params.keySize == 4096);
46
+ // processAltNames(params);
47
+ adjustDate(params);
48
+ assert(Object.prototype.hasOwnProperty.call(params, "validity"));
49
+ let subject = new Subject(params.subject);
50
+ subject = subject.toString();
51
+ // xx const certificateRequestFilename = certificate + ".csr";
52
+ const purpose = params.purpose;
53
+ displayTitle("Generate a certificate request");
54
+ // an opaque signer is handed to the primitive as-is: the public half
55
+ // comes from getPublicKey() and signing routes through the signer
56
+ // (node-opcua-crypto >= 5.10.1); there is no PEM to coerce
57
+ const privateKey = isOpaqueSigner(params.privateKey)
58
+ ? params.privateKey
59
+ : await pemToPrivateKey(typeof params.privateKey === "string"
60
+ ? await fs.promises.readFile(params.privateKey, "utf-8")
61
+ : coercePrivateKeyPem(params.privateKey));
62
+ const { cert } = await createSelfSignedCertificate1({
63
+ privateKey,
64
+ notBefore: params.startDate,
65
+ notAfter: params.endDate,
66
+ validity: params.validity,
67
+ dns: params.dns,
68
+ ip: params.ip,
69
+ subject,
70
+ applicationUri: params.applicationUri,
71
+ purpose
72
+ });
73
+ await fs.promises.writeFile(certificate, cert, "utf-8");
74
+ }
75
+ export async function createSelfSignedCertificate(certificate, params) {
76
+ await createSelfSignedCertificateAsync(certificate, params);
77
+ }
78
+ //# sourceMappingURL=create_self_signed_certificate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_self_signed_certificate.js","sourceRoot":"","sources":["../../../../lib/toolbox/without_openssl/create_self_signed_certificate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./create_certificate_signing_request.js";
2
+ export * from "./create_self_signed_certificate.js";
@@ -0,0 +1,25 @@
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
+ export * from "./create_certificate_signing_request.js";
24
+ export * from "./create_self_signed_certificate.js";
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/toolbox/without_openssl/index.ts"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,iBAAiB;AACjB,wHAAwH;AACxH,gFAAgF;AAChF,yCAAyC;AACzC,wHAAwH;AACxH,EAAE;AACF,gEAAgE;AAChE,EAAE;AACF,+GAA+G;AAC/G,sHAAsH;AACtH,kHAAkH;AAClH,mGAAmG;AACnG,EAAE;AACF,uHAAuH;AACvH,YAAY;AACZ,EAAE;AACF,uHAAuH;AACvH,wHAAwH;AACxH,mHAAmH;AACnH,mHAAmH;AACnH,wHAAwH;AAExH,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC"}
package/package.json CHANGED
@@ -1,38 +1,18 @@
1
1
  {
2
2
  "name": "node-opcua-pki",
3
- "version": "6.22.1",
3
+ "version": "7.0.0",
4
4
  "description": "PKI management for node-opcua",
5
- "type": "commonjs",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "//main": "main/types are the pre-'exports' fallback, used only by resolvers that ignore the exports map. They are deliberately left as the CommonJS pair, matching \"type\": \"commonjs\", so that path behaves exactly as it did before - do not 'fix' one without the other.",
9
- "//exports": "types are declared PER CONDITION on purpose. A single shared \"types\" key is resolved for BOTH import and require; since this package is \"type\": \"commonjs\", a bare .d.ts is a CommonJS module, so an ESM consumer got CJS types describing the real .mjs it imports. attw reports that as FalseCJS ('Masquerading as CJS'); it was present in 6.18.0. The .d.mts file already existed - tsup emits it from dts:true with format esm+cjs - the map simply never pointed at it.",
5
+ "type": "module",
6
+ "main": "./dist/lib/index.js",
7
+ "types": "./dist/lib/index.d.ts",
10
8
  "exports": {
11
- ".": {
12
- "import": {
13
- "types": "./dist/index.d.mts",
14
- "default": "./dist/index.mjs"
15
- },
16
- "require": {
17
- "types": "./dist/index.d.ts",
18
- "default": "./dist/index.js"
19
- }
20
- },
21
- "./core": {
22
- "import": {
23
- "types": "./dist/core.d.mts",
24
- "default": "./dist/core.mjs"
25
- },
26
- "require": {
27
- "types": "./dist/core.d.ts",
28
- "default": "./dist/core.js"
29
- }
30
- },
9
+ ".": "./dist/lib/index.js",
10
+ "./core": "./dist/lib/core.js",
31
11
  "./package.json": "./package.json"
32
12
  },
33
13
  "bin": {
34
- "pki": "./dist/bin/pki.mjs",
35
- "node-opcua-pki": "./dist/bin/pki.mjs"
14
+ "pki": "./dist/bin/pki.js",
15
+ "node-opcua-pki": "./dist/bin/pki.js"
36
16
  },
37
17
  "files": [
38
18
  "dist",
@@ -64,8 +44,9 @@
64
44
  "chokidar": "4.0.3",
65
45
  "command-line-args": "^6.0.2",
66
46
  "command-line-usage": "^7.0.4",
67
- "node-opcua-crypto": "5.10.1",
47
+ "node-opcua-crypto": "6.0.0",
68
48
  "yauzl": "^3.4.0"
69
49
  },
70
- "gitHead": "220430b62b500cbeac675c4cffed1419e64ad291"
50
+ "//scheme": "ESM-only, unbundled tsc build matching the node-opcua monorepo scheme (dist mirrors lib/ + bin/, no CJS). String export targets carry no 'require' condition, so require('node-opcua-pki') resolves here on Node 22.12+ (require of an ES module; the graph has no top-level await) and fails with ERR_REQUIRE_ESM on older Node.",
51
+ "gitHead": "cda842be3eb60e53823fd8d0d6c8193f5d685440"
71
52
  }
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- __commonJS,
4
- init_esm_shims
5
- } from "../chunk-GCHH54PS.mjs";
6
-
7
- // packages/node-opcua-pki/bin/install_prerequisite.ts
8
- import { install_prerequisite } from "node-opcua-pki";
9
- var require_install_prerequisite = __commonJS({
10
- "packages/node-opcua-pki/bin/install_prerequisite.ts"() {
11
- init_esm_shims();
12
- install_prerequisite().catch((err) => {
13
- console.log("err = ", err.message);
14
- });
15
- }
16
- });
17
- export default require_install_prerequisite();
18
- //# sourceMappingURL=install_prerequisite.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../bin/install_prerequisite.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { install_prerequisite } from \"node-opcua-pki\";\n\ninstall_prerequisite().catch((err: Error) => {\n console.log(\"err = \", err.message);\n});\n"],"mappings":";;;;;;;AACA,SAAS,4BAA4B;AADrC;AAAA;AAAA;AAGA,yBAAqB,EAAE,MAAM,CAAC,QAAe;AACzC,cAAQ,IAAI,UAAU,IAAI,OAAO;AAAA,IACrC,CAAC;AAAA;AAAA;","names":[]}