node-opcua-common 2.126.0 → 2.129.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.
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  /**
3
4
  * @module node-opcua-common
4
5
  */
@@ -14,6 +15,8 @@ export interface ICertificateKeyPairProviderPriv extends ICertificateKeyPairProv
14
15
  $$certificateChain: null | Certificate;
15
16
  $$privateKey: null | PrivateKey;
16
17
  }
18
+ export declare function getPartialCertificateChain1(certificateChain?: Buffer | null, maxSize?: number): Buffer | undefined;
19
+ export declare function getPartialCertificateChain(certificateChain?: Buffer | null, maxSize?: number): Buffer | undefined;
17
20
  export interface IOPCUASecureObjectOptions {
18
21
  certificateFile?: string;
19
22
  privateKeyFile?: string;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OPCUASecureObject = void 0;
6
+ exports.OPCUASecureObject = exports.getPartialCertificateChain = exports.getPartialCertificateChain1 = void 0;
7
7
  /**
8
8
  * @module node-opcua-common
9
9
  */
@@ -18,6 +18,33 @@ function _load_certificate(certificateFilename) {
18
18
  function _load_private_key(privateKeyFilename) {
19
19
  return (0, node_opcua_crypto_1.readPrivateKey)(privateKeyFilename);
20
20
  }
21
+ function getPartialCertificateChain1(certificateChain, maxSize) {
22
+ return certificateChain || undefined;
23
+ }
24
+ exports.getPartialCertificateChain1 = getPartialCertificateChain1;
25
+ function getPartialCertificateChain(certificateChain, maxSize) {
26
+ maxSize = 1600;
27
+ if (!certificateChain || certificateChain.length === 0) {
28
+ return undefined;
29
+ }
30
+ if (maxSize === undefined) {
31
+ return certificateChain;
32
+ }
33
+ const certificates = (0, node_opcua_crypto_1.split_der)(certificateChain);
34
+ // at least include first certificate
35
+ let buffer = certificates.length == 1 ? certificateChain : Buffer.from(certificates[0]);
36
+ // Throw if first certificate already exceed maxSize
37
+ if (buffer.length > maxSize) {
38
+ throw new Error(`getPartialCertificateChain not enough space for leaf certificate ${maxSize} < ${buffer.length}`);
39
+ }
40
+ let index = 1;
41
+ while (index < certificates.length && buffer.length + certificates[index].length < maxSize) {
42
+ buffer = Buffer.concat([buffer, certificates[index]]);
43
+ index++;
44
+ }
45
+ return buffer;
46
+ }
47
+ exports.getPartialCertificateChain = getPartialCertificateChain;
21
48
  /**
22
49
  * an object that provides a certificate and a privateKey
23
50
  * @class OPCUASecureObject
@@ -48,6 +75,7 @@ class OPCUASecureObject extends events_1.EventEmitter {
48
75
  (0, node_opcua_assert_1.assert)(fs_1.default.existsSync(this.certificateFile), "Certificate file must exist :" + this.certificateFile);
49
76
  priv.$$certificateChain = _load_certificate(this.certificateFile);
50
77
  if (priv.$$certificateChain && priv.$$certificateChain.length === 0) {
78
+ // do it again for debug purposes
51
79
  priv.$$certificateChain = _load_certificate(this.certificateFile);
52
80
  throw new Error("Invalid certificate length = 0 " + this.certificateFile);
53
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opcua_secure_object.js","sourceRoot":"","sources":["../source/opcua_secure_object.ts"],"names":[],"mappings":";;;;;;AAAA;;GAEG;AACH,mCAAsC;AACtC,4CAAoB;AAEpB,yDAA2C;AAC3C,yDAAwG;AAYxG,SAAS,iBAAiB,CAAC,mBAA2B;IAClD,MAAM,GAAG,GAAG,IAAA,mCAAe,EAAC,mBAAmB,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,kBAA0B;IACjD,OAAO,IAAA,kCAAc,EAAC,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAOD;;;;;;;GAOG;AACH,MAAa,iBAAkB,SAAQ,qBAAY;IAI/C,YAAY,OAAkC;QAC1C,KAAK,EAAE,CAAC;QACR,IAAA,0BAAM,EAAC,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC;QACpD,IAAA,0BAAM,EAAC,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC;QAEnD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,0BAA0B,CAAC;QAC7E,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,0BAA0B,CAAC;IAC/E,CAAC;IAEM,cAAc;QACjB,MAAM,IAAI,GAAG,IAAkD,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7C,IAAI,CAAC,aAAa,GAAG,IAAA,6BAAS,EAAC,SAAS,CAAC,CAAC,CAAC,CAAgB,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAEM,mBAAmB;QACtB,MAAM,IAAI,GAAG,IAAkD,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3B,IAAA,0BAAM,EAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,+BAA+B,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;YACpG,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAClE,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClE,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9E,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAEM,aAAa;QAChB,MAAM,IAAI,GAAG,IAAkD,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAA,0BAAM,EAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,CAAC;QACD,IAAA,0BAAM,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,YAAY,MAAM,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACJ;AA5CD,8CA4CC"}
1
+ {"version":3,"file":"opcua_secure_object.js","sourceRoot":"","sources":["../source/opcua_secure_object.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-common",
3
- "version": "2.126.0",
3
+ "version": "2.129.0",
4
4
  "description": "pure nodejs OPCUA SDK - module common",
5
5
  "scripts": {
6
6
  "test": "mocha",
@@ -12,12 +12,8 @@
12
12
  "types": "./dist/index.d.ts",
13
13
  "dependencies": {
14
14
  "node-opcua-assert": "2.120.0",
15
- "node-opcua-crypto": "4.8.0",
16
- "node-opcua-types": "2.126.0"
17
- },
18
- "devDependencies": {
19
- "@types/node": "20.14.5",
20
- "should": "^13.2.3"
15
+ "node-opcua-crypto": "4.9.2",
16
+ "node-opcua-types": "2.129.0"
21
17
  },
22
18
  "author": "Etienne Rossignon",
23
19
  "license": "MIT",
@@ -34,7 +30,7 @@
34
30
  "internet of things"
35
31
  ],
36
32
  "homepage": "http://node-opcua.github.io/",
37
- "gitHead": "81b467f284c41813ab8caf17f6d20322d4734fdc",
33
+ "gitHead": "8a1754350fb95a764e278d37a289f0c48ccb8c9d",
38
34
  "files": [
39
35
  "dist",
40
36
  "source"
@@ -26,6 +26,35 @@ function _load_private_key(privateKeyFilename: string): PrivateKey {
26
26
  return readPrivateKey(privateKeyFilename);
27
27
  }
28
28
 
29
+ export function getPartialCertificateChain1(certificateChain?: Buffer| null, maxSize?: number ): Buffer| undefined {
30
+
31
+ return certificateChain || undefined;
32
+ }
33
+ export function getPartialCertificateChain(certificateChain?: Buffer | null, maxSize?: number): Buffer | undefined {
34
+
35
+ maxSize =1600;
36
+ if (!certificateChain || certificateChain.length === 0) {
37
+ return undefined;
38
+ }
39
+ if (maxSize === undefined) {
40
+ return certificateChain;
41
+ }
42
+ const certificates = split_der(certificateChain);
43
+ // at least include first certificate
44
+ let buffer = certificates.length == 1 ? certificateChain : Buffer.from(certificates[0]);
45
+ // Throw if first certificate already exceed maxSize
46
+ if (buffer.length> maxSize) {
47
+ throw new Error(`getPartialCertificateChain not enough space for leaf certificate ${maxSize} < ${buffer.length}`);
48
+ }
49
+ let index = 1;
50
+ while (index < certificates.length && buffer.length + certificates[index].length < maxSize) {
51
+ buffer = Buffer.concat([buffer, certificates[index]]);
52
+ index++;
53
+ }
54
+ return buffer;
55
+
56
+ }
57
+
29
58
  export interface IOPCUASecureObjectOptions {
30
59
  certificateFile?: string;
31
60
  privateKeyFile?: string;
@@ -67,6 +96,7 @@ export class OPCUASecureObject extends EventEmitter implements ICertificateKeyPa
67
96
  assert(fs.existsSync(this.certificateFile), "Certificate file must exist :" + this.certificateFile);
68
97
  priv.$$certificateChain = _load_certificate(this.certificateFile);
69
98
  if (priv.$$certificateChain && priv.$$certificateChain.length === 0) {
99
+ // do it again for debug purposes
70
100
  priv.$$certificateChain = _load_certificate(this.certificateFile);
71
101
  throw new Error("Invalid certificate length = 0 " + this.certificateFile);
72
102
  }