node-opcua-server-configuration 2.163.0 → 2.164.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/clientTools/certificate_types.d.ts +17 -0
  2. package/dist/clientTools/certificate_types.js +20 -0
  3. package/dist/clientTools/certificate_types.js.map +1 -0
  4. package/dist/clientTools/get_certificate_key_type.d.ts +6 -0
  5. package/dist/clientTools/get_certificate_key_type.js +55 -0
  6. package/dist/clientTools/get_certificate_key_type.js.map +1 -0
  7. package/dist/clientTools/index.d.ts +2 -1
  8. package/dist/clientTools/index.js +2 -17
  9. package/dist/clientTools/index.js.map +1 -1
  10. package/dist/clientTools/push_certificate_management_client.d.ts +10 -10
  11. package/dist/clientTools/push_certificate_management_client.js +85 -89
  12. package/dist/clientTools/push_certificate_management_client.js.map +1 -1
  13. package/dist/index.d.ts +9 -7
  14. package/dist/index.js +9 -23
  15. package/dist/index.js.map +1 -1
  16. package/dist/push_certificate_manager.d.ts +4 -4
  17. package/dist/push_certificate_manager.js +1 -2
  18. package/dist/server/certificate_validation.d.ts +15 -0
  19. package/dist/server/certificate_validation.js +76 -0
  20. package/dist/server/certificate_validation.js.map +1 -0
  21. package/dist/server/file_transaction_manager.d.ts +30 -0
  22. package/dist/server/file_transaction_manager.js +223 -0
  23. package/dist/server/file_transaction_manager.js.map +1 -0
  24. package/dist/server/install_certificate_file_watcher.d.ts +1 -1
  25. package/dist/server/install_certificate_file_watcher.js +8 -14
  26. package/dist/server/install_certificate_file_watcher.js.map +1 -1
  27. package/dist/server/install_push_certitifate_management.d.ts +6 -6
  28. package/dist/server/install_push_certitifate_management.js +61 -65
  29. package/dist/server/install_push_certitifate_management.js.map +1 -1
  30. package/dist/server/promote_trust_list.d.ts +1 -1
  31. package/dist/server/promote_trust_list.js +323 -82
  32. package/dist/server/promote_trust_list.js.map +1 -1
  33. package/dist/server/push_certificate_manager/apply_changes.d.ts +3 -0
  34. package/dist/server/push_certificate_manager/apply_changes.js +59 -0
  35. package/dist/server/push_certificate_manager/apply_changes.js.map +1 -0
  36. package/dist/server/push_certificate_manager/create_signing_request.d.ts +5 -0
  37. package/dist/server/push_certificate_manager/create_signing_request.js +108 -0
  38. package/dist/server/push_certificate_manager/create_signing_request.js.map +1 -0
  39. package/dist/server/push_certificate_manager/get_rejected_list.d.ts +3 -0
  40. package/dist/server/push_certificate_manager/get_rejected_list.js +46 -0
  41. package/dist/server/push_certificate_manager/get_rejected_list.js.map +1 -0
  42. package/dist/server/push_certificate_manager/internal_context.d.ts +35 -0
  43. package/dist/server/push_certificate_manager/internal_context.js +45 -0
  44. package/dist/server/push_certificate_manager/internal_context.js.map +1 -0
  45. package/dist/server/push_certificate_manager/subject_to_string.d.ts +3 -0
  46. package/dist/server/push_certificate_manager/subject_to_string.js +27 -0
  47. package/dist/server/push_certificate_manager/subject_to_string.js.map +1 -0
  48. package/dist/server/push_certificate_manager/update_certificate.d.ts +5 -0
  49. package/dist/server/push_certificate_manager/update_certificate.js +132 -0
  50. package/dist/server/push_certificate_manager/update_certificate.js.map +1 -0
  51. package/dist/server/push_certificate_manager/util.d.ts +29 -0
  52. package/dist/server/push_certificate_manager/util.js +117 -0
  53. package/dist/server/push_certificate_manager/util.js.map +1 -0
  54. package/dist/server/push_certificate_manager_helpers.d.ts +5 -2
  55. package/dist/server/push_certificate_manager_helpers.js +109 -112
  56. package/dist/server/push_certificate_manager_helpers.js.map +1 -1
  57. package/dist/server/push_certificate_manager_server_impl.d.ts +16 -29
  58. package/dist/server/push_certificate_manager_server_impl.js +49 -437
  59. package/dist/server/push_certificate_manager_server_impl.js.map +1 -1
  60. package/dist/server/roles_and_permissions.d.ts +1 -1
  61. package/dist/server/roles_and_permissions.js +24 -27
  62. package/dist/server/roles_and_permissions.js.map +1 -1
  63. package/dist/server/tools.d.ts +1 -1
  64. package/dist/server/tools.js +7 -13
  65. package/dist/server/tools.js.map +1 -1
  66. package/dist/server/trust_list_server.d.ts +2 -2
  67. package/dist/server/trust_list_server.js +40 -29
  68. package/dist/server/trust_list_server.js.map +1 -1
  69. package/dist/standard_certificate_types.js +6 -9
  70. package/dist/standard_certificate_types.js.map +1 -1
  71. package/dist/trust_list.d.ts +2 -2
  72. package/dist/trust_list.js +1 -2
  73. package/dist/trust_list_impl.js +1 -2
  74. package/dist/trust_list_impl.js.map +1 -1
  75. package/package.json +29 -30
  76. package/source/clientTools/certificate_types.ts +21 -0
  77. package/source/clientTools/get_certificate_key_type.ts +73 -0
  78. package/source/clientTools/index.ts +2 -1
  79. package/source/clientTools/push_certificate_management_client.ts +49 -44
  80. package/source/index.ts +9 -7
  81. package/source/push_certificate_manager.ts +15 -17
  82. package/source/server/certificate_validation.ts +103 -0
  83. package/source/server/file_transaction_manager.ts +253 -0
  84. package/source/server/install_certificate_file_watcher.ts +15 -11
  85. package/source/server/install_push_certitifate_management.ts +52 -51
  86. package/source/server/promote_trust_list.ts +362 -73
  87. package/source/server/push_certificate_manager/apply_changes.ts +63 -0
  88. package/source/server/push_certificate_manager/create_signing_request.ts +137 -0
  89. package/source/server/push_certificate_manager/get_rejected_list.ts +63 -0
  90. package/source/server/push_certificate_manager/internal_context.ts +63 -0
  91. package/source/server/push_certificate_manager/subject_to_string.ts +25 -0
  92. package/source/server/push_certificate_manager/update_certificate.ts +201 -0
  93. package/source/server/push_certificate_manager/util.ts +145 -0
  94. package/source/server/push_certificate_manager_helpers.ts +61 -51
  95. package/source/server/push_certificate_manager_server_impl.ts +94 -553
  96. package/source/server/roles_and_permissions.ts +7 -8
  97. package/source/server/tools.ts +2 -5
  98. package/source/server/trust_list_server.ts +24 -9
  99. package/source/standard_certificate_types.ts +2 -3
  100. package/source/trust_list.ts +26 -33
@@ -1 +1 @@
1
- {"version":3,"file":"roles_and_permissions.js","sourceRoot":"","sources":["../../source/server/roles_and_permissions.ts"],"names":[],"mappings":";;;AAAA,uEAAqG;AACrG,iEAA2E;AAE9D,QAAA,wBAAwB,GAAgC;IAEjE;QACI,MAAM,EAAE,yCAAc,CAAC,SAAS;QAChC,WAAW,EAAE,yCAAc,CAAC,MAAM;KACrC;IACD;QACI,MAAM,EAAE,yCAAc,CAAC,iBAAiB;QACxC,WAAW,EAAE,yCAAc,CAAC,MAAM;KACrC;IACD;QACI,MAAM,EAAE,yCAAc,CAAC,cAAc;QACrC,WAAW,EAAE,IAAA,0CAAkB,EAAC,mEAAmE,CAAC;KACvG;IACD;QACI,MAAM,EAAE,yCAAc,CAAC,aAAa;QACpC,WAAW,EAAE,sCAAc;KAC9B;CACJ,CAAC;AACW,QAAA,uBAAuB,GAAgC;IAChE;QACI,MAAM,EAAE,yCAAc,CAAC,aAAa;QACpC,WAAW,EAAE,sCAAc;KAC9B;IACJ;;;;;;;;MAQE;CACF,CAAC"}
1
+ {"version":3,"file":"roles_and_permissions.js","sourceRoot":"","sources":["../../source/server/roles_and_permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkC,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,CAAC,MAAM,wBAAwB,GAAgC;IACjE;QACI,MAAM,EAAE,cAAc,CAAC,SAAS;QAChC,WAAW,EAAE,cAAc,CAAC,MAAM;KACrC;IACD;QACI,MAAM,EAAE,cAAc,CAAC,iBAAiB;QACxC,WAAW,EAAE,cAAc,CAAC,MAAM;KACrC;IACD;QACI,MAAM,EAAE,cAAc,CAAC,cAAc;QACrC,WAAW,EAAE,kBAAkB,CAAC,mEAAmE,CAAC;KACvG;IACD;QACI,MAAM,EAAE,cAAc,CAAC,aAAa;QACpC,WAAW,EAAE,cAAc;KAC9B;CACJ,CAAC;AACF,MAAM,CAAC,MAAM,uBAAuB,GAAgC;IAChE;QACI,MAAM,EAAE,cAAc,CAAC,aAAa;QACpC,WAAW,EAAE,cAAc;KAC9B;IACD;;;;;;;;GAQD;CACF,CAAC"}
@@ -1,3 +1,3 @@
1
- import { ISessionContext } from "node-opcua-address-space";
1
+ import { type ISessionContext } from "node-opcua-address-space";
2
2
  export declare function hasExpectedUserAccess(context: ISessionContext): boolean;
3
3
  export declare function hasEncryptedChannel(context: ISessionContext): boolean;
@@ -1,18 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasExpectedUserAccess = hasExpectedUserAccess;
4
- exports.hasEncryptedChannel = hasEncryptedChannel;
5
- const node_opcua_address_space_1 = require("node-opcua-address-space");
6
- const node_opcua_secure_channel_1 = require("node-opcua-secure-channel");
7
- function hasExpectedUserAccess(context) {
8
- if (!context ||
9
- !context.session ||
10
- !context.session.userIdentityToken) {
1
+ import { WellKnownRoles } from "node-opcua-address-space";
2
+ import { MessageSecurityMode } from "node-opcua-secure-channel";
3
+ export function hasExpectedUserAccess(context) {
4
+ if (!context || !context.session || !context.session.userIdentityToken) {
11
5
  return false;
12
6
  }
13
- return context.currentUserHasRole(node_opcua_address_space_1.WellKnownRoles.SecurityAdmin);
7
+ return context.currentUserHasRole(WellKnownRoles.SecurityAdmin);
14
8
  }
15
- function hasEncryptedChannel(context) {
16
- return !!(context.session?.channel?.securityMode === node_opcua_secure_channel_1.MessageSecurityMode.SignAndEncrypt);
9
+ export function hasEncryptedChannel(context) {
10
+ return !!(context.session?.channel?.securityMode === MessageSecurityMode.SignAndEncrypt);
17
11
  }
18
12
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../source/server/tools.ts"],"names":[],"mappings":";;AAGA,sDAOC;AAED,kDAEC;AAdD,uEAA2E;AAC3E,yEAAgE;AAEhE,SAAgB,qBAAqB,CAAC,OAAwB;IAC1D,IAAI,CAAC,OAAO;QACR,CAAC,OAAO,CAAC,OAAO;QAChB,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC,kBAAkB,CAAC,yCAAc,CAAC,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,mBAAmB,CAAC,OAAwB;IACxD,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,KAAK,+CAAmB,CAAC,cAAc,CAAC,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../source/server/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,UAAU,qBAAqB,CAAC,OAAwB;IAC1D,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IACxD,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,KAAK,mBAAmB,CAAC,cAAc,CAAC,CAAC;AAC7F,CAAC"}
@@ -1,6 +1,6 @@
1
- import { OPCUACertificateManager } from "node-opcua-certificate-manager";
1
+ import type { OPCUACertificateManager } from "node-opcua-certificate-manager";
2
+ import type { AbstractFs } from "node-opcua-file-transfer";
2
3
  import { TrustListDataType } from "node-opcua-types";
3
- import { AbstractFs } from "node-opcua-file-transfer";
4
4
  export declare enum TrustListMasks {
5
5
  None = 0,
6
6
  TrustedCertificates = 1,
@@ -1,30 +1,23 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TrustListMasks = void 0;
7
- exports.buildTrustList = buildTrustList;
8
- exports.writeTrustList = writeTrustList;
9
- const fs_1 = __importDefault(require("fs"));
10
- const path_1 = __importDefault(require("path"));
11
- const node_opcua_types_1 = require("node-opcua-types");
12
- const node_opcua_binary_stream_1 = require("node-opcua-binary-stream");
13
- const node_opcua_crypto_1 = require("node-opcua-crypto");
14
- const node_opcua_debug_1 = require("node-opcua-debug");
15
- const errorLog = (0, node_opcua_debug_1.make_errorLog)("TrustListServer");
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { BinaryStream } from "node-opcua-binary-stream";
4
+ import { readCertificate, readCertificateRevocationList } from "node-opcua-crypto";
5
+ import { make_errorLog } from "node-opcua-debug";
6
+ import { TrustListDataType } from "node-opcua-types";
7
+ const errorLog = make_errorLog("TrustListServer");
16
8
  async function readAll(folder) {
17
9
  const results = [];
18
- const files = await fs_1.default.promises.readdir(folder);
10
+ const files = await fs.promises.readdir(folder);
19
11
  for (const f of files) {
20
- const file = path_1.default.join(folder, f);
21
- const ext = path_1.default.extname(file);
12
+ const file = path.join(folder, f);
13
+ const ext = path.extname(file);
22
14
  if (ext === ".der" || ext === ".pem") {
23
- const buf = await (0, node_opcua_crypto_1.readCertificate)(file);
15
+ const buf = await readCertificate(file);
24
16
  results.push(buf);
25
17
  }
26
18
  else if (ext === ".crl") {
27
- const buf = await (0, node_opcua_crypto_1.readCertificateRevocationList)(file);
19
+ // Strict validation: only accept valid CRL files
20
+ const buf = await readCertificateRevocationList(file);
28
21
  results.push(buf);
29
22
  }
30
23
  else {
@@ -33,7 +26,7 @@ async function readAll(folder) {
33
26
  }
34
27
  return results;
35
28
  }
36
- var TrustListMasks;
29
+ export var TrustListMasks;
37
30
  (function (TrustListMasks) {
38
31
  TrustListMasks[TrustListMasks["None"] = 0] = "None";
39
32
  TrustListMasks[TrustListMasks["TrustedCertificates"] = 1] = "TrustedCertificates";
@@ -41,9 +34,9 @@ var TrustListMasks;
41
34
  TrustListMasks[TrustListMasks["IssuerCertificates"] = 4] = "IssuerCertificates";
42
35
  TrustListMasks[TrustListMasks["IssuerCrls"] = 8] = "IssuerCrls";
43
36
  TrustListMasks[TrustListMasks["All"] = 15] = "All";
44
- })(TrustListMasks || (exports.TrustListMasks = TrustListMasks = {}));
45
- async function buildTrustList(certificateManager, trustListFlag) {
46
- const trustList = new node_opcua_types_1.TrustListDataType({
37
+ })(TrustListMasks || (TrustListMasks = {}));
38
+ export async function buildTrustList(certificateManager, trustListFlag) {
39
+ const trustList = new TrustListDataType({
47
40
  specifiedLists: trustListFlag,
48
41
  issuerCertificates: undefined,
49
42
  issuerCrls: undefined,
@@ -54,19 +47,37 @@ async function buildTrustList(certificateManager, trustListFlag) {
54
47
  trustList.trustedCertificates = await readAll(certificateManager.trustedFolder);
55
48
  }
56
49
  if ((trustListFlag & TrustListMasks.TrustedCrls) === TrustListMasks.TrustedCrls) {
57
- trustList.trustedCrls = await readAll(certificateManager.crlFolder);
50
+ const crlFolder = certificateManager.crlFolder;
51
+ if (fs.existsSync(crlFolder)) {
52
+ trustList.trustedCrls = await readAll(crlFolder);
53
+ }
54
+ else {
55
+ trustList.trustedCrls = [];
56
+ }
58
57
  }
59
58
  if ((trustListFlag & TrustListMasks.IssuerCertificates) === TrustListMasks.IssuerCertificates) {
60
- trustList.issuerCertificates = await readAll(certificateManager.issuersCertFolder);
59
+ const issuersCertFolder = certificateManager.issuersCertFolder;
60
+ if (fs.existsSync(issuersCertFolder)) {
61
+ trustList.issuerCertificates = await readAll(issuersCertFolder);
62
+ }
63
+ else {
64
+ trustList.issuerCertificates = [];
65
+ }
61
66
  }
62
67
  if ((trustListFlag & TrustListMasks.IssuerCrls) === TrustListMasks.IssuerCrls) {
63
- trustList.issuerCrls = await readAll(certificateManager.issuersCrlFolder);
68
+ const issuersCrlFolder = certificateManager.issuersCrlFolder;
69
+ if (fs.existsSync(issuersCrlFolder)) {
70
+ trustList.issuerCrls = await readAll(issuersCrlFolder);
71
+ }
72
+ else {
73
+ trustList.issuerCrls = [];
74
+ }
64
75
  }
65
76
  return trustList;
66
77
  }
67
- async function writeTrustList(fs, filename, trustListFlag, certificateManager) {
78
+ export async function writeTrustList(fs, filename, trustListFlag, certificateManager) {
68
79
  const trustList = await buildTrustList(certificateManager, trustListFlag);
69
- const stream = new node_opcua_binary_stream_1.BinaryStream(trustList.binaryStoreSize());
80
+ const stream = new BinaryStream(trustList.binaryStoreSize());
70
81
  trustList.encode(stream);
71
82
  await new Promise((resolve, reject) => {
72
83
  fs.writeFile(filename, stream.buffer, "binary", (err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"trust_list_server.js","sourceRoot":"","sources":["../../source/server/trust_list_server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trust_list_server.js","sourceRoot":"","sources":["../../source/server/trust_list_server.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CertificateType = void 0;
4
1
  /**
5
2
  * @module node-opcua-server-configuration
6
3
  */
7
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
8
- exports.CertificateType = {
9
- Application: (0, node_opcua_nodeid_1.resolveNodeId)("ApplicationCertificateType"),
10
- Https: (0, node_opcua_nodeid_1.resolveNodeId)("HttpsCertificateType"),
11
- RsaMinApplication: (0, node_opcua_nodeid_1.resolveNodeId)("RsaMinApplicationCertificateType"),
12
- RsaSha256Application: (0, node_opcua_nodeid_1.resolveNodeId)("RsaSha256ApplicationCertificateType"),
4
+ import { resolveNodeId } from "node-opcua-nodeid";
5
+ export const CertificateType = {
6
+ Application: resolveNodeId("ApplicationCertificateType"),
7
+ Https: resolveNodeId("HttpsCertificateType"),
8
+ RsaMinApplication: resolveNodeId("RsaMinApplicationCertificateType"),
9
+ RsaSha256Application: resolveNodeId("RsaSha256ApplicationCertificateType")
13
10
  };
14
11
  //# sourceMappingURL=standard_certificate_types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standard_certificate_types.js","sourceRoot":"","sources":["../source/standard_certificate_types.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,yDAAkD;AAErC,QAAA,eAAe,GAAI;IAC5B,WAAW,EAAE,IAAA,iCAAa,EAAC,4BAA4B,CAAC;IACxD,KAAK,EAAE,IAAA,iCAAa,EAAC,sBAAsB,CAAC;IAC5C,iBAAiB,EAAE,IAAA,iCAAa,EAAC,kCAAkC,CAAC;IACpE,oBAAoB,EAAE,IAAA,iCAAa,EAAC,qCAAqC,CAAC;CAC7E,CAAC"}
1
+ {"version":3,"file":"standard_certificate_types.js","sourceRoot":"","sources":["../source/standard_certificate_types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,WAAW,EAAE,aAAa,CAAC,4BAA4B,CAAC;IACxD,KAAK,EAAE,aAAa,CAAC,sBAAsB,CAAC;IAC5C,iBAAiB,EAAE,aAAa,CAAC,kCAAkC,CAAC;IACpE,oBAAoB,EAAE,aAAa,CAAC,qCAAqC,CAAC;CAC7E,CAAC"}
@@ -1,4 +1,4 @@
1
- import { StatusCode } from "node-opcua-status-code";
1
+ import type { StatusCode } from "node-opcua-status-code";
2
2
  /**
3
3
  * @module node-opcua-server-configuration
4
4
  */
@@ -45,7 +45,7 @@ export interface ITrustList {
45
45
  *
46
46
  * This method cannot be called if the file object is open
47
47
  * @param certificate - The DER encoded Certificate to add as a ByteStrng
48
- * @param isTrustedCertificate - If TRUE the Certificate is added to the Trusted Certificates List. If FALSE the Certificate is added to the Issuer Certificates List.
48
+ * @param isTrustedCerticopy ficate - If TRUE the Certificate is added to the Trusted Certificates List. If FALSE the Certificate is added to the Issuer Certificates List.
49
49
  *
50
50
  * **Result Code**
51
51
  * - BadUserAccessDenied: The current user does not have the rights required.
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=trust_list.js.map
@@ -1,10 +1,9 @@
1
- "use strict";
2
1
  // /**
3
2
  // * @module node-opcua-server-configuration
4
3
  // */
5
4
  // import { StatusCode, StatusCodes } from "node-opcua-status-code";
6
5
  // import { ITrustList } from "./trust_list";
7
- Object.defineProperty(exports, "__esModule", { value: true });
6
+ export {};
8
7
  // export class TrustList implements ITrustList {
9
8
  // public async closeAndUpdate(
10
9
  // applyChangesRequired: boolean
@@ -1 +1 @@
1
- {"version":3,"file":"trust_list_impl.js","sourceRoot":"","sources":["../source/trust_list_impl.ts"],"names":[],"mappings":";AAAA,MAAM;AACN,6CAA6C;AAC7C,MAAM;AACN,oEAAoE;AACpE,6CAA6C;;AAE7C,iDAAiD;AAEjD,iCAAiC;AACjC,oCAAoC;AACpC,0BAA0B;AAE1B,oBAAoB;AACpB,MAAM;AAEN,iCAAiC;AACjC,2BAA2B;AAC3B,oCAAoC;AACpC,6BAA6B;AAC7B,4CAA4C;AAC5C,MAAM;AAEN,oCAAoC;AACpC,0BAA0B;AAC1B,oCAAoC;AACpC,6BAA6B;AAC7B,4CAA4C;AAC5C,MAAM;AACN,IAAI"}
1
+ {"version":3,"file":"trust_list_impl.js","sourceRoot":"","sources":["../source/trust_list_impl.ts"],"names":[],"mappings":"AAAA,MAAM;AACN,6CAA6C;AAC7C,MAAM;AACN,oEAAoE;AACpE,6CAA6C;;AAE7C,iDAAiD;AAEjD,iCAAiC;AACjC,oCAAoC;AACpC,0BAA0B;AAE1B,oBAAoB;AACpB,MAAM;AAEN,iCAAiC;AACjC,2BAA2B;AAC3B,oCAAoC;AACpC,6BAA6B;AAC7B,4CAA4C;AAC5C,MAAM;AAEN,oCAAoC;AACpC,0BAA0B;AAC1B,oCAAoC;AACpC,6BAA6B;AAC7B,4CAA4C;AAC5C,MAAM;AACN,IAAI"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-server-configuration",
3
- "version": "2.163.0",
3
+ "version": "2.164.2",
4
4
  "description": "pure nodejs OPCUA SDK - module server-configuration",
5
5
  "scripts": {
6
6
  "build": "tsc -b",
@@ -10,42 +10,41 @@
10
10
  },
11
11
  "main": "./dist/index.js",
12
12
  "types": "./dist/index.d.ts",
13
+ "type": "module",
13
14
  "dependencies": {
14
15
  "chalk": "4.1.2",
15
- "memfs": "^4.56.10",
16
- "node-opcua-address-space": "2.163.0",
17
- "node-opcua-address-space-base": "2.163.0",
18
- "node-opcua-assert": "2.157.0",
19
- "node-opcua-basic-types": "2.162.0",
20
- "node-opcua-binary-stream": "2.162.0",
21
- "node-opcua-certificate-manager": "2.162.0",
22
- "node-opcua-common": "2.163.0",
16
+ "memfs": "^4.56.11",
17
+ "node-opcua-address-space": "2.164.2",
18
+ "node-opcua-address-space-base": "2.164.0",
19
+ "node-opcua-assert": "2.164.0",
20
+ "node-opcua-basic-types": "2.164.0",
21
+ "node-opcua-binary-stream": "2.164.0",
22
+ "node-opcua-certificate-manager": "2.164.2",
23
+ "node-opcua-common": "2.164.0",
23
24
  "node-opcua-constants": "2.157.0",
24
- "node-opcua-crypto": "4.16.1",
25
- "node-opcua-data-model": "2.163.0",
26
- "node-opcua-debug": "2.157.0",
27
- "node-opcua-file-transfer": "2.163.0",
28
- "node-opcua-hostname": "2.157.0",
29
- "node-opcua-nodeid": "2.157.0",
30
- "node-opcua-pki": "5.7.0",
31
- "node-opcua-pseudo-session": "2.163.0",
32
- "node-opcua-secure-channel": "2.163.0",
33
- "node-opcua-server": "2.163.0",
34
- "node-opcua-service-translate-browse-path": "2.163.0",
35
- "node-opcua-status-code": "2.162.0",
36
- "node-opcua-types": "2.163.0",
37
- "node-opcua-variant": "2.163.0",
38
- "rimraf": "6.1.2"
25
+ "node-opcua-crypto": "5.3.0",
26
+ "node-opcua-data-model": "2.164.0",
27
+ "node-opcua-debug": "2.164.0",
28
+ "node-opcua-file-transfer": "2.164.2",
29
+ "node-opcua-hostname": "2.164.0",
30
+ "node-opcua-nodeid": "2.164.0",
31
+ "node-opcua-pki": "6.8.2",
32
+ "node-opcua-pseudo-session": "2.164.2",
33
+ "node-opcua-secure-channel": "2.164.2",
34
+ "node-opcua-server": "2.164.2",
35
+ "node-opcua-service-translate-browse-path": "2.164.0",
36
+ "node-opcua-status-code": "2.164.0",
37
+ "node-opcua-types": "2.164.0",
38
+ "node-opcua-variant": "2.164.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/mocha": "^10.0.10",
42
42
  "bcryptjs": "3.0.3",
43
43
  "mocha": "11.7.5",
44
- "node-opcua-client": "2.163.0",
45
- "node-opcua-data-value": "2.163.0",
46
- "node-opcua-leak-detector": "2.157.0",
47
- "node-opcua-nodesets": "2.162.0",
48
- "ts-node": "^10.9.2"
44
+ "node-opcua-client": "2.164.2",
45
+ "node-opcua-data-value": "2.164.0",
46
+ "node-opcua-leak-detector": "2.164.0",
47
+ "node-opcua-nodesets": "2.163.1"
49
48
  },
50
49
  "author": "Etienne Rossignon",
51
50
  "license": "MIT",
@@ -62,7 +61,7 @@
62
61
  "internet of things"
63
62
  ],
64
63
  "homepage": "http://node-opcua.github.io/",
65
- "gitHead": "20862daa7ac42893d32d2bcb4dcecc272c320a67",
64
+ "gitHead": "eb76d34b885c7584785d8eff69ada66f95b55c2e",
66
65
  "files": [
67
66
  "dist",
68
67
  "source"
@@ -0,0 +1,21 @@
1
+ import { resolveNodeId } from "node-opcua-nodeid";
2
+
3
+ // OPC UA Part 12 Certificate Types - defined once to avoid duplication
4
+ export const rsaCertificateTypes = {
5
+ ApplicationInstanceCertificate_RSA_Min_Deprecated: resolveNodeId("ns=0;i=12537"),
6
+ ApplicationInstanceCertificate_RSA_Sha256: resolveNodeId("ns=0;i=12538"),
7
+ ApplicationInstanceCertificate_RSA_Sha256_2048: resolveNodeId("ns=0;i=12541"),
8
+ ApplicationInstanceCertificate_RSA_Sha256_4096: resolveNodeId("ns=0;i=12542")
9
+ } as const;
10
+ export const rsaCertificateTypesArray = Object.values(rsaCertificateTypes);
11
+
12
+ export const eccCertificateTypes = {
13
+ ApplicationInstanceCertificate_ECC_Deprecated: resolveNodeId("ns=0;i=12556"), // deprecated
14
+ ApplicationInstanceCertificate_ECC_nistP256: resolveNodeId("ns=0;i=12557"),
15
+ ApplicationInstanceCertificate_ECC_nistP384: resolveNodeId("ns=0;i=12558"),
16
+ ApplicationInstanceCertificate_ECC_brainpoolP256r1: resolveNodeId("ns=0;i=12559"),
17
+ ApplicationInstanceCertificate_ECC_brainpoolP384r1: resolveNodeId("ns=0;i=12560"),
18
+ ApplicationInstanceCertificate_ECC_curve25519: resolveNodeId("ns=0;i=12561"),
19
+ ApplicationInstanceCertificate_ECC_curve448: resolveNodeId("ns=0;i=12562")
20
+ } as const;
21
+ export const eccCertificateTypesArray = Object.values(eccCertificateTypes);
@@ -0,0 +1,73 @@
1
+ import { exploreCertificate } from "node-opcua-crypto";
2
+ import { checkDebugFlag, make_debugLog, make_errorLog, make_warningLog } from "node-opcua-debug";
3
+
4
+ const debugLog = make_debugLog("ServerConfiguration");
5
+ const errorLog = make_errorLog("ServerConfiguration");
6
+ const warningLog = make_warningLog("ServerConfiguration");
7
+ const doDebug = checkDebugFlag("ServerConfiguration");
8
+
9
+ /**
10
+ * Extract the key type from a certificate (RSA or ECC)
11
+ * @param certificate The certificate to analyze
12
+ * @returns "RSA" or "ECC" or null if unknown
13
+ */
14
+ type AlgorithmIdentifierLike = {
15
+ identifier?: string;
16
+ oid?: string;
17
+ };
18
+
19
+ /**
20
+ * Extract the algorithm identifier from an algorithm object or string
21
+ * @param algorithm The algorithm to analyze
22
+ * @returns The algorithm identifier as a string, or undefined if not found
23
+ */
24
+ function getAlgorithmId(algorithm: unknown): string | undefined {
25
+ if (typeof algorithm === "string") {
26
+ return algorithm;
27
+ }
28
+ if (algorithm && typeof algorithm === "object") {
29
+ const obj = algorithm as AlgorithmIdentifierLike;
30
+ return obj.identifier ?? obj.oid;
31
+ }
32
+ return undefined;
33
+ }
34
+
35
+ /**
36
+ * Extract the key type from a certificate (RSA or ECC)
37
+ * @param certificate The certificate to analyze
38
+ * @returns "RSA" or "ECC" or null if unknown
39
+ */
40
+ export function getCertificateKeyType(certificate: Buffer): "RSA" | "ECC" | null {
41
+ try {
42
+ const certInfo = exploreCertificate(certificate);
43
+
44
+ // Use subject public key algorithm to determine key type
45
+ const publicKeyAlg = certInfo.tbsCertificate?.subjectPublicKeyInfo?.algorithm;
46
+ doDebug && debugLog("Certificate subjectPublicKeyInfo.algorithm:", publicKeyAlg);
47
+
48
+ const algorithmStr = getAlgorithmId(publicKeyAlg);
49
+
50
+ if (!algorithmStr) {
51
+ warningLog("Unable to extract public key algorithm from certificate");
52
+ return null;
53
+ }
54
+
55
+ const algorithmLower = algorithmStr.toLowerCase();
56
+
57
+ // RSA public key OID: 1.2.840.113549.1.1.1
58
+ if (algorithmStr.startsWith("1.2.840.113549.1.1.1") || algorithmLower.includes("rsa")) {
59
+ return "RSA";
60
+ }
61
+
62
+ // EC public key OID: 1.2.840.10045.2.1
63
+ if (algorithmStr.startsWith("1.2.840.10045.2.1") || algorithmLower.includes("ec") || algorithmLower.includes("ecc")) {
64
+ return "ECC";
65
+ }
66
+
67
+ warningLog("Unknown certificate public key algorithm:", algorithmStr);
68
+ return null;
69
+ } catch (err) {
70
+ errorLog("Error extracting certificate key type:", (err as Error).message);
71
+ return null;
72
+ }
73
+ }
@@ -1 +1,2 @@
1
- export * from "./push_certificate_management_client"
1
+ export * from "./certificate_types.js";
2
+ export * from "./push_certificate_management_client.js";