node-opcua-pki 3.1.1 → 4.0.0-beta.1

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 (172) hide show
  1. package/.eslintrc.yml +1 -1
  2. package/bin/crypto_create_CA.js +3 -3
  3. package/dist/{pki → lib/ca}/certificate_authority.d.ts +3 -3
  4. package/dist/{pki → lib/ca}/certificate_authority.js +63 -55
  5. package/dist/lib/ca/certificate_authority.js.map +1 -0
  6. package/dist/{crypto_create_CA.d.ts → lib/ca/crypto_create_CA.d.ts} +1 -1
  7. package/dist/{crypto_create_CA.js → lib/ca/crypto_create_CA.js} +25 -21
  8. package/dist/lib/ca/crypto_create_CA.js.map +1 -0
  9. package/dist/lib/ca/index.d.ts +1 -0
  10. package/dist/lib/ca/index.js +18 -0
  11. package/dist/lib/ca/index.js.map +1 -0
  12. package/dist/lib/ca/templates/ca_config_template.cnf.js.map +1 -0
  13. package/dist/lib/ca/templates/simple_config_template.cnf.js.map +1 -0
  14. package/dist/lib/index.d.ts +4 -0
  15. package/dist/{index.js → lib/index.js} +6 -5
  16. package/dist/lib/index.js.map +1 -0
  17. package/dist/{misc → lib/misc}/applicationurn.js +1 -1
  18. package/dist/lib/misc/applicationurn.js.map +1 -0
  19. package/dist/lib/misc/hostname.js.map +1 -0
  20. package/dist/lib/misc/subject.d.ts +1 -0
  21. package/dist/lib/misc/subject.js +6 -0
  22. package/dist/lib/misc/subject.js.map +1 -0
  23. package/dist/{pki → lib/pki}/certificate_manager.d.ts +17 -2
  24. package/dist/{pki → lib/pki}/certificate_manager.js +140 -70
  25. package/dist/lib/pki/certificate_manager.js.map +1 -0
  26. package/dist/{pki → lib/pki}/common.js.map +1 -1
  27. package/dist/lib/pki/templates/simple_config_template.cnf.d.ts +2 -0
  28. package/dist/lib/pki/templates/simple_config_template.cnf.js +76 -0
  29. package/dist/lib/pki/templates/simple_config_template.cnf.js.map +1 -0
  30. package/dist/lib/pki/toolbox_pfx.js.map +1 -0
  31. package/dist/lib/toolbox/common.d.ts +47 -0
  32. package/dist/lib/toolbox/common.js +56 -0
  33. package/dist/lib/toolbox/common.js.map +1 -0
  34. package/dist/lib/toolbox/common2.d.ts +3 -0
  35. package/dist/lib/toolbox/common2.js +62 -0
  36. package/dist/lib/toolbox/common2.js.map +1 -0
  37. package/dist/lib/toolbox/config.d.ts +5 -0
  38. package/dist/lib/toolbox/config.js +31 -0
  39. package/dist/lib/toolbox/config.js.map +1 -0
  40. package/dist/lib/toolbox/display.d.ts +4 -0
  41. package/dist/lib/toolbox/display.js +74 -0
  42. package/dist/lib/toolbox/display.js.map +1 -0
  43. package/dist/lib/toolbox/index.d.ts +5 -0
  44. package/dist/lib/toolbox/index.js +44 -0
  45. package/dist/lib/toolbox/index.js.map +1 -0
  46. package/dist/lib/toolbox/with_openssl/_create_random_file.d.ts +5 -0
  47. package/dist/lib/toolbox/with_openssl/_create_random_file.js +63 -0
  48. package/dist/lib/toolbox/with_openssl/_create_random_file.js.map +1 -0
  49. package/dist/lib/toolbox/with_openssl/_env.d.ts +7 -0
  50. package/dist/lib/toolbox/with_openssl/_env.js +46 -0
  51. package/dist/lib/toolbox/with_openssl/_env.js.map +1 -0
  52. package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.d.ts +10 -0
  53. package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.js +89 -0
  54. package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.js.map +1 -0
  55. package/dist/lib/toolbox/with_openssl/create_private_key.d.ts +11 -0
  56. package/dist/lib/toolbox/with_openssl/create_private_key.js +115 -0
  57. package/dist/lib/toolbox/with_openssl/create_private_key.js.map +1 -0
  58. package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.d.ts +5 -0
  59. package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.js +150 -0
  60. package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.js.map +1 -0
  61. package/dist/lib/toolbox/with_openssl/execute_openssl.d.ts +15 -0
  62. package/dist/lib/toolbox/with_openssl/execute_openssl.js +190 -0
  63. package/dist/lib/toolbox/with_openssl/execute_openssl.js.map +1 -0
  64. package/dist/lib/toolbox/with_openssl/index.d.ts +5 -0
  65. package/dist/lib/toolbox/with_openssl/index.js +22 -0
  66. package/dist/lib/toolbox/with_openssl/index.js.map +1 -0
  67. package/dist/{misc → lib/toolbox/with_openssl}/install_prerequisite.js +2 -2
  68. package/dist/lib/toolbox/with_openssl/install_prerequisite.js.map +1 -0
  69. package/dist/lib/toolbox/with_openssl/toolbox.d.ts +31 -0
  70. package/dist/lib/toolbox/with_openssl/toolbox.js +129 -0
  71. package/dist/lib/toolbox/with_openssl/toolbox.js.map +1 -0
  72. package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.d.ts +10 -0
  73. package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.js +83 -0
  74. package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.js.map +1 -0
  75. package/dist/lib/toolbox/without_openssl/create_private_key.d.ts +2 -0
  76. package/dist/lib/toolbox/without_openssl/create_private_key.js +32 -0
  77. package/dist/lib/toolbox/without_openssl/create_private_key.js.map +1 -0
  78. package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.d.ts +3 -0
  79. package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.js +89 -0
  80. package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.js.map +1 -0
  81. package/dist/lib/toolbox/without_openssl/index.d.ts +3 -0
  82. package/dist/lib/toolbox/without_openssl/index.js +42 -0
  83. package/dist/lib/toolbox/without_openssl/index.js.map +1 -0
  84. package/dist/test/helpers.d.ts +7 -0
  85. package/dist/test/helpers.js +56 -0
  86. package/dist/test/helpers.js.map +1 -0
  87. package/dist/test/test_certificate_authority.d.ts +1 -0
  88. package/dist/test/test_certificate_authority.js +265 -0
  89. package/dist/test/test_certificate_authority.js.map +1 -0
  90. package/dist/test/test_certificate_manager.d.ts +1 -0
  91. package/dist/test/test_certificate_manager.js +235 -0
  92. package/dist/test/test_certificate_manager.js.map +1 -0
  93. package/dist/test/test_certificate_validation.d.ts +1 -0
  94. package/dist/test/test_certificate_validation.js +153 -0
  95. package/dist/test/test_certificate_validation.js.map +1 -0
  96. package/dist/test/test_concurrency.d.ts +1 -0
  97. package/dist/test/test_concurrency.js +50 -0
  98. package/dist/test/test_concurrency.js.map +1 -0
  99. package/dist/test/test_create_signing_request.d.ts +1 -0
  100. package/dist/test/test_create_signing_request.js +101 -0
  101. package/dist/test/test_create_signing_request.js.map +1 -0
  102. package/dist/test/test_crypto_create_CA.d.ts +1 -0
  103. package/dist/test/test_crypto_create_CA.js +272 -0
  104. package/dist/test/test_crypto_create_CA.js.map +1 -0
  105. package/dist/test/test_ctt_use_cases.d.ts +1 -0
  106. package/dist/test/test_ctt_use_cases.js +384 -0
  107. package/dist/test/test_ctt_use_cases.js.map +1 -0
  108. package/dist/test/test_install_prerequisite.d.ts +1 -0
  109. package/dist/test/test_install_prerequisite.js +11 -0
  110. package/dist/test/test_install_prerequisite.js.map +1 -0
  111. package/dist/test/test_toolbox.d.ts +1 -0
  112. package/dist/test/test_toolbox.js +45 -0
  113. package/dist/test/test_toolbox.js.map +1 -0
  114. package/lib/{pki → ca}/certificate_authority.ts +103 -97
  115. package/lib/{crypto_create_CA.ts → ca/crypto_create_CA.ts} +31 -30
  116. package/lib/ca/index.ts +1 -0
  117. package/lib/index.ts +7 -5
  118. package/lib/misc/applicationurn.ts +1 -1
  119. package/lib/misc/subject.ts +1 -141
  120. package/lib/pki/certificate_manager.ts +109 -43
  121. package/lib/toolbox/common.ts +116 -0
  122. package/lib/toolbox/common2.ts +59 -0
  123. package/lib/toolbox/config.ts +27 -0
  124. package/lib/toolbox/display.ts +69 -0
  125. package/lib/toolbox/index.ts +27 -0
  126. package/lib/toolbox/with_openssl/_create_random_file.ts +60 -0
  127. package/lib/toolbox/with_openssl/_env.ts +75 -0
  128. package/lib/toolbox/with_openssl/create_certificate_signing_request.ts +104 -0
  129. package/lib/toolbox/with_openssl/create_private_key.ts +120 -0
  130. package/lib/toolbox/with_openssl/create_self_signed_certificate.ts +174 -0
  131. package/lib/toolbox/with_openssl/execute_openssl.ts +220 -0
  132. package/lib/toolbox/with_openssl/index.ts +29 -0
  133. package/lib/{misc → toolbox/with_openssl}/install_prerequisite.ts +2 -2
  134. package/lib/toolbox/with_openssl/toolbox.ts +144 -0
  135. package/lib/toolbox/without_openssl/create_certificate_signing_request.ts +81 -0
  136. package/lib/toolbox/without_openssl/create_private_key.ts +29 -0
  137. package/lib/toolbox/without_openssl/create_self_signed_certificate.ts +90 -0
  138. package/lib/toolbox/without_openssl/index.ts +25 -0
  139. package/package.json +6 -6
  140. package/tsconfig.json +2 -2
  141. package/dist/crypto_create_CA.js.map +0 -1
  142. package/dist/index.d.ts +0 -6
  143. package/dist/index.js.map +0 -1
  144. package/dist/misc/applicationurn.js.map +0 -1
  145. package/dist/misc/hostname.js.map +0 -1
  146. package/dist/misc/install_prerequisite.js.map +0 -1
  147. package/dist/misc/subject.d.ts +0 -26
  148. package/dist/misc/subject.js +0 -122
  149. package/dist/misc/subject.js.map +0 -1
  150. package/dist/pki/certificate_authority.js.map +0 -1
  151. package/dist/pki/certificate_manager.js.map +0 -1
  152. package/dist/pki/templates/ca_config_template.cnf.js.map +0 -1
  153. package/dist/pki/templates/simple_config_template.cnf.js.map +0 -1
  154. package/dist/pki/toolbox.d.ts +0 -160
  155. package/dist/pki/toolbox.js +0 -700
  156. package/dist/pki/toolbox.js.map +0 -1
  157. package/dist/pki/toolbox_pfx.js.map +0 -1
  158. package/lib/pki/common.ts +0 -5
  159. package/lib/pki/toolbox.ts +0 -857
  160. /package/dist/{pki → lib/ca}/templates/ca_config_template.cnf.d.ts +0 -0
  161. /package/dist/{pki → lib/ca}/templates/ca_config_template.cnf.js +0 -0
  162. /package/dist/{pki → lib/ca}/templates/simple_config_template.cnf.d.ts +0 -0
  163. /package/dist/{pki → lib/ca}/templates/simple_config_template.cnf.js +0 -0
  164. /package/dist/{misc → lib/misc}/applicationurn.d.ts +0 -0
  165. /package/dist/{misc → lib/misc}/hostname.d.ts +0 -0
  166. /package/dist/{misc → lib/misc}/hostname.js +0 -0
  167. /package/dist/{pki → lib/pki}/common.d.ts +0 -0
  168. /package/dist/{pki → lib/pki}/common.js +0 -0
  169. /package/dist/{pki → lib/pki}/toolbox_pfx.d.ts +0 -0
  170. /package/dist/{pki → lib/pki}/toolbox_pfx.js +0 -0
  171. /package/dist/{misc → lib/toolbox/with_openssl}/install_prerequisite.d.ts +0 -0
  172. /package/lib/{pki → ca}/templates/ca_config_template.cnf.ts +0 -0
package/.eslintrc.yml CHANGED
@@ -14,4 +14,4 @@ rules:
14
14
  quotes:
15
15
  - error
16
16
  - double
17
-
17
+ - avoidEscape: true
@@ -1,7 +1,7 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  /* eslint-disable @typescript-eslint/no-var-requires */
3
3
  // ---------------------------------------------------------------------------------------------------------------------
4
- // node-opcua
4
+ // node-opcua-pki
5
5
  // ---------------------------------------------------------------------------------------------------------------------
6
6
  // Copyright (c) 2014-2020 - Etienne Rossignon - etienne.rossignon (at) gadz.org
7
7
  // ---------------------------------------------------------------------------------------------------------------------
@@ -30,7 +30,7 @@
30
30
  const _pkg = require("../package.json");
31
31
 
32
32
  // eslint-disable-next-line no-undef
33
- require("../dist/crypto_create_CA.js").main(process.argv.splice(2), () => {
33
+ require("../dist/lib/ca/crypto_create_CA.js").main(process.argv.splice(2), () => {
34
34
  /* empty */
35
35
  // xx updateNotifier({pkg}).notify();
36
36
 
@@ -1,7 +1,7 @@
1
- import { ErrorCallback, Filename, KeySize } from "./common";
2
- import { Params } from "./toolbox";
3
- import { Subject, SubjectOptions } from "../misc/subject";
1
+ import { Subject, SubjectOptions } from "node-opcua-crypto";
2
+ import { ErrorCallback, Filename, KeySize, Params } from "../toolbox";
4
3
  export declare const defaultSubject = "/C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=NodeOPCUA-CA";
4
+ export declare const configurationFileTemplate: string;
5
5
  export interface CertificateAuthorityOptions {
6
6
  keySize: KeySize;
7
7
  location: string;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CertificateAuthority = exports.defaultSubject = void 0;
3
+ exports.CertificateAuthority = exports.configurationFileTemplate = exports.defaultSubject = void 0;
4
4
  // ---------------------------------------------------------------------------------------------------------------------
5
5
  // node-opcua
6
6
  // ---------------------------------------------------------------------------------------------------------------------
7
7
  // Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org
8
- // Copyright (c) 2022 - Sterfive.com
8
+ // Copyright (c) 2022-2023 - Sterfive.com
9
9
  // ---------------------------------------------------------------------------------------------------------------------
10
10
  //
11
11
  // This project is licensed under the terms of the MIT license.
@@ -29,10 +29,14 @@ const async = require("async");
29
29
  const chalk = require("chalk");
30
30
  const fs = require("fs");
31
31
  const path = require("path");
32
- const toolbox_1 = require("./toolbox");
33
- const subject_1 = require("../misc/subject");
34
32
  const node_opcua_crypto_1 = require("node-opcua-crypto");
33
+ const toolbox_1 = require("../toolbox");
34
+ const with_openssl_1 = require("../toolbox/with_openssl");
35
+ const create_private_key_1 = require("../toolbox/without_openssl/create_private_key");
35
36
  exports.defaultSubject = "/C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=NodeOPCUA-CA";
37
+ const ca_config_template_cnf_1 = require("./templates/ca_config_template.cnf");
38
+ // tslint:disable-next-line:variable-name
39
+ exports.configurationFileTemplate = ca_config_template_cnf_1.default;
36
40
  const config = {
37
41
  certificateDir: "INVALID",
38
42
  forceCA: false,
@@ -42,14 +46,15 @@ const n = toolbox_1.make_path;
42
46
  const q = toolbox_1.quote;
43
47
  // convert 'c07b9179' to "192.123.145.121"
44
48
  function octetStringToIpAddress(a) {
45
- return (parseInt(a.substr(0, 2), 16).toString() +
49
+ return (parseInt(a.substring(0, 2), 16).toString() +
46
50
  "." +
47
- parseInt(a.substr(2, 2), 16).toString() +
51
+ parseInt(a.substring(2, 4), 16).toString() +
48
52
  "." +
49
- parseInt(a.substr(4, 2), 16).toString() +
53
+ parseInt(a.substring(4, 6), 16).toString() +
50
54
  "." +
51
- parseInt(a.substr(6, 2), 16).toString());
55
+ parseInt(a.substring(6, 8), 16).toString());
52
56
  }
57
+ assert(octetStringToIpAddress("c07b9179") === "192.123.145.121");
53
58
  function construct_CertificateAuthority(certificateAuthority, callback) {
54
59
  // create the CA directory store
55
60
  // create the CA directory store
@@ -103,7 +108,9 @@ function construct_CertificateAuthority(certificateAuthority, callback) {
103
108
  return callback();
104
109
  }
105
110
  // tslint:disable:no-empty
106
- (0, toolbox_1.displayTitle)("Create Certificate Authority (CA)", (_err) => { });
111
+ (0, toolbox_1.displayTitle)("Create Certificate Authority (CA)", (_err) => {
112
+ /** */
113
+ });
107
114
  const indexFileAttr = path.join(caRootDir, "index.txt.attr");
108
115
  if (!fs.existsSync(indexFileAttr)) {
109
116
  fs.writeFileSync(indexFileAttr, "unique_subject = no");
@@ -111,50 +118,53 @@ function construct_CertificateAuthority(certificateAuthority, callback) {
111
118
  const caConfigFile = certificateAuthority.configFile;
112
119
  // eslint-disable-next-line no-constant-condition
113
120
  if (1 || !fs.existsSync(caConfigFile)) {
114
- let data = toolbox_1.configurationFileTemplate; // inlineText(configurationFile);
121
+ let data = exports.configurationFileTemplate; // inlineText(configurationFile);
115
122
  data = data.replace(/%%ROOT_FOLDER%%/, (0, toolbox_1.make_path)(caRootDir));
116
123
  fs.writeFileSync(caConfigFile, data);
117
124
  }
118
125
  // http://www.akadia.com/services/ssh_test_certificate.html
119
- const subjectOpt = " -subj \"" + subject.toString() + "\" ";
126
+ const subjectOpt = ' -subj "' + subject.toString() + '" ';
120
127
  const options = { cwd: caRootDir };
121
- (0, toolbox_1.processAltNames)({});
122
- const configFile = (0, toolbox_1.generateStaticConfig)("conf/caconfig.cnf", options);
128
+ (0, with_openssl_1.processAltNames)({});
129
+ const configFile = (0, with_openssl_1.generateStaticConfig)("conf/caconfig.cnf", options);
123
130
  const configOption = " -config " + q(n(configFile));
124
131
  const keySize = certificateAuthority.keySize;
125
- const randomFile = "random.rnd";
132
+ const privateKeyFilename = path.join(caRootDir, "private/cakey.pem");
133
+ const csrFilename = path.join(caRootDir, "private/cakey.csr");
126
134
  const tasks = [
127
- (callback) => (0, toolbox_1.displayTitle)("Creating random file random.rnd", callback),
128
- (callback) => (0, toolbox_1.createRandomFileIfNotExist)(randomFile, options, callback),
129
135
  (callback) => (0, toolbox_1.displayTitle)("Generate the CA private Key - " + keySize, callback),
130
136
  // The first step is to create your RSA Private Key.
131
137
  // This key is a 1025,2048,3072 or 2038 bit RSA key which is encrypted using
132
138
  // Triple-DES and stored in a PEM format so that it is readable as ASCII text.
133
- (callback) => (0, toolbox_1.execute_openssl)("genrsa " + " -out private/cakey.pem" + ((0, toolbox_1.useRandFile)() ? " -rand " + randomFile : "") + " " + keySize, options, callback),
139
+ (callback) => (0, create_private_key_1.createPrivateKey)(privateKeyFilename, keySize, callback),
134
140
  (callback) => (0, toolbox_1.displayTitle)("Generate a certificate request for the CA key", callback),
135
141
  // Once the private key is generated a Certificate Signing Request can be generated.
136
142
  // The CSR is then used in one of two ways. Ideally, the CSR will be sent to a Certificate Authority, such as
137
143
  // Thawte or Verisign who will verify the identity of the requestor and issue a signed certificate.
138
144
  // The second option is to self-sign the CSR, which will be demonstrated in the next section
139
- (callback) => (0, toolbox_1.execute_openssl)("req -new" +
145
+ (callback) => (0, with_openssl_1.execute_openssl)("req -new" +
140
146
  " -sha256 " +
141
147
  " -text " +
142
148
  " -extensions v3_ca" +
143
149
  configOption +
144
- " -key private/cakey.pem " +
145
- " -out private/cakey.csr " +
150
+ " -key " +
151
+ q(n(privateKeyFilename)) +
152
+ " -out " +
153
+ q(n(csrFilename)) +
154
+ " " +
146
155
  subjectOpt, options, callback),
147
156
  // xx // Step 3: Remove Passphrase from Key
148
157
  // xx execute("cp private/cakey.pem private/cakey.pem.org");
149
158
  // xx execute(openssl_path + " rsa -in private/cakey.pem.org -out private/cakey.pem -passin pass:"+paraphrase);
150
159
  (callback) => (0, toolbox_1.displayTitle)("Generate CA Certificate (self-signed)", callback),
151
- (callback) => (0, toolbox_1.execute_openssl)(" x509 -sha256 -req -days 3650 " +
160
+ (callback) => (0, with_openssl_1.execute_openssl)(" x509 -sha256 -req -days 3650 " +
152
161
  " -text " +
153
162
  " -extensions v3_ca" +
154
163
  " -extfile " +
155
164
  q(n(configFile)) +
156
165
  " -in private/cakey.csr " +
157
- " -signkey private/cakey.pem " +
166
+ " -signkey " +
167
+ q(n(privateKeyFilename)) +
158
168
  " -out public/cacert.pem", options, callback),
159
169
  (callback) => (0, toolbox_1.displaySubtitle)("generate initial CRL (Certificate Revocation List)", callback),
160
170
  (callback) => regenerateCrl(certificateAuthority.revocationList, configOption, options, callback),
@@ -167,10 +177,10 @@ function regenerateCrl(revocationList, configOption, options, callback) {
167
177
  (callback) => (0, toolbox_1.displaySubtitle)("regenerate CRL (Certificate Revocation List)", callback),
168
178
  (callback) =>
169
179
  // produce a CRL in PEM format
170
- (0, toolbox_1.execute_openssl)("ca -gencrl " + configOption + " -out crl/revocation_list.crl", options, callback),
171
- (callback) => (0, toolbox_1.execute_openssl)("crl " + " -in crl/revocation_list.crl -out crl/revocation_list.der " + " -outform der", options, callback),
180
+ (0, with_openssl_1.execute_openssl)("ca -gencrl " + configOption + " -out crl/revocation_list.crl", options, callback),
181
+ (callback) => (0, with_openssl_1.execute_openssl)("crl " + " -in crl/revocation_list.crl -out crl/revocation_list.der " + " -outform der", options, callback),
172
182
  (callback) => (0, toolbox_1.displaySubtitle)("Display (Certificate Revocation List)", callback),
173
- (callback) => (0, toolbox_1.execute_openssl)("crl " + " -in " + q(n(revocationList)) + " -text " + " -noout", options, callback),
183
+ (callback) => (0, with_openssl_1.execute_openssl)("crl " + " -in " + q(n(revocationList)) + " -text " + " -noout", options, callback),
174
184
  ];
175
185
  async.series(tasks, callback);
176
186
  }
@@ -180,7 +190,7 @@ class CertificateAuthority {
180
190
  assert(Object.prototype.hasOwnProperty.call(options, "keySize"));
181
191
  this.location = options.location;
182
192
  this.keySize = options.keySize || 2048;
183
- this.subject = new subject_1.Subject(options.subject || exports.defaultSubject);
193
+ this.subject = new node_opcua_crypto_1.Subject(options.subject || exports.defaultSubject);
184
194
  }
185
195
  get rootDir() {
186
196
  return this.location;
@@ -249,20 +259,20 @@ class CertificateAuthority {
249
259
  }
250
260
  (0, toolbox_1.adjustDate)(params);
251
261
  (0, toolbox_1.adjustApplicationUri)(params);
252
- (0, toolbox_1.processAltNames)(params);
262
+ (0, with_openssl_1.processAltNames)(params);
253
263
  const csrFile = certificateFile + "_csr";
254
264
  assert(csrFile);
255
- const configFile = (0, toolbox_1.generateStaticConfig)(this.configFile);
265
+ const configFile = (0, with_openssl_1.generateStaticConfig)(this.configFile);
256
266
  const options = {
257
267
  cwd: this.rootDir,
258
268
  openssl_conf: (0, toolbox_1.make_path)(configFile),
259
269
  };
260
270
  const configOption = "";
261
- const subject = params.subject ? new subject_1.Subject(params.subject).toString() : "";
271
+ const subject = params.subject ? new node_opcua_crypto_1.Subject(params.subject).toString() : "";
262
272
  const subjectOptions = subject && subject.length > 1 ? " -subj " + subject + " " : "";
263
273
  const tasks = [];
264
274
  tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- the certificate signing request", callback));
265
- tasks.push((callback) => (0, toolbox_1.execute_openssl)("req " +
275
+ tasks.push((callback) => (0, with_openssl_1.execute_openssl)("req " +
266
276
  " -new -sha256 -text " +
267
277
  configOption +
268
278
  subjectOptions +
@@ -271,22 +281,22 @@ class CertificateAuthority {
271
281
  " -out " +
272
282
  q(n(csrFile)), options, callback));
273
283
  tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- creating the self-signed certificate", callback));
274
- tasks.push((callback) => (0, toolbox_1.execute_openssl)("ca " +
284
+ tasks.push((callback) => (0, with_openssl_1.execute_openssl)("ca " +
275
285
  " -selfsign " +
276
286
  " -keyfile " +
277
287
  q(n(privateKey)) +
278
288
  " -startdate " +
279
- (0, toolbox_1.x509Date)(params.startDate) +
289
+ (0, with_openssl_1.x509Date)(params.startDate) +
280
290
  " -enddate " +
281
- (0, toolbox_1.x509Date)(params.endDate) +
291
+ (0, with_openssl_1.x509Date)(params.endDate) +
282
292
  " -batch -out " +
283
293
  q(n(certificateFile)) +
284
294
  " -in " +
285
295
  q(n(csrFile)), options, callback));
286
296
  tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- dump the certificate for a check", callback));
287
- tasks.push((callback) => (0, toolbox_1.execute_openssl)("x509 -in " + q(n(certificateFile)) + " -dates -fingerprint -purpose -noout", {}, callback));
297
+ tasks.push((callback) => (0, with_openssl_1.execute_openssl)("x509 -in " + q(n(certificateFile)) + " -dates -fingerprint -purpose -noout", {}, callback));
288
298
  tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- verify self-signed certificate", callback));
289
- tasks.push((callback) => (0, toolbox_1.execute_openssl_no_failure)("verify -verbose -CAfile " + q(n(certificateFile)) + " " + q(n(certificateFile)), options, callback));
299
+ tasks.push((callback) => (0, with_openssl_1.execute_openssl_no_failure)("verify -verbose -CAfile " + q(n(certificateFile)) + " " + q(n(certificateFile)), options, callback));
290
300
  tasks.push((callback) => fs.unlink(csrFile, callback));
291
301
  async.series(tasks, (err) => {
292
302
  callback(err);
@@ -304,14 +314,14 @@ class CertificateAuthority {
304
314
  "certificateHold",
305
315
  "removeFromCRL",
306
316
  ];
307
- const configFile = (0, toolbox_1.generateStaticConfig)("conf/caconfig.cnf", { cwd: this.rootDir });
317
+ const configFile = (0, with_openssl_1.generateStaticConfig)("conf/caconfig.cnf", { cwd: this.rootDir });
308
318
  const options = {
309
319
  cwd: this.rootDir,
310
320
  openssl_conf: (0, toolbox_1.make_path)(configFile),
311
321
  };
312
- (0, toolbox_1.setEnv)("ALTNAME", "");
322
+ (0, with_openssl_1.setEnv)("ALTNAME", "");
313
323
  const randomFile = path.join(this.rootDir, "random.rnd");
314
- (0, toolbox_1.setEnv)("RANDFILE", randomFile);
324
+ (0, with_openssl_1.setEnv)("RANDFILE", randomFile);
315
325
  // // tslint:disable-next-line:no-string-literal
316
326
  // if (!fs.existsSync((process.env as any)["OPENSSL_CONF"])) {
317
327
  // throw new Error("Cannot find OPENSSL_CONF");
@@ -321,17 +331,15 @@ class CertificateAuthority {
321
331
  assert(crlReasons.indexOf(reason) >= 0);
322
332
  const tasks = [
323
333
  (callback) => (0, toolbox_1.displayTitle)("Revoking certificate " + certificate, callback),
324
- (callback) => (0, toolbox_1.displaySubtitle)("Make sure random file exists" + randomFile, callback),
325
- (callback) => (0, toolbox_1.createRandomFileIfNotExist)(randomFile, {}, callback),
326
334
  (callback) => (0, toolbox_1.displaySubtitle)("Revoke certificate", callback),
327
335
  (callback) => {
328
- (0, toolbox_1.execute_openssl_no_failure)("ca -verbose " + configOption + " -revoke " + q(certificate) + " -crl_reason " + reason, options, callback);
336
+ (0, with_openssl_1.execute_openssl_no_failure)("ca -verbose " + configOption + " -revoke " + q(certificate) + " -crl_reason " + reason, options, callback);
329
337
  },
330
338
  // regenerate CRL (Certificate Revocation List)
331
339
  (callback) => regenerateCrl(this.revocationList, configOption, options, callback),
332
340
  (callback) => (0, toolbox_1.displaySubtitle)("Verify that certificate is revoked ", callback),
333
341
  (callback) => {
334
- (0, toolbox_1.execute_openssl_no_failure)("verify -verbose" +
342
+ (0, with_openssl_1.execute_openssl_no_failure)("verify -verbose" +
335
343
  // configOption +
336
344
  " -CRLfile " +
337
345
  q(n(this.revocationList)) +
@@ -344,10 +352,10 @@ class CertificateAuthority {
344
352
  },
345
353
  // produce CRL in DER format
346
354
  (callback) => (0, toolbox_1.displaySubtitle)("Produce CRL in DER form ", callback),
347
- (callback) => (0, toolbox_1.execute_openssl)("crl " + " -in " + q(n(this.revocationList)) + " -out " + "crl/revocation_list.der " + " -outform der", options, callback),
355
+ (callback) => (0, with_openssl_1.execute_openssl)("crl " + " -in " + q(n(this.revocationList)) + " -out " + "crl/revocation_list.der " + " -outform der", options, callback),
348
356
  // produce CRL in PEM format with text
349
357
  (callback) => (0, toolbox_1.displaySubtitle)("Produce CRL in PEM form ", callback),
350
- (callback) => (0, toolbox_1.execute_openssl)("crl " +
358
+ (callback) => (0, with_openssl_1.execute_openssl)("crl " +
351
359
  " -in " +
352
360
  q(n(this.revocationList)) +
353
361
  " -out " +
@@ -362,7 +370,7 @@ class CertificateAuthority {
362
370
  if (!callback) {
363
371
  throw new Error("Internal Error");
364
372
  }
365
- (0, toolbox_1.ensure_openssl_installed)(() => {
373
+ (0, with_openssl_1.ensure_openssl_installed)(() => {
366
374
  try {
367
375
  assert(fs.existsSync(certificateSigningRequestFilename));
368
376
  assert(typeof callback === "function");
@@ -371,7 +379,7 @@ class CertificateAuthority {
371
379
  }
372
380
  (0, toolbox_1.adjustDate)(params);
373
381
  (0, toolbox_1.adjustApplicationUri)(params);
374
- (0, toolbox_1.processAltNames)(params);
382
+ (0, with_openssl_1.processAltNames)(params);
375
383
  const options = { cwd: this.rootDir };
376
384
  let configFile;
377
385
  const tasks = [];
@@ -400,26 +408,26 @@ class CertificateAuthority {
400
408
  dns,
401
409
  ip,
402
410
  };
403
- (0, toolbox_1.processAltNames)(params);
404
- configFile = (0, toolbox_1.generateStaticConfig)("conf/caconfig.cnf", options);
411
+ (0, with_openssl_1.processAltNames)(params);
412
+ configFile = (0, with_openssl_1.generateStaticConfig)("conf/caconfig.cnf", options);
405
413
  callback();
406
414
  });
407
415
  tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- then we ask the authority to sign the certificate signing request", callback));
408
416
  tasks.push((callback) => {
409
417
  const configOption = " -config " + configFile;
410
- (0, toolbox_1.execute_openssl)("ca " +
418
+ (0, with_openssl_1.execute_openssl)("ca " +
411
419
  configOption +
412
420
  " -startdate " +
413
- (0, toolbox_1.x509Date)(params.startDate) +
421
+ (0, with_openssl_1.x509Date)(params.startDate) +
414
422
  " -enddate " +
415
- (0, toolbox_1.x509Date)(params.endDate) +
423
+ (0, with_openssl_1.x509Date)(params.endDate) +
416
424
  " -batch -out " +
417
425
  q(n(certificate)) +
418
426
  " -in " +
419
427
  q(n(certificateSigningRequestFilename)), options, callback);
420
428
  });
421
429
  tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- dump the certificate for a check", callback));
422
- tasks.push((callback) => (0, toolbox_1.execute_openssl)("x509 -in " + q(n(certificate)) + " -dates -fingerprint -purpose -noout", options, callback));
430
+ tasks.push((callback) => (0, with_openssl_1.execute_openssl)("x509 -in " + q(n(certificate)) + " -dates -fingerprint -purpose -noout", options, callback));
423
431
  tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- construct CA certificate with CRL", callback));
424
432
  tasks.push((callback) => {
425
433
  this.constructCACertificateWithCRL(callback);
@@ -455,10 +463,10 @@ class CertificateAuthority {
455
463
  // istanbul ignore next
456
464
  if (isImplemented) {
457
465
  const options = { cwd: this.rootDir };
458
- const configFile = (0, toolbox_1.generateStaticConfig)("conf/caconfig.cnf", options);
459
- (0, toolbox_1.setEnv)("OPENSSL_CONF", (0, toolbox_1.make_path)(configFile));
466
+ const configFile = (0, with_openssl_1.generateStaticConfig)("conf/caconfig.cnf", options);
467
+ (0, with_openssl_1.setEnv)("OPENSSL_CONF", (0, toolbox_1.make_path)(configFile));
460
468
  const configOption = " -config " + configFile;
461
- (0, toolbox_1.execute_openssl_no_failure)("verify -verbose " + " -CAfile " + q(n(this.caCertificateWithCrl)) + " " + q(n(certificate)), options, (err) => {
469
+ (0, with_openssl_1.execute_openssl_no_failure)("verify -verbose " + " -CAfile " + q(n(this.caCertificateWithCrl)) + " " + q(n(certificate)), options, (err) => {
462
470
  callback(err ? err : undefined);
463
471
  });
464
472
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate_authority.js","sourceRoot":"","sources":["../../../lib/ca/certificate_authority.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { ErrorCallback } from "./pki/common";
1
+ import { ErrorCallback } from "../toolbox";
2
2
  export declare function main(argumentsList: string, _done?: ErrorCallback): void;
@@ -4,7 +4,7 @@
4
4
  // node-opcua
5
5
  // ---------------------------------------------------------------------------------------------------------------------
6
6
  // Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org
7
- // Copyright (c) 2022 - Sterfive.com
7
+ // Copyright (c) 2022-2023 - Sterfive.com
8
8
  // ---------------------------------------------------------------------------------------------------------------------
9
9
  //
10
10
  // This project is licensed under the terms of the MIT license.
@@ -45,19 +45,22 @@ const fs = require("fs");
45
45
  const path = require("path");
46
46
  const os = require("os");
47
47
  const util_1 = require("util");
48
- const applicationurn_1 = require("./misc/applicationurn");
49
- const hostname_1 = require("./misc/hostname");
50
- const subject_1 = require("./misc/subject");
51
- const certificate_authority_1 = require("./pki/certificate_authority");
52
- const certificate_manager_1 = require("./pki/certificate_manager");
53
- const toolbox_1 = require("./pki/toolbox");
48
+ const node_opcua_crypto_1 = require("node-opcua-crypto");
54
49
  // see https://github.com/yargs/yargs/issues/781
55
50
  const commands = require("yargs");
51
+ const applicationurn_1 = require("../misc/applicationurn");
52
+ const hostname_1 = require("../misc/hostname");
53
+ const certificate_authority_1 = require("./certificate_authority");
54
+ const certificate_manager_1 = require("../pki/certificate_manager");
55
+ const toolbox_1 = require("../toolbox");
56
+ const with_openssl_1 = require("../toolbox/with_openssl");
57
+ const without_openssl_1 = require("../toolbox/without_openssl");
58
+ const with_openssl_2 = require("../toolbox/with_openssl");
56
59
  // eslint-disable-next-line @typescript-eslint/no-var-requires
57
60
  const { hideBin } = require("yargs/helpers");
58
61
  // eslint-disable-next-line @typescript-eslint/no-var-requires
59
62
  const argv = require("yargs/yargs")(hideBin(process.argv));
60
- const epilog = "Copyright (c) sterfive - node-opcua - 2017-2022";
63
+ const epilog = "Copyright (c) sterfive - node-opcua - 2017-2023";
61
64
  // ------------------------------------------------- some useful dates
62
65
  function get_offset_date(date, nbDays) {
63
66
  const d = new Date(date.getTime());
@@ -211,13 +214,13 @@ function readConfiguration(argv) {
211
214
  // see http://stackoverflow.com/questions/94445/using-openssl-what-does-unable-to-write-random-state-mean
212
215
  // set random file to be random.rnd in the same folder as the g_config file
213
216
  const defaultRandomFile = path.join(path.dirname(default_config), "random.rnd");
214
- (0, toolbox_1.setEnv)("RANDFILE", defaultRandomFile);
217
+ (0, with_openssl_1.setEnv)("RANDFILE", defaultRandomFile);
215
218
  /* eslint global-require: 0*/
216
219
  gLocalConfig = require(default_config);
217
- gLocalConfig.subject = new subject_1.Subject(gLocalConfig.subject || "");
220
+ gLocalConfig.subject = new node_opcua_crypto_1.Subject(gLocalConfig.subject || "");
218
221
  // if subject is provided on the command line , it has hight priority
219
222
  if (argv.subject) {
220
- gLocalConfig.subject = new subject_1.Subject(argv.subject);
223
+ gLocalConfig.subject = new node_opcua_crypto_1.Subject(argv.subject);
221
224
  }
222
225
  // istanbul ignore next
223
226
  if (!gLocalConfig.subject.commonName) {
@@ -377,9 +380,10 @@ function createDefaultCertificate(base_name, prefix, key_length, applicationUri,
377
380
  configFile,
378
381
  dns,
379
382
  ip,
383
+ purpose: node_opcua_crypto_1.CertificatePurpose.ForApplication
380
384
  };
381
385
  // create CSR
382
- yield (0, util_1.promisify)(toolbox_1.createCertificateSigningRequest)(certificateSigningRequestFile, params);
386
+ yield (0, with_openssl_2.createCertificateSigningRequestAsync)(certificateSigningRequestFile, params);
383
387
  return yield g_certificateAuthority.signCertificateRequest(certificate, certificateSigningRequestFile, {
384
388
  applicationUri,
385
389
  dns,
@@ -412,14 +416,14 @@ function createDefaultCertificate(base_name, prefix, key_length, applicationUri,
412
416
  return;
413
417
  }
414
418
  else {
415
- yield (0, util_1.promisify)(toolbox_1.createPrivateKey)(privateKey, keyLength);
419
+ yield (0, util_1.promisify)(without_openssl_1.createPrivateKey)(privateKey, keyLength);
416
420
  }
417
421
  });
418
422
  }
419
423
  (0, toolbox_1.displaySubtitle)(" create private key :" + private_key_file);
420
424
  yield createPrivateKeyIfNotExist(private_key_file, key_length);
421
425
  (0, toolbox_1.displaySubtitle)(" extract public key " + public_key_file + " from private key ");
422
- yield (0, util_1.promisify)(toolbox_1.getPublicKeyFromPrivateKey)(private_key_file, public_key_file);
426
+ yield (0, util_1.promisify)(with_openssl_1.getPublicKeyFromPrivateKey)(private_key_file, public_key_file);
423
427
  (0, toolbox_1.displaySubtitle)(" create Certificate " + certificate_file);
424
428
  yield createCertificateIfNotExist(certificate_file, private_key_file, applicationUri, yesterday, 365);
425
429
  (0, toolbox_1.displaySubtitle)(" create self signed Certificate " + self_signed_certificate_file);
@@ -525,7 +529,7 @@ argv
525
529
  return local_argv;
526
530
  }, (local_argv) => {
527
531
  wrap(() => __awaiter(void 0, void 0, void 0, function* () {
528
- yield (0, util_1.promisify)(toolbox_1.ensure_openssl_installed)();
532
+ yield (0, util_1.promisify)(with_openssl_1.ensure_openssl_installed)();
529
533
  (0, toolbox_1.displayChapter)("Create Demo certificates");
530
534
  (0, toolbox_1.displayTitle)("reading configuration");
531
535
  yield readConfiguration(local_argv);
@@ -560,7 +564,7 @@ argv
560
564
  },
561
565
  /*handler*/ (local_argv) => {
562
566
  wrap(() => __awaiter(void 0, void 0, void 0, function* () {
563
- yield (0, util_1.promisify)(toolbox_1.ensure_openssl_installed)();
567
+ yield (0, util_1.promisify)(with_openssl_1.ensure_openssl_installed)();
564
568
  yield readConfiguration(local_argv);
565
569
  yield construct_CertificateAuthority(local_argv.subject);
566
570
  }));
@@ -649,7 +653,7 @@ argv
649
653
  yield construct_CertificateManager();
650
654
  (0, toolbox_1.displaySubtitle)(" create self signed Certificate " + gLocalConfig.outputFile);
651
655
  let subject = local_argv.subject && local_argv.subject.length > 1
652
- ? new subject_1.Subject(local_argv.subject)
656
+ ? new node_opcua_crypto_1.Subject(local_argv.subject)
653
657
  : gLocalConfig.subject || "";
654
658
  subject = JSON.parse(JSON.stringify(subject));
655
659
  const params = {
@@ -792,7 +796,7 @@ argv
792
796
  default: "my_certificate_signing_request.csr",
793
797
  type: "string",
794
798
  demandOption: true,
795
- description: "the csr"
799
+ description: "the csr",
796
800
  },
797
801
  output: {
798
802
  default: "my_certificate.pem",
@@ -837,7 +841,7 @@ argv
837
841
  /** */
838
842
  }, (yargs) => {
839
843
  wrap(() => __awaiter(void 0, void 0, void 0, function* () {
840
- const data = yield (0, util_1.promisify)(toolbox_1.dumpCertificate)(yargs.certificateFile);
844
+ const data = yield (0, util_1.promisify)(with_openssl_1.dumpCertificate)(yargs.certificateFile);
841
845
  console.log(data);
842
846
  }));
843
847
  })
@@ -845,7 +849,7 @@ argv
845
849
  /** */
846
850
  }, (yargs) => {
847
851
  wrap(() => __awaiter(void 0, void 0, void 0, function* () {
848
- yield (0, util_1.promisify)(toolbox_1.toDer)(argv.pemCertificate);
852
+ yield (0, util_1.promisify)(with_openssl_1.toDer)(argv.pemCertificate);
849
853
  }));
850
854
  })
851
855
  .command("fingerprint <certificateFile>", "print the certificate fingerprint", () => {
@@ -853,7 +857,7 @@ argv
853
857
  }, (local_argv) => {
854
858
  wrap(() => __awaiter(void 0, void 0, void 0, function* () {
855
859
  const certificate = local_argv.certificateFile;
856
- const data = yield (0, util_1.promisify)(toolbox_1.fingerprint)(certificate);
860
+ const data = yield (0, util_1.promisify)(with_openssl_1.fingerprint)(certificate);
857
861
  if (!data)
858
862
  return;
859
863
  const s = data.split("=")[1].split(":").join("").trim();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto_create_CA.js","sourceRoot":"","sources":["../../../lib/ca/crypto_create_CA.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./certificate_authority";