@zwave-js/cc 15.31.1 → 15.32.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.
Files changed (127) hide show
  1. package/build/cjs/cc/AlarmSensorCC.js +2 -3
  2. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  3. package/build/cjs/cc/AssociationGroupInfoCC.js +5 -2
  4. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  5. package/build/cjs/cc/BarrierOperatorCC.js +5 -8
  6. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  7. package/build/cjs/cc/BinarySensorCC.js +1 -2
  8. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  9. package/build/cjs/cc/ColorSwitchCC.js +3 -5
  10. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  11. package/build/cjs/cc/ConfigurationCC.d.ts +7 -0
  12. package/build/cjs/cc/ConfigurationCC.js +28 -8
  13. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  14. package/build/cjs/cc/EntryControlCC.js +3 -2
  15. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  16. package/build/cjs/cc/IndicatorCC.js +3 -3
  17. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  18. package/build/cjs/cc/IrrigationCC.js.map +1 -1
  19. package/build/cjs/cc/LanguageCC.js +6 -2
  20. package/build/cjs/cc/LanguageCC.js.map +2 -2
  21. package/build/cjs/cc/ManufacturerSpecificCC.js +1 -1
  22. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  23. package/build/cjs/cc/MeterCC.js +25 -4
  24. package/build/cjs/cc/MeterCC.js.map +2 -2
  25. package/build/cjs/cc/NodeNamingCC.js +2 -2
  26. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  27. package/build/cjs/cc/NotificationCC.js +10 -11
  28. package/build/cjs/cc/NotificationCC.js.map +2 -2
  29. package/build/cjs/cc/PowerlevelCC.js +1 -1
  30. package/build/cjs/cc/PowerlevelCC.js.map +2 -2
  31. package/build/cjs/cc/Security2CC.js +11 -6
  32. package/build/cjs/cc/Security2CC.js.map +2 -2
  33. package/build/cjs/cc/SecurityCC.js +2 -1
  34. package/build/cjs/cc/SecurityCC.js.map +2 -2
  35. package/build/cjs/cc/SoundSwitchCC.js +1 -1
  36. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  37. package/build/cjs/cc/ThermostatSetpointCC.js +2 -1
  38. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  39. package/build/cjs/cc/UserCredentialCC.d.ts +6 -0
  40. package/build/cjs/cc/UserCredentialCC.js +81 -6
  41. package/build/cjs/cc/UserCredentialCC.js.map +2 -2
  42. package/build/cjs/cc/WindowCoveringCC.js +1 -2
  43. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  44. package/build/cjs/cc/_CCValues.generated.d.ts +2 -2
  45. package/build/cjs/lib/Security2/Extension.js +2 -1
  46. package/build/cjs/lib/Security2/Extension.js.map +2 -2
  47. package/build/cjs/lib/securityLogging.d.ts +6 -0
  48. package/build/cjs/lib/securityLogging.js +34 -0
  49. package/build/cjs/lib/securityLogging.js.map +7 -0
  50. package/build/cjs/lib/serializers.js +3 -0
  51. package/build/cjs/lib/serializers.js.map +2 -2
  52. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  53. package/build/esm/cc/AlarmSensorCC.js +5 -3
  54. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  55. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  56. package/build/esm/cc/AssociationGroupInfoCC.js +10 -6
  57. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  58. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  59. package/build/esm/cc/BarrierOperatorCC.js +6 -9
  60. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  61. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  62. package/build/esm/cc/BinarySensorCC.js +2 -3
  63. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  64. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  65. package/build/esm/cc/ColorSwitchCC.js +4 -7
  66. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  67. package/build/esm/cc/ConfigurationCC.d.ts +7 -0
  68. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  69. package/build/esm/cc/ConfigurationCC.js +34 -13
  70. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  71. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  72. package/build/esm/cc/EntryControlCC.js +4 -3
  73. package/build/esm/cc/EntryControlCC.js.map +1 -1
  74. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  75. package/build/esm/cc/IndicatorCC.js +4 -6
  76. package/build/esm/cc/IndicatorCC.js.map +1 -1
  77. package/build/esm/cc/IrrigationCC.js.map +1 -1
  78. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  79. package/build/esm/cc/LanguageCC.js +8 -3
  80. package/build/esm/cc/LanguageCC.js.map +1 -1
  81. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  82. package/build/esm/cc/ManufacturerSpecificCC.js +2 -2
  83. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  84. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  85. package/build/esm/cc/MeterCC.js +27 -5
  86. package/build/esm/cc/MeterCC.js.map +1 -1
  87. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  88. package/build/esm/cc/NodeNamingCC.js +3 -3
  89. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  90. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  91. package/build/esm/cc/NotificationCC.js +22 -24
  92. package/build/esm/cc/NotificationCC.js.map +1 -1
  93. package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
  94. package/build/esm/cc/PowerlevelCC.js +2 -2
  95. package/build/esm/cc/PowerlevelCC.js.map +1 -1
  96. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  97. package/build/esm/cc/Security2CC.js +21 -10
  98. package/build/esm/cc/Security2CC.js.map +1 -1
  99. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  100. package/build/esm/cc/SecurityCC.js +4 -4
  101. package/build/esm/cc/SecurityCC.js.map +1 -1
  102. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  103. package/build/esm/cc/SoundSwitchCC.js +2 -2
  104. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  105. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  106. package/build/esm/cc/ThermostatSetpointCC.js +5 -1
  107. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  108. package/build/esm/cc/UserCredentialCC.d.ts +6 -0
  109. package/build/esm/cc/UserCredentialCC.d.ts.map +1 -1
  110. package/build/esm/cc/UserCredentialCC.js +103 -13
  111. package/build/esm/cc/UserCredentialCC.js.map +1 -1
  112. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  113. package/build/esm/cc/WindowCoveringCC.js +3 -4
  114. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  115. package/build/esm/cc/_CCValues.generated.d.ts +2 -2
  116. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
  117. package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
  118. package/build/esm/lib/Security2/Extension.js +3 -3
  119. package/build/esm/lib/Security2/Extension.js.map +1 -1
  120. package/build/esm/lib/securityLogging.d.ts +6 -0
  121. package/build/esm/lib/securityLogging.d.ts.map +1 -0
  122. package/build/esm/lib/securityLogging.js +10 -0
  123. package/build/esm/lib/securityLogging.js.map +1 -0
  124. package/build/esm/lib/serializers.d.ts.map +1 -1
  125. package/build/esm/lib/serializers.js +4 -0
  126. package/build/esm/lib/serializers.js.map +1 -1
  127. package/package.json +11 -11
@@ -48,6 +48,7 @@ var import_CommandClassDecorators = require("../lib/CommandClassDecorators.js");
48
48
  var import_Extension = require("../lib/Security2/Extension.js");
49
49
  var import_shared2 = require("../lib/Security2/shared.js");
50
50
  var import_Types = require("../lib/_Types.js");
51
+ var import_securityLogging = require("../lib/securityLogging.js");
51
52
  var import_CRC16CC = require("./CRC16CC.js");
52
53
  var import_MultiChannelCC = require("./MultiChannelCC.js");
53
54
  var import_SecurityCC = require("./SecurityCC.js");
@@ -898,12 +899,15 @@ let Security2CCMessageEncapsulation = (() => {
898
899
  })();
899
900
  if (mustDiscardCommand) {
900
901
  if (mcctx.isMulticast) {
901
- await securityManager.nextPeerMPAN(ctx.sourceNodeId, mcctx.groupId);
902
- } else {
902
+ securityManager.tryIncrementPeerMPAN(ctx.sourceNodeId, mcctx.groupId);
903
+ } else if (securityManager.getSPANState(ctx.sourceNodeId).type === import_core.SPANState.SPAN) {
903
904
  await securityManager.nextNonce(ctx.sourceNodeId);
904
905
  }
905
906
  import_core.validatePayload.fail("Invalid S2 extension");
906
907
  }
908
+ if (raw.payload.length < offset + SECURITY_S2_AUTH_TAG_LENGTH) {
909
+ import_core.validatePayload.fail(mcctx.isMulticast ? import_core.ZWaveErrorCodes.Security2CC_CannotDecodeMulticast : import_core.ZWaveErrorCodes.Security2CC_CannotDecode);
910
+ }
907
911
  let prevSequenceNumber;
908
912
  let mpanState;
909
913
  if (mcctx.isMulticast) {
@@ -1117,7 +1121,8 @@ let Security2CCMessageEncapsulation = (() => {
1117
1121
  ...encryptedExtensions.map((e, index) => e.serialize(index < encryptedExtensions.length - 1)),
1118
1122
  serializedCC
1119
1123
  ]);
1120
- const destinationTag = getDestinationIDTX.call(this);
1124
+ const self = this;
1125
+ const destinationTag = getDestinationIDTX.call(self);
1121
1126
  const messageLength = this.computeEncapsulationOverhead() + serializedCC.length;
1122
1127
  const authData = getAuthenticationData(ctx.ownNodeId, destinationTag, ctx.homeId, messageLength, unencryptedPayload);
1123
1128
  let key;
@@ -1155,7 +1160,7 @@ let Security2CCMessageEncapsulation = (() => {
1155
1160
  const message = {
1156
1161
  "sequence number": this.sequenceNumber ?? "(not set)"
1157
1162
  };
1158
- if ((0, import_shared.getenv)("NODE_ENV") === "test" || (0, import_shared.getenv)("NODE_ENV") === "development") {
1163
+ if ((0, import_securityLogging.shouldLogSecurityDetails)()) {
1159
1164
  if (this.key) {
1160
1165
  message.key = (0, import_shared.buffer2hex)(this.key);
1161
1166
  }
@@ -1617,9 +1622,9 @@ let Security2CCPublicKeyReport = (() => {
1617
1622
  this.publicKey = options.publicKey;
1618
1623
  }
1619
1624
  static from(raw, ctx) {
1620
- (0, import_core.validatePayload)(raw.payload.length >= 17);
1625
+ (0, import_core.validatePayload)(raw.payload.length >= 33);
1621
1626
  const includingNode = !!(raw.payload[0] & 1);
1622
- const publicKey = raw.payload.subarray(1);
1627
+ const publicKey = raw.payload.subarray(1, 33);
1623
1628
  return new this({
1624
1629
  nodeId: ctx.sourceNodeId,
1625
1630
  includingNode,