opcjs-base 0.1.38-alpha → 0.1.40-alpha
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.
- package/dist/index.cjs +29 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -3
- package/dist/index.d.ts +8 -3
- package/dist/index.js +29 -16
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -8281,9 +8281,14 @@ declare class SecureChannelMessageDecoder extends TransformStream<Uint8Array, Ms
|
|
|
8281
8281
|
private context;
|
|
8282
8282
|
private logger;
|
|
8283
8283
|
/**
|
|
8284
|
-
* Validates that `sequenceNumber` is
|
|
8285
|
-
* seen remote sequence. Allows
|
|
8286
|
-
*
|
|
8284
|
+
* Validates that `sequenceNumber` is monotonically increasing from the
|
|
8285
|
+
* highest seen remote sequence. Allows UInt32 wrap-around per token.
|
|
8286
|
+
*
|
|
8287
|
+
* Over TLS/WSS the transport already provides integrity and replay
|
|
8288
|
+
* protection, so small out-of-order deliveries (caused by multi-threaded
|
|
8289
|
+
* server writes) are tolerated with a warning rather than tearing down the
|
|
8290
|
+
* channel. Only truly anomalous conditions (e.g. a very large backward
|
|
8291
|
+
* jump that could indicate corruption) are treated as errors.
|
|
8287
8292
|
*/
|
|
8288
8293
|
private validateSequenceNumber;
|
|
8289
8294
|
private transform;
|
package/dist/index.d.ts
CHANGED
|
@@ -8281,9 +8281,14 @@ declare class SecureChannelMessageDecoder extends TransformStream<Uint8Array, Ms
|
|
|
8281
8281
|
private context;
|
|
8282
8282
|
private logger;
|
|
8283
8283
|
/**
|
|
8284
|
-
* Validates that `sequenceNumber` is
|
|
8285
|
-
* seen remote sequence. Allows
|
|
8286
|
-
*
|
|
8284
|
+
* Validates that `sequenceNumber` is monotonically increasing from the
|
|
8285
|
+
* highest seen remote sequence. Allows UInt32 wrap-around per token.
|
|
8286
|
+
*
|
|
8287
|
+
* Over TLS/WSS the transport already provides integrity and replay
|
|
8288
|
+
* protection, so small out-of-order deliveries (caused by multi-threaded
|
|
8289
|
+
* server writes) are tolerated with a warning rather than tearing down the
|
|
8290
|
+
* channel. Only truly anomalous conditions (e.g. a very large backward
|
|
8291
|
+
* jump that could indicate corruption) are treated as errors.
|
|
8287
8292
|
*/
|
|
8288
8293
|
private validateSequenceNumber;
|
|
8289
8294
|
private transform;
|
package/dist/index.js
CHANGED
|
@@ -17868,26 +17868,39 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17868
17868
|
}
|
|
17869
17869
|
logger = getLogger("secureChannel.SecureChannelMessageDecoder");
|
|
17870
17870
|
/**
|
|
17871
|
-
* Validates that `sequenceNumber` is
|
|
17872
|
-
* seen remote sequence. Allows
|
|
17873
|
-
*
|
|
17871
|
+
* Validates that `sequenceNumber` is monotonically increasing from the
|
|
17872
|
+
* highest seen remote sequence. Allows UInt32 wrap-around per token.
|
|
17873
|
+
*
|
|
17874
|
+
* Over TLS/WSS the transport already provides integrity and replay
|
|
17875
|
+
* protection, so small out-of-order deliveries (caused by multi-threaded
|
|
17876
|
+
* server writes) are tolerated with a warning rather than tearing down the
|
|
17877
|
+
* channel. Only truly anomalous conditions (e.g. a very large backward
|
|
17878
|
+
* jump that could indicate corruption) are treated as errors.
|
|
17874
17879
|
*/
|
|
17875
|
-
validateSequenceNumber(sequenceNumber, msgType
|
|
17880
|
+
validateSequenceNumber(sequenceNumber, msgType) {
|
|
17876
17881
|
const last = this.context.lastRemoteSequenceNumber;
|
|
17877
17882
|
if (last === void 0) {
|
|
17878
17883
|
this.context.lastRemoteSequenceNumber = sequenceNumber;
|
|
17879
17884
|
this.logger.debug(`[${msgType}] Sequence number initialized to ${sequenceNumber}`);
|
|
17880
17885
|
return true;
|
|
17881
17886
|
}
|
|
17882
|
-
const isIncrement = sequenceNumber === last + 1;
|
|
17883
17887
|
const isWrap = last >= SEQ_WRAP_THRESHOLD2 && sequenceNumber < SEQ_WRAP_MAX;
|
|
17884
|
-
if (
|
|
17885
|
-
this.
|
|
17886
|
-
|
|
17887
|
-
return
|
|
17888
|
+
if (isWrap) {
|
|
17889
|
+
this.context.lastRemoteSequenceNumber = sequenceNumber;
|
|
17890
|
+
this.logger.debug(`[${msgType}] Sequence number wrapped: ${last} \u2192 ${sequenceNumber}`);
|
|
17891
|
+
return true;
|
|
17892
|
+
}
|
|
17893
|
+
if (sequenceNumber === last + 1) {
|
|
17894
|
+
this.context.lastRemoteSequenceNumber = sequenceNumber;
|
|
17895
|
+
this.logger.debug(`[${msgType}] Sequence number advanced: ${last} \u2192 ${sequenceNumber}`);
|
|
17896
|
+
return true;
|
|
17897
|
+
}
|
|
17898
|
+
if (sequenceNumber > last + 1) {
|
|
17899
|
+
this.logger.warn(`[${msgType}] Remote sequence number gap: expected ${last + 1}, got ${sequenceNumber} (skipped ${sequenceNumber - last - 1})`);
|
|
17900
|
+
this.context.lastRemoteSequenceNumber = sequenceNumber;
|
|
17901
|
+
return true;
|
|
17888
17902
|
}
|
|
17889
|
-
this.logger.
|
|
17890
|
-
this.context.lastRemoteSequenceNumber = sequenceNumber;
|
|
17903
|
+
this.logger.warn(`[${msgType}] Out-of-order remote sequence number: highest seen ${last}, got ${sequenceNumber}`);
|
|
17891
17904
|
return true;
|
|
17892
17905
|
}
|
|
17893
17906
|
transform(data, controller) {
|
|
@@ -17904,7 +17917,7 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17904
17917
|
secHeader,
|
|
17905
17918
|
this.context.securityAlgorithm
|
|
17906
17919
|
);
|
|
17907
|
-
if (!this.validateSequenceNumber(msgAsym.sequenceHeader.sequenceNumber, "OPN"
|
|
17920
|
+
if (!this.validateSequenceNumber(msgAsym.sequenceHeader.sequenceNumber, "OPN")) return;
|
|
17908
17921
|
controller.enqueue(msgAsym);
|
|
17909
17922
|
break;
|
|
17910
17923
|
}
|
|
@@ -17912,7 +17925,7 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17912
17925
|
this.logger.warn("SecureChannel received Abort message");
|
|
17913
17926
|
const secHeader = MsgSecurityHeaderSymmetric.decode(buffer);
|
|
17914
17927
|
const msgSym = MsgSymmetric.decode(buffer, header, secHeader, this.context.securityAlgorithm);
|
|
17915
|
-
if (!this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, "MSG-A"
|
|
17928
|
+
if (!this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, "MSG-A")) return;
|
|
17916
17929
|
controller.enqueue(msgSym);
|
|
17917
17930
|
break;
|
|
17918
17931
|
}
|
|
@@ -17920,7 +17933,7 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17920
17933
|
this.logger.debug("SecureChannel received Chunk message.");
|
|
17921
17934
|
const secHeader = MsgSecurityHeaderSymmetric.decode(buffer);
|
|
17922
17935
|
const msgSym = MsgSymmetric.decode(buffer, header, secHeader, this.context.securityAlgorithm);
|
|
17923
|
-
if (!this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, "MSG-C"
|
|
17936
|
+
if (!this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, "MSG-C")) return;
|
|
17924
17937
|
controller.enqueue(msgSym);
|
|
17925
17938
|
break;
|
|
17926
17939
|
}
|
|
@@ -17928,7 +17941,7 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17928
17941
|
this.logger.debug("SecureChannel received Final message");
|
|
17929
17942
|
const secHeader = MsgSecurityHeaderSymmetric.decode(buffer);
|
|
17930
17943
|
const msgSym = MsgSymmetric.decode(buffer, header, secHeader, this.context.securityAlgorithm);
|
|
17931
|
-
if (!this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, "MSG-F"
|
|
17944
|
+
if (!this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, "MSG-F")) return;
|
|
17932
17945
|
controller.enqueue(msgSym);
|
|
17933
17946
|
break;
|
|
17934
17947
|
}
|
|
@@ -17936,7 +17949,7 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17936
17949
|
this.logger.warn("SecureChannel received CloseFinal message.");
|
|
17937
17950
|
const secHeader = MsgSecurityHeaderSymmetric.decode(buffer);
|
|
17938
17951
|
const msgSym = MsgSymmetric.decode(buffer, header, secHeader, this.context.securityAlgorithm);
|
|
17939
|
-
this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, "CLO-F"
|
|
17952
|
+
this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, "CLO-F");
|
|
17940
17953
|
break;
|
|
17941
17954
|
}
|
|
17942
17955
|
default:
|