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