node-opcua-common 2.128.0 → 2.130.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.
@@ -13,6 +13,8 @@ export interface ICertificateKeyPairProviderPriv extends ICertificateKeyPairProv
13
13
  $$certificateChain: null | Certificate;
14
14
  $$privateKey: null | PrivateKey;
15
15
  }
16
+ export declare function getPartialCertificateChain1(certificateChain?: Buffer | null, maxSize?: number): Buffer | undefined;
17
+ export declare function getPartialCertificateChain(certificateChain?: Buffer | null, maxSize?: number): Buffer | undefined;
16
18
  export interface IOPCUASecureObjectOptions {
17
19
  certificateFile?: string;
18
20
  privateKeyFile?: string;
@@ -4,6 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.OPCUASecureObject = void 0;
7
+ exports.getPartialCertificateChain1 = getPartialCertificateChain1;
8
+ exports.getPartialCertificateChain = getPartialCertificateChain;
7
9
  /**
8
10
  * @module node-opcua-common
9
11
  */
@@ -18,6 +20,30 @@ function _load_certificate(certificateFilename) {
18
20
  function _load_private_key(privateKeyFilename) {
19
21
  return (0, node_opcua_crypto_1.readPrivateKey)(privateKeyFilename);
20
22
  }
23
+ function getPartialCertificateChain1(certificateChain, maxSize) {
24
+ return certificateChain || undefined;
25
+ }
26
+ function getPartialCertificateChain(certificateChain, maxSize) {
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
+ }
21
47
  /**
22
48
  * an object that provides a certificate and a privateKey
23
49
  * @class OPCUASecureObject
@@ -48,6 +74,7 @@ class OPCUASecureObject extends events_1.EventEmitter {
48
74
  (0, node_opcua_assert_1.assert)(fs_1.default.existsSync(this.certificateFile), "Certificate file must exist :" + this.certificateFile);
49
75
  priv.$$certificateChain = _load_certificate(this.certificateFile);
50
76
  if (priv.$$certificateChain && priv.$$certificateChain.length === 0) {
77
+ // do it again for debug purposes
51
78
  priv.$$certificateChain = _load_certificate(this.certificateFile);
52
79
  throw new Error("Invalid certificate length = 0 " + this.certificateFile);
53
80
  }
@@ -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.128.0",
3
+ "version": "2.130.0",
4
4
  "description": "pure nodejs OPCUA SDK - module common",
5
5
  "scripts": {
6
6
  "test": "mocha",
@@ -12,8 +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.128.0"
15
+ "node-opcua-crypto": "4.9.2",
16
+ "node-opcua-types": "2.129.0"
17
17
  },
18
18
  "author": "Etienne Rossignon",
19
19
  "license": "MIT",
@@ -30,7 +30,7 @@
30
30
  "internet of things"
31
31
  ],
32
32
  "homepage": "http://node-opcua.github.io/",
33
- "gitHead": "67a73af6b831d8651a0e66ceb295f159cab4386b",
33
+ "gitHead": "94bf9012b03dbd4325cd122ce04edfa5466875bc",
34
34
  "files": [
35
35
  "dist",
36
36
  "source"
@@ -26,6 +26,34 @@ 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
+ if (!certificateChain || certificateChain.length === 0) {
36
+ return undefined;
37
+ }
38
+ if (maxSize === undefined) {
39
+ return certificateChain;
40
+ }
41
+ const certificates = split_der(certificateChain);
42
+ // at least include first certificate
43
+ let buffer = certificates.length == 1 ? certificateChain : Buffer.from(certificates[0]);
44
+ // Throw if first certificate already exceed maxSize
45
+ if (buffer.length> maxSize) {
46
+ throw new Error(`getPartialCertificateChain not enough space for leaf certificate ${maxSize} < ${buffer.length}`);
47
+ }
48
+ let index = 1;
49
+ while (index < certificates.length && buffer.length + certificates[index].length < maxSize) {
50
+ buffer = Buffer.concat([buffer, certificates[index]]);
51
+ index++;
52
+ }
53
+ return buffer;
54
+
55
+ }
56
+
29
57
  export interface IOPCUASecureObjectOptions {
30
58
  certificateFile?: string;
31
59
  privateKeyFile?: string;
@@ -67,6 +95,7 @@ export class OPCUASecureObject extends EventEmitter implements ICertificateKeyPa
67
95
  assert(fs.existsSync(this.certificateFile), "Certificate file must exist :" + this.certificateFile);
68
96
  priv.$$certificateChain = _load_certificate(this.certificateFile);
69
97
  if (priv.$$certificateChain && priv.$$certificateChain.length === 0) {
98
+ // do it again for debug purposes
70
99
  priv.$$certificateChain = _load_certificate(this.certificateFile);
71
100
  throw new Error("Invalid certificate length = 0 " + this.certificateFile);
72
101
  }