@zwave-js/cc 14.3.10 → 15.0.0-beta.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.
- package/build/cjs/cc/AlarmSensorCC.d.ts +139 -57
- package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
- package/build/cjs/cc/AssociationCC.d.ts +178 -43
- package/build/cjs/cc/AssociationCC.js +0 -4
- package/build/cjs/cc/AssociationCC.js.map +2 -2
- package/build/cjs/cc/AssociationGroupInfoCC.d.ts +138 -38
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
- package/build/cjs/cc/BarrierOperatorCC.d.ts +275 -73
- package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
- package/build/cjs/cc/BasicCC.d.ts +316 -71
- package/build/cjs/cc/BasicCC.js.map +2 -2
- package/build/cjs/cc/BatteryCC.d.ts +759 -164
- package/build/cjs/cc/BatteryCC.js.map +2 -2
- package/build/cjs/cc/BinarySensorCC.d.ts +91 -26
- package/build/cjs/cc/BinarySensorCC.js.map +2 -2
- package/build/cjs/cc/BinarySwitchCC.d.ts +190 -38
- package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
- package/build/cjs/cc/CRC16CC.d.ts +4 -8
- package/build/cjs/cc/CRC16CC.js +4 -27
- package/build/cjs/cc/CRC16CC.js.map +2 -2
- package/build/cjs/cc/CentralSceneCC.d.ts +272 -53
- package/build/cjs/cc/CentralSceneCC.js.map +2 -2
- package/build/cjs/cc/ClimateControlScheduleCC.d.ts +150 -37
- package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
- package/build/cjs/cc/ClockCC.d.ts +3 -3
- package/build/cjs/cc/ClockCC.js.map +2 -2
- package/build/cjs/cc/ColorSwitchCC.d.ts +423 -96
- package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
- package/build/cjs/cc/ConfigurationCC._validateArgs.js +1 -1
- package/build/cjs/cc/ConfigurationCC._validateArgs.js.map +1 -1
- package/build/cjs/cc/ConfigurationCC.d.ts +101 -37
- package/build/cjs/cc/ConfigurationCC.js +0 -8
- package/build/cjs/cc/ConfigurationCC.js.map +2 -2
- package/build/cjs/cc/DeviceResetLocallyCC.d.ts +1 -1
- package/build/cjs/cc/DeviceResetLocallyCC.js.map +2 -2
- package/build/cjs/cc/DoorLockCC._validateArgs.js +1 -1
- package/build/cjs/cc/DoorLockCC._validateArgs.js.map +1 -1
- package/build/cjs/cc/DoorLockCC.d.ts +1731 -419
- package/build/cjs/cc/DoorLockCC.js.map +2 -2
- package/build/cjs/cc/DoorLockLoggingCC.d.ts +64 -12
- package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
- package/build/cjs/cc/EnergyProductionCC.d.ts +29 -14
- package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
- package/build/cjs/cc/EntryControlCC.d.ts +308 -57
- package/build/cjs/cc/EntryControlCC.js.map +2 -2
- package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts +2 -0
- package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.js +26 -0
- package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.js.map +1 -1
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +389 -64
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +154 -8
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlModeCC.d.ts +125 -27
- package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +64 -18
- package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlSetpointCC.d.ts +116 -39
- package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
- package/build/cjs/cc/InclusionControllerCC.d.ts +4 -4
- package/build/cjs/cc/InclusionControllerCC.js.map +2 -2
- package/build/cjs/cc/IndicatorCC.d.ts +325 -83
- package/build/cjs/cc/IndicatorCC.js.map +2 -2
- package/build/cjs/cc/IrrigationCC.d.ts +2170 -683
- package/build/cjs/cc/IrrigationCC.js.map +2 -2
- package/build/cjs/cc/LanguageCC.d.ts +128 -26
- package/build/cjs/cc/LanguageCC.js.map +2 -2
- package/build/cjs/cc/LockCC.d.ts +64 -14
- package/build/cjs/cc/LockCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerProprietaryCC.d.ts +2 -2
- package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerSpecificCC.d.ts +219 -57
- package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
- package/build/cjs/cc/MeterCC.d.ts +364 -89
- package/build/cjs/cc/MeterCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelAssociationCC.d.ts +138 -40
- package/build/cjs/cc/MultiChannelAssociationCC.js +0 -5
- package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelCC.d.ts +469 -99
- package/build/cjs/cc/MultiChannelCC.js +8 -72
- package/build/cjs/cc/MultiChannelCC.js.map +2 -2
- package/build/cjs/cc/MultiCommandCC.d.ts +4 -8
- package/build/cjs/cc/MultiCommandCC.js +4 -37
- package/build/cjs/cc/MultiCommandCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSensorCC.d.ts +118 -33
- package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSwitchCC.d.ts +490 -125
- package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
- package/build/cjs/cc/NodeNamingCC.d.ts +128 -26
- package/build/cjs/cc/NodeNamingCC.js.map +2 -2
- package/build/cjs/cc/NotificationCC.d.ts +603 -161
- package/build/cjs/cc/NotificationCC.js +12 -1
- package/build/cjs/cc/NotificationCC.js.map +2 -2
- package/build/cjs/cc/PowerlevelCC.d.ts +6 -6
- package/build/cjs/cc/PowerlevelCC.js.map +2 -2
- package/build/cjs/cc/ProtectionCC.d.ts +496 -94
- package/build/cjs/cc/ProtectionCC.js.map +2 -2
- package/build/cjs/cc/SceneActivationCC.d.ts +127 -28
- package/build/cjs/cc/SceneActivationCC.js.map +2 -2
- package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +52 -25
- package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
- package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +53 -25
- package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
- package/build/cjs/cc/ScheduleEntryLockCC.d.ts +268 -64
- package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
- package/build/cjs/cc/Security2CC.d.ts +15 -21
- package/build/cjs/cc/Security2CC.js +32 -347
- package/build/cjs/cc/Security2CC.js.map +3 -3
- package/build/cjs/cc/SecurityCC.d.ts +12 -19
- package/build/cjs/cc/SecurityCC.js +12 -106
- package/build/cjs/cc/SecurityCC.js.map +2 -2
- package/build/cjs/cc/SoundSwitchCC.d.ts +253 -64
- package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
- package/build/cjs/cc/SupervisionCC.d.ts +28 -16
- package/build/cjs/cc/SupervisionCC.js +4 -29
- package/build/cjs/cc/SupervisionCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanModeCC.d.ts +187 -38
- package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanStateCC.d.ts +64 -18
- package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatModeCC.d.ts +189 -40
- package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +65 -19
- package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetbackCC.d.ts +4 -4
- package/build/cjs/cc/ThermostatSetbackCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetpointCC.d.ts +116 -36
- package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
- package/build/cjs/cc/TimeCC.d.ts +6 -6
- package/build/cjs/cc/TimeCC.js.map +2 -2
- package/build/cjs/cc/TimeParametersCC.d.ts +63 -12
- package/build/cjs/cc/TimeParametersCC.js.map +2 -2
- package/build/cjs/cc/TransportServiceCC.d.ts +7 -12
- package/build/cjs/cc/TransportServiceCC.js +3 -20
- package/build/cjs/cc/TransportServiceCC.js.map +2 -2
- package/build/cjs/cc/UserCodeCC._validateArgs.js +1 -1
- package/build/cjs/cc/UserCodeCC._validateArgs.js.map +1 -1
- package/build/cjs/cc/UserCodeCC.d.ts +931 -176
- package/build/cjs/cc/UserCodeCC.js.map +2 -2
- package/build/cjs/cc/VersionCC.d.ts +897 -185
- package/build/cjs/cc/VersionCC.js.map +2 -2
- package/build/cjs/cc/WakeUpCC.d.ts +190 -38
- package/build/cjs/cc/WakeUpCC.js.map +2 -2
- package/build/cjs/cc/WindowCoveringCC.d.ts +193 -103
- package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
- package/build/cjs/cc/ZWavePlusCC.d.ts +311 -51
- package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
- package/build/cjs/cc/ZWaveProtocolCC.d.ts +28 -28
- package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +4 -4
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
- package/build/cjs/index.d.ts +1 -0
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/index_browser.d.ts +9 -0
- package/build/cjs/index_browser.js +41 -1
- package/build/cjs/index_browser.js.map +2 -2
- package/build/cjs/lib/API.d.ts +7 -5
- package/build/cjs/lib/API.js +1 -1
- package/build/cjs/lib/API.js.map +2 -2
- package/build/cjs/lib/CommandClass.d.ts +10 -21
- package/build/cjs/lib/CommandClass.js +51 -106
- package/build/cjs/lib/CommandClass.js.map +3 -3
- package/build/cjs/lib/CommandClassDecorators.d.ts +1 -1
- package/build/cjs/lib/CommandClassDecorators.js +3 -3
- package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
- package/build/cjs/lib/Values.d.ts +2 -2
- package/build/cjs/lib/Values.js.map +2 -2
- package/build/cjs/lib/traits.d.ts +94 -0
- package/build/cjs/lib/traits.js +17 -0
- package/build/cjs/lib/traits.js.map +7 -0
- package/build/cjs/lib/utils.d.ts +2 -2
- package/build/cjs/lib/utils.js.map +2 -2
- package/build/esm/cc/AlarmSensorCC.d.ts +139 -57
- package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
- package/build/esm/cc/AlarmSensorCC.js +0 -1
- package/build/esm/cc/AlarmSensorCC.js.map +1 -1
- package/build/esm/cc/AssociationCC.d.ts +178 -43
- package/build/esm/cc/AssociationCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationCC.js +0 -13
- package/build/esm/cc/AssociationCC.js.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.d.ts +138 -38
- package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.js +0 -6
- package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.d.ts +275 -73
- package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.js +0 -3
- package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
- package/build/esm/cc/BasicCC.d.ts +316 -71
- package/build/esm/cc/BasicCC.d.ts.map +1 -1
- package/build/esm/cc/BasicCC.js +0 -2
- package/build/esm/cc/BasicCC.js.map +1 -1
- package/build/esm/cc/BatteryCC.d.ts +759 -164
- package/build/esm/cc/BatteryCC.d.ts.map +1 -1
- package/build/esm/cc/BatteryCC.js +1 -2
- package/build/esm/cc/BatteryCC.js.map +1 -1
- package/build/esm/cc/BinarySensorCC.d.ts +91 -26
- package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySensorCC.js +0 -3
- package/build/esm/cc/BinarySensorCC.js.map +1 -1
- package/build/esm/cc/BinarySwitchCC.d.ts +190 -38
- package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySwitchCC.js +0 -2
- package/build/esm/cc/BinarySwitchCC.js.map +1 -1
- package/build/esm/cc/CRC16CC.d.ts +4 -8
- package/build/esm/cc/CRC16CC.d.ts.map +1 -1
- package/build/esm/cc/CRC16CC.js +4 -34
- package/build/esm/cc/CRC16CC.js.map +1 -1
- package/build/esm/cc/CentralSceneCC.d.ts +272 -53
- package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
- package/build/esm/cc/CentralSceneCC.js +0 -1
- package/build/esm/cc/CentralSceneCC.js.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.d.ts +150 -37
- package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.js +0 -3
- package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
- package/build/esm/cc/ClockCC.d.ts +3 -3
- package/build/esm/cc/ClockCC.d.ts.map +1 -1
- package/build/esm/cc/ClockCC.js +0 -1
- package/build/esm/cc/ClockCC.js.map +1 -1
- package/build/esm/cc/ColorSwitchCC.d.ts +423 -96
- package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/ColorSwitchCC.js +0 -6
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC._validateArgs.js +1 -1
- package/build/esm/cc/ConfigurationCC._validateArgs.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.d.ts +101 -37
- package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +0 -25
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.d.ts +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.d.ts.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
- package/build/esm/cc/DoorLockCC._validateArgs.js +1 -1
- package/build/esm/cc/DoorLockCC._validateArgs.js.map +1 -1
- package/build/esm/cc/DoorLockCC.d.ts +1731 -419
- package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockCC.js +0 -2
- package/build/esm/cc/DoorLockCC.js.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.d.ts +64 -12
- package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.js +0 -1
- package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
- package/build/esm/cc/EnergyProductionCC.d.ts +29 -14
- package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
- package/build/esm/cc/EnergyProductionCC.js +0 -2
- package/build/esm/cc/EnergyProductionCC.js.map +1 -1
- package/build/esm/cc/EntryControlCC.d.ts +308 -57
- package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
- package/build/esm/cc/EntryControlCC.js +0 -1
- package/build/esm/cc/EntryControlCC.js.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts +2 -0
- package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.js +20 -0
- package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.js.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +389 -64
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js +158 -30
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.d.ts +125 -27
- package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.js +0 -1
- package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +64 -18
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.d.ts +116 -39
- package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.js +0 -4
- package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
- package/build/esm/cc/InclusionControllerCC.d.ts +4 -4
- package/build/esm/cc/InclusionControllerCC.d.ts.map +1 -1
- package/build/esm/cc/InclusionControllerCC.js +0 -2
- package/build/esm/cc/InclusionControllerCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.d.ts +325 -83
- package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
- package/build/esm/cc/IndicatorCC.js +0 -7
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- package/build/esm/cc/IrrigationCC.d.ts +2170 -683
- package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
- package/build/esm/cc/IrrigationCC.js +0 -9
- package/build/esm/cc/IrrigationCC.js.map +1 -1
- package/build/esm/cc/LanguageCC.d.ts +128 -26
- package/build/esm/cc/LanguageCC.d.ts.map +1 -1
- package/build/esm/cc/LanguageCC.js +0 -1
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/LockCC.d.ts +64 -14
- package/build/esm/cc/LockCC.d.ts.map +1 -1
- package/build/esm/cc/LockCC.js +0 -1
- package/build/esm/cc/LockCC.js.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.d.ts +2 -2
- package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js +0 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.d.ts +219 -57
- package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.js +0 -2
- package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
- package/build/esm/cc/MeterCC.d.ts +364 -89
- package/build/esm/cc/MeterCC.d.ts.map +1 -1
- package/build/esm/cc/MeterCC.js +0 -4
- package/build/esm/cc/MeterCC.js.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.d.ts +138 -40
- package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.js +0 -16
- package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts +469 -99
- package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelCC.js +8 -101
- package/build/esm/cc/MultiChannelCC.js.map +1 -1
- package/build/esm/cc/MultiCommandCC.d.ts +4 -8
- package/build/esm/cc/MultiCommandCC.d.ts.map +1 -1
- package/build/esm/cc/MultiCommandCC.js +4 -38
- package/build/esm/cc/MultiCommandCC.js.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.d.ts +118 -33
- package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.js +0 -5
- package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.d.ts +490 -125
- package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.js +0 -4
- package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
- package/build/esm/cc/NodeNamingCC.d.ts +128 -26
- package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
- package/build/esm/cc/NodeNamingCC.js +0 -2
- package/build/esm/cc/NodeNamingCC.js.map +1 -1
- package/build/esm/cc/NotificationCC.d.ts +603 -161
- package/build/esm/cc/NotificationCC.d.ts.map +1 -1
- package/build/esm/cc/NotificationCC.js +18 -12
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/PowerlevelCC.d.ts +6 -6
- package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
- package/build/esm/cc/PowerlevelCC.js +0 -4
- package/build/esm/cc/PowerlevelCC.js.map +1 -1
- package/build/esm/cc/ProtectionCC.d.ts +496 -94
- package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
- package/build/esm/cc/ProtectionCC.js +0 -3
- package/build/esm/cc/ProtectionCC.js.map +1 -1
- package/build/esm/cc/SceneActivationCC.d.ts +127 -28
- package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActivationCC.js +0 -1
- package/build/esm/cc/SceneActivationCC.js.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +52 -25
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.js +0 -2
- package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts +53 -25
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.js +0 -2
- package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.d.ts +268 -64
- package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.js +0 -14
- package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
- package/build/esm/cc/Security2CC.d.ts +15 -21
- package/build/esm/cc/Security2CC.d.ts.map +1 -1
- package/build/esm/cc/Security2CC.js +27 -475
- package/build/esm/cc/Security2CC.js.map +1 -1
- package/build/esm/cc/SecurityCC.d.ts +12 -19
- package/build/esm/cc/SecurityCC.d.ts.map +1 -1
- package/build/esm/cc/SecurityCC.js +13 -138
- package/build/esm/cc/SecurityCC.js.map +1 -1
- package/build/esm/cc/SoundSwitchCC.d.ts +253 -64
- package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/SoundSwitchCC.js +0 -7
- package/build/esm/cc/SoundSwitchCC.js.map +1 -1
- package/build/esm/cc/SupervisionCC.d.ts +28 -16
- package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
- package/build/esm/cc/SupervisionCC.js +4 -34
- package/build/esm/cc/SupervisionCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.d.ts +187 -38
- package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.js +0 -1
- package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.d.ts +64 -18
- package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatModeCC.d.ts +189 -40
- package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatModeCC.js +0 -3
- package/build/esm/cc/ThermostatModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts +65 -19
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetbackCC.d.ts +4 -4
- package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetbackCC.js +0 -2
- package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts +116 -36
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +0 -6
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/TimeCC.d.ts +6 -6
- package/build/esm/cc/TimeCC.d.ts.map +1 -1
- package/build/esm/cc/TimeCC.js +0 -4
- package/build/esm/cc/TimeCC.js.map +1 -1
- package/build/esm/cc/TimeParametersCC.d.ts +63 -12
- package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
- package/build/esm/cc/TimeParametersCC.js +0 -1
- package/build/esm/cc/TimeParametersCC.js.map +1 -1
- package/build/esm/cc/TransportServiceCC.d.ts +7 -12
- package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
- package/build/esm/cc/TransportServiceCC.js +5 -38
- package/build/esm/cc/TransportServiceCC.js.map +1 -1
- package/build/esm/cc/UserCodeCC._validateArgs.js +1 -1
- package/build/esm/cc/UserCodeCC._validateArgs.js.map +1 -1
- package/build/esm/cc/UserCodeCC.d.ts +931 -176
- package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
- package/build/esm/cc/UserCodeCC.js +0 -12
- package/build/esm/cc/UserCodeCC.js.map +1 -1
- package/build/esm/cc/VersionCC.d.ts +897 -185
- package/build/esm/cc/VersionCC.d.ts.map +1 -1
- package/build/esm/cc/VersionCC.js +0 -4
- package/build/esm/cc/VersionCC.js.map +1 -1
- package/build/esm/cc/WakeUpCC.d.ts +190 -38
- package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
- package/build/esm/cc/WakeUpCC.js +0 -1
- package/build/esm/cc/WakeUpCC.js.map +1 -1
- package/build/esm/cc/WindowCoveringCC.d.ts +193 -103
- package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/WindowCoveringCC.js +0 -5
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/ZWavePlusCC.d.ts +311 -51
- package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
- package/build/esm/cc/ZWavePlusCC.js +0 -1
- package/build/esm/cc/ZWavePlusCC.js.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.d.ts +28 -28
- package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.js +0 -27
- package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +4 -4
- package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js +0 -3
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
- package/build/esm/index.d.ts +1 -0
- package/build/esm/index.d.ts.map +1 -1
- package/build/esm/index_browser.d.ts +9 -0
- package/build/esm/index_browser.d.ts.map +1 -1
- package/build/esm/index_browser.js +8 -1
- package/build/esm/index_browser.js.map +1 -1
- package/build/esm/lib/API.d.ts +7 -5
- package/build/esm/lib/API.d.ts.map +1 -1
- package/build/esm/lib/API.js +1 -1
- package/build/esm/lib/API.js.map +1 -1
- package/build/esm/lib/CommandClass.d.ts +10 -21
- package/build/esm/lib/CommandClass.d.ts.map +1 -1
- package/build/esm/lib/CommandClass.js +8 -101
- package/build/esm/lib/CommandClass.js.map +1 -1
- package/build/esm/lib/CommandClassDecorators.d.ts +1 -1
- package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
- package/build/esm/lib/CommandClassDecorators.js +1 -1
- package/build/esm/lib/CommandClassDecorators.js.map +1 -1
- package/build/esm/lib/Values.d.ts +2 -2
- package/build/esm/lib/Values.d.ts.map +1 -1
- package/build/esm/lib/Values.js.map +1 -1
- package/build/esm/lib/traits.d.ts +94 -0
- package/build/esm/lib/traits.d.ts.map +1 -0
- package/build/esm/lib/traits.js +2 -0
- package/build/esm/lib/traits.js.map +1 -0
- package/build/esm/lib/utils.d.ts +2 -2
- package/build/esm/lib/utils.d.ts.map +1 -1
- package/build/esm/lib/utils.js.map +1 -1
- package/package.json +13 -13
|
@@ -155,98 +155,18 @@ function assertSecurityTX(ctx, destination) {
|
|
|
155
155
|
return ret;
|
|
156
156
|
}
|
|
157
157
|
__name(assertSecurityTX, "assertSecurityTX");
|
|
158
|
-
function
|
|
159
|
-
const decryptWithNonce = /* @__PURE__ */ __name((nonce) => {
|
|
160
|
-
const { keyCCM: key } = securityManager.getKeysForNode(sendingNodeId);
|
|
161
|
-
const iv = nonce;
|
|
162
|
-
return {
|
|
163
|
-
key,
|
|
164
|
-
iv,
|
|
165
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
166
|
-
...(0, import_core.decryptAES128CCMSync)(key, iv, ciphertext, authData, authTag)
|
|
167
|
-
};
|
|
168
|
-
}, "decryptWithNonce");
|
|
169
|
-
const getNonceAndDecrypt = /* @__PURE__ */ __name(() => {
|
|
170
|
-
const iv = securityManager.nextNonce(sendingNodeId);
|
|
171
|
-
return decryptWithNonce(iv);
|
|
172
|
-
}, "getNonceAndDecrypt");
|
|
173
|
-
if (spanState.type === import_core.SPANState.SPAN) {
|
|
174
|
-
if (
|
|
175
|
-
// The previous SPAN is still known, i.e. the node didn't send another command that was successfully decrypted
|
|
176
|
-
!!spanState.currentSPAN && spanState.currentSPAN.expires > (0, import_core.highResTimestamp)() && prevSequenceNumber != void 0 && curSequenceNumber === (prevSequenceNumber + 1 & 255) && !ctx.__internalIsMockNode
|
|
177
|
-
) {
|
|
178
|
-
const nonce = spanState.currentSPAN.nonce;
|
|
179
|
-
spanState.currentSPAN = void 0;
|
|
180
|
-
const result = decryptWithNonce(nonce);
|
|
181
|
-
if (result.authOK) {
|
|
182
|
-
return {
|
|
183
|
-
...result,
|
|
184
|
-
securityClass: spanState.securityClass
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
} else {
|
|
188
|
-
spanState.currentSPAN = void 0;
|
|
189
|
-
}
|
|
190
|
-
return {
|
|
191
|
-
...getNonceAndDecrypt(),
|
|
192
|
-
securityClass: spanState.securityClass
|
|
193
|
-
};
|
|
194
|
-
} else if (spanState.type === import_core.SPANState.LocalEI) {
|
|
195
|
-
const senderEI = getSenderEI(extensions);
|
|
196
|
-
if (!senderEI)
|
|
197
|
-
failNoSPAN();
|
|
198
|
-
const receiverEI = spanState.receiverEI;
|
|
199
|
-
const isBootstrappingNode = securityManager.tempKeys.has(sendingNodeId);
|
|
200
|
-
if (isBootstrappingNode) {
|
|
201
|
-
securityManager.initializeTempSPAN(sendingNodeId, senderEI, receiverEI);
|
|
202
|
-
const ret = getNonceAndDecrypt();
|
|
203
|
-
if (ret.authOK) {
|
|
204
|
-
return {
|
|
205
|
-
...ret,
|
|
206
|
-
securityClass: import_core.SecurityClass.Temporary
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
securityManager.setSPANState(sendingNodeId, spanState);
|
|
210
|
-
}
|
|
211
|
-
const possibleSecurityClasses = isBootstrappingNode ? [ctx.getHighestSecurityClass(sendingNodeId)] : import_core.securityClassOrder.filter((s) => ctx.hasSecurityClass(sendingNodeId, s) !== false);
|
|
212
|
-
for (const secClass of possibleSecurityClasses) {
|
|
213
|
-
if (!securityManager.hasKeysForSecurityClass(secClass)) {
|
|
214
|
-
continue;
|
|
215
|
-
}
|
|
216
|
-
securityManager.initializeSPAN(sendingNodeId, secClass, senderEI, receiverEI);
|
|
217
|
-
const ret = getNonceAndDecrypt();
|
|
218
|
-
if (ret.authOK) {
|
|
219
|
-
if (ctx.hasSecurityClass(sendingNodeId, secClass) === void 0) {
|
|
220
|
-
ctx.setSecurityClass(sendingNodeId, secClass, true);
|
|
221
|
-
}
|
|
222
|
-
return {
|
|
223
|
-
...ret,
|
|
224
|
-
securityClass: secClass
|
|
225
|
-
};
|
|
226
|
-
} else {
|
|
227
|
-
securityManager.setSPANState(sendingNodeId, spanState);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return {
|
|
232
|
-
plaintext: new Uint8Array(),
|
|
233
|
-
authOK: false,
|
|
234
|
-
securityClass: void 0
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
__name(decryptSinglecastSync, "decryptSinglecastSync");
|
|
238
|
-
async function decryptSinglecastAsync(ctx, securityManager, sendingNodeId, curSequenceNumber, prevSequenceNumber, ciphertext, authData, authTag, spanState, extensions) {
|
|
158
|
+
async function decryptSinglecast(ctx, securityManager, sendingNodeId, curSequenceNumber, prevSequenceNumber, ciphertext, authData, authTag, spanState, extensions) {
|
|
239
159
|
const decryptWithNonce = /* @__PURE__ */ __name(async (nonce) => {
|
|
240
160
|
const { keyCCM: key } = securityManager.getKeysForNode(sendingNodeId);
|
|
241
161
|
const iv = nonce;
|
|
242
162
|
return {
|
|
243
163
|
key,
|
|
244
164
|
iv,
|
|
245
|
-
...await (0, import_core.
|
|
165
|
+
...await (0, import_core.decryptAES128CCM)(ciphertext, key, iv, authData, authTag)
|
|
246
166
|
};
|
|
247
167
|
}, "decryptWithNonce");
|
|
248
168
|
const getNonceAndDecrypt = /* @__PURE__ */ __name(async () => {
|
|
249
|
-
const iv = await securityManager.
|
|
169
|
+
const iv = await securityManager.nextNonce(sendingNodeId);
|
|
250
170
|
return decryptWithNonce(iv);
|
|
251
171
|
}, "getNonceAndDecrypt");
|
|
252
172
|
if (spanState.type === import_core.SPANState.SPAN) {
|
|
@@ -277,7 +197,7 @@ async function decryptSinglecastAsync(ctx, securityManager, sendingNodeId, curSe
|
|
|
277
197
|
const receiverEI = spanState.receiverEI;
|
|
278
198
|
const isBootstrappingNode = securityManager.tempKeys.has(sendingNodeId);
|
|
279
199
|
if (isBootstrappingNode) {
|
|
280
|
-
await securityManager.
|
|
200
|
+
await securityManager.initializeTempSPAN(sendingNodeId, senderEI, receiverEI);
|
|
281
201
|
const ret = await getNonceAndDecrypt();
|
|
282
202
|
if (ret.authOK) {
|
|
283
203
|
return {
|
|
@@ -292,7 +212,7 @@ async function decryptSinglecastAsync(ctx, securityManager, sendingNodeId, curSe
|
|
|
292
212
|
if (!securityManager.hasKeysForSecurityClass(secClass)) {
|
|
293
213
|
continue;
|
|
294
214
|
}
|
|
295
|
-
await securityManager.
|
|
215
|
+
await securityManager.initializeSPAN(sendingNodeId, secClass, senderEI, receiverEI);
|
|
296
216
|
const ret = await getNonceAndDecrypt();
|
|
297
217
|
if (ret.authOK) {
|
|
298
218
|
if (ctx.hasSecurityClass(sendingNodeId, secClass) === void 0) {
|
|
@@ -313,32 +233,19 @@ async function decryptSinglecastAsync(ctx, securityManager, sendingNodeId, curSe
|
|
|
313
233
|
securityClass: void 0
|
|
314
234
|
};
|
|
315
235
|
}
|
|
316
|
-
__name(
|
|
317
|
-
function
|
|
318
|
-
const iv = securityManager.nextPeerMPAN(sendingNodeId, groupId);
|
|
319
|
-
const { keyCCM: key } = securityManager.getKeysForNode(sendingNodeId);
|
|
320
|
-
return {
|
|
321
|
-
key,
|
|
322
|
-
iv,
|
|
323
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
324
|
-
...(0, import_core.decryptAES128CCMSync)(key, iv, ciphertext, authData, authTag),
|
|
325
|
-
// The security class is irrelevant when decrypting multicast commands
|
|
326
|
-
securityClass: void 0
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
__name(decryptMulticastSync, "decryptMulticastSync");
|
|
330
|
-
async function decryptMulticastAsync(sendingNodeId, securityManager, groupId, ciphertext, authData, authTag) {
|
|
331
|
-
const iv = await securityManager.nextPeerMPANAsync(sendingNodeId, groupId);
|
|
236
|
+
__name(decryptSinglecast, "decryptSinglecast");
|
|
237
|
+
async function decryptMulticast(sendingNodeId, securityManager, groupId, ciphertext, authData, authTag) {
|
|
238
|
+
const iv = await securityManager.nextPeerMPAN(sendingNodeId, groupId);
|
|
332
239
|
const { keyCCM: key } = securityManager.getKeysForNode(sendingNodeId);
|
|
333
240
|
return {
|
|
334
241
|
key,
|
|
335
242
|
iv,
|
|
336
|
-
...await (0, import_core.
|
|
243
|
+
...await (0, import_core.decryptAES128CCM)(ciphertext, key, iv, authData, authTag),
|
|
337
244
|
// The security class is irrelevant when decrypting multicast commands
|
|
338
245
|
securityClass: void 0
|
|
339
246
|
};
|
|
340
247
|
}
|
|
341
|
-
__name(
|
|
248
|
+
__name(decryptMulticast, "decryptMulticast");
|
|
342
249
|
function parseExtensions(buffer, wasEncrypted) {
|
|
343
250
|
const extensions = [];
|
|
344
251
|
let mustDiscardCommand = false;
|
|
@@ -448,7 +355,7 @@ let Security2CCAPI = (() => {
|
|
|
448
355
|
if (!securityManager) {
|
|
449
356
|
throw new import_core.ZWaveError(`Nonces can only be sent if secure communication is set up!`, import_core.ZWaveErrorCodes.Driver_NoSecurity);
|
|
450
357
|
}
|
|
451
|
-
const receiverEI = await securityManager.
|
|
358
|
+
const receiverEI = await securityManager.generateNonce(this.endpoint.nodeId);
|
|
452
359
|
const cc = new Security2CCNonceReport({
|
|
453
360
|
nodeId: this.endpoint.nodeId,
|
|
454
361
|
endpointIndex: this.endpoint.index,
|
|
@@ -998,8 +905,7 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
998
905
|
throw new import_core.ZWaveError("Multicast Security S2 encapsulation requires the MGRP extension", import_core.ZWaveErrorCodes.Security2CC_MissingExtension);
|
|
999
906
|
}
|
|
1000
907
|
}
|
|
1001
|
-
|
|
1002
|
-
static from(raw, ctx) {
|
|
908
|
+
static async from(raw, ctx) {
|
|
1003
909
|
const securityManager = assertSecurityRX(ctx);
|
|
1004
910
|
(0, import_core.validatePayload)(raw.payload.length >= 2);
|
|
1005
911
|
const sequenceNumber = raw.payload[0];
|
|
@@ -1031,9 +937,9 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1031
937
|
})();
|
|
1032
938
|
if (mustDiscardCommand) {
|
|
1033
939
|
if (mcctx.isMulticast) {
|
|
1034
|
-
securityManager.nextPeerMPAN(ctx.sourceNodeId, mcctx.groupId);
|
|
940
|
+
await securityManager.nextPeerMPAN(ctx.sourceNodeId, mcctx.groupId);
|
|
1035
941
|
} else {
|
|
1036
|
-
securityManager.nextNonce(ctx.sourceNodeId);
|
|
942
|
+
await securityManager.nextNonce(ctx.sourceNodeId);
|
|
1037
943
|
}
|
|
1038
944
|
import_core.validatePayload.fail("Invalid S2 extension");
|
|
1039
945
|
}
|
|
@@ -1058,10 +964,7 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1058
964
|
securityManager.storePeerMPAN(ctx.sourceNodeId, mcctx.groupId, { type: import_core.MPANState.OutOfSync });
|
|
1059
965
|
failNoMPAN();
|
|
1060
966
|
}
|
|
1061
|
-
decrypt = /* @__PURE__ */ __name(() => (
|
|
1062
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1063
|
-
decryptMulticastSync(ctx.sourceNodeId, securityManager, mcctx.groupId, ciphertext, authData, authTag)
|
|
1064
|
-
), "decrypt");
|
|
967
|
+
decrypt = /* @__PURE__ */ __name(() => decryptMulticast(ctx.sourceNodeId, securityManager, mcctx.groupId, ciphertext, authData, authTag), "decrypt");
|
|
1065
968
|
} else {
|
|
1066
969
|
const spanState = securityManager.getSPANState(ctx.sourceNodeId);
|
|
1067
970
|
if (spanState.type === import_core.SPANState.None) {
|
|
@@ -1069,10 +972,7 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1069
972
|
} else if (spanState.type === import_core.SPANState.RemoteEI) {
|
|
1070
973
|
failNoSPAN();
|
|
1071
974
|
}
|
|
1072
|
-
decrypt = /* @__PURE__ */ __name(() => (
|
|
1073
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1074
|
-
decryptSinglecastSync(ctx, securityManager, ctx.sourceNodeId, sequenceNumber, prevSequenceNumber, ciphertext, authData, authTag, spanState, extensions)
|
|
1075
|
-
), "decrypt");
|
|
975
|
+
decrypt = /* @__PURE__ */ __name(() => decryptSinglecast(ctx, securityManager, ctx.sourceNodeId, sequenceNumber, prevSequenceNumber, ciphertext, authData, authTag, spanState, extensions), "decrypt");
|
|
1076
976
|
}
|
|
1077
977
|
let plaintext;
|
|
1078
978
|
let authOK = false;
|
|
@@ -1087,7 +987,7 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1087
987
|
key,
|
|
1088
988
|
iv,
|
|
1089
989
|
securityClass: decryptionSecurityClass
|
|
1090
|
-
} = decrypt());
|
|
990
|
+
} = await decrypt());
|
|
1091
991
|
if (!!authOK && !!plaintext)
|
|
1092
992
|
break;
|
|
1093
993
|
if (!!getSenderEI(extensions))
|
|
@@ -1119,10 +1019,11 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1119
1019
|
import_core.validatePayload.fail("Invalid combination of extensions");
|
|
1120
1020
|
}
|
|
1121
1021
|
if (!mcctx.isMulticast) {
|
|
1122
|
-
|
|
1123
|
-
|
|
1022
|
+
const mpanExtension2 = extensions.find((e) => e instanceof import_Extension.MPANExtension);
|
|
1023
|
+
if (mpanExtension2) {
|
|
1024
|
+
securityManager.storePeerMPAN(ctx.sourceNodeId, mpanExtension2.groupId, {
|
|
1124
1025
|
type: import_core.MPANState.MPAN,
|
|
1125
|
-
currentMPAN:
|
|
1026
|
+
currentMPAN: mpanExtension2.innerMPANState
|
|
1126
1027
|
});
|
|
1127
1028
|
}
|
|
1128
1029
|
}
|
|
@@ -1130,145 +1031,7 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1130
1031
|
let encapsulated;
|
|
1131
1032
|
if (decryptedCCBytes.length > 0) {
|
|
1132
1033
|
(0, import_core.validatePayload)(decryptedCCBytes.length >= 2);
|
|
1133
|
-
encapsulated = import_CommandClass.CommandClass.parse(decryptedCCBytes, ctx);
|
|
1134
|
-
}
|
|
1135
|
-
const ret = new Security2CCMessageEncapsulation2({
|
|
1136
|
-
nodeId: ctx.sourceNodeId,
|
|
1137
|
-
sequenceNumber,
|
|
1138
|
-
securityClass,
|
|
1139
|
-
extensions,
|
|
1140
|
-
encapsulated
|
|
1141
|
-
});
|
|
1142
|
-
ret.key = key;
|
|
1143
|
-
ret.iv = iv;
|
|
1144
|
-
ret.authData = authData;
|
|
1145
|
-
ret.authTag = authTag;
|
|
1146
|
-
ret.plaintext = decryptedCCBytes;
|
|
1147
|
-
return ret;
|
|
1148
|
-
}
|
|
1149
|
-
static async fromAsync(raw, ctx) {
|
|
1150
|
-
const securityManager = assertSecurityRX(ctx);
|
|
1151
|
-
(0, import_core.validatePayload)(raw.payload.length >= 2);
|
|
1152
|
-
const sequenceNumber = raw.payload[0];
|
|
1153
|
-
import_core.validatePayload.withReason("No security class granted")(ctx.getHighestSecurityClass(ctx.sourceNodeId) !== import_core.SecurityClass.None);
|
|
1154
|
-
const hasExtensions = !!(raw.payload[1] & 1);
|
|
1155
|
-
const hasEncryptedExtensions = !!(raw.payload[1] & 2);
|
|
1156
|
-
let offset = 2;
|
|
1157
|
-
const extensions = [];
|
|
1158
|
-
let mustDiscardCommand = false;
|
|
1159
|
-
if (hasExtensions) {
|
|
1160
|
-
const parseResult = parseExtensions(raw.payload.subarray(offset), false);
|
|
1161
|
-
extensions.push(...parseResult.extensions);
|
|
1162
|
-
offset += parseResult.bytesRead;
|
|
1163
|
-
mustDiscardCommand = parseResult.mustDiscardCommand;
|
|
1164
|
-
}
|
|
1165
|
-
const mcctx = (() => {
|
|
1166
|
-
const multicastGroupId = getMulticastGroupId(extensions);
|
|
1167
|
-
if (ctx.frameType === "multicast" || ctx.frameType === "broadcast") {
|
|
1168
|
-
if (multicastGroupId == void 0) {
|
|
1169
|
-
import_core.validatePayload.fail("Multicast frames without MGRP extension");
|
|
1170
|
-
}
|
|
1171
|
-
return {
|
|
1172
|
-
isMulticast: true,
|
|
1173
|
-
groupId: multicastGroupId
|
|
1174
|
-
};
|
|
1175
|
-
} else {
|
|
1176
|
-
return { isMulticast: false, groupId: multicastGroupId };
|
|
1177
|
-
}
|
|
1178
|
-
})();
|
|
1179
|
-
if (mustDiscardCommand) {
|
|
1180
|
-
if (mcctx.isMulticast) {
|
|
1181
|
-
await securityManager.nextPeerMPANAsync(ctx.sourceNodeId, mcctx.groupId);
|
|
1182
|
-
} else {
|
|
1183
|
-
await securityManager.nextNonceAsync(ctx.sourceNodeId);
|
|
1184
|
-
}
|
|
1185
|
-
import_core.validatePayload.fail("Invalid S2 extension");
|
|
1186
|
-
}
|
|
1187
|
-
let prevSequenceNumber;
|
|
1188
|
-
let mpanState;
|
|
1189
|
-
if (mcctx.isMulticast) {
|
|
1190
|
-
mpanState = securityManager.getPeerMPAN(ctx.sourceNodeId, mcctx.groupId);
|
|
1191
|
-
} else {
|
|
1192
|
-
prevSequenceNumber = validateSequenceNumber(securityManager, ctx.sourceNodeId, sequenceNumber);
|
|
1193
|
-
if (mcctx.groupId == void 0) {
|
|
1194
|
-
securityManager.resetOutOfSyncMPANs(ctx.sourceNodeId);
|
|
1195
|
-
}
|
|
1196
|
-
}
|
|
1197
|
-
const unencryptedPayload = raw.payload.subarray(0, offset);
|
|
1198
|
-
const ciphertext = raw.payload.subarray(offset, -SECURITY_S2_AUTH_TAG_LENGTH);
|
|
1199
|
-
const authTag = raw.payload.subarray(-SECURITY_S2_AUTH_TAG_LENGTH);
|
|
1200
|
-
const messageLength = 2 + raw.payload.length;
|
|
1201
|
-
const authData = getAuthenticationData(ctx.sourceNodeId, getDestinationIDRX(ctx, extensions), ctx.homeId, messageLength, unencryptedPayload);
|
|
1202
|
-
let decrypt;
|
|
1203
|
-
if (mcctx.isMulticast) {
|
|
1204
|
-
if (mpanState?.type !== import_core.MPANState.MPAN) {
|
|
1205
|
-
securityManager.storePeerMPAN(ctx.sourceNodeId, mcctx.groupId, { type: import_core.MPANState.OutOfSync });
|
|
1206
|
-
failNoMPAN();
|
|
1207
|
-
}
|
|
1208
|
-
decrypt = /* @__PURE__ */ __name(() => decryptMulticastAsync(ctx.sourceNodeId, securityManager, mcctx.groupId, ciphertext, authData, authTag), "decrypt");
|
|
1209
|
-
} else {
|
|
1210
|
-
const spanState = securityManager.getSPANState(ctx.sourceNodeId);
|
|
1211
|
-
if (spanState.type === import_core.SPANState.None) {
|
|
1212
|
-
failNoSPAN();
|
|
1213
|
-
} else if (spanState.type === import_core.SPANState.RemoteEI) {
|
|
1214
|
-
failNoSPAN();
|
|
1215
|
-
}
|
|
1216
|
-
decrypt = /* @__PURE__ */ __name(() => decryptSinglecastAsync(ctx, securityManager, ctx.sourceNodeId, sequenceNumber, prevSequenceNumber, ciphertext, authData, authTag, spanState, extensions), "decrypt");
|
|
1217
|
-
}
|
|
1218
|
-
let plaintext;
|
|
1219
|
-
let authOK = false;
|
|
1220
|
-
let key;
|
|
1221
|
-
let iv;
|
|
1222
|
-
let decryptionSecurityClass;
|
|
1223
|
-
const decryptAttempts = mcctx.isMulticast ? MAX_DECRYPT_ATTEMPTS_MULTICAST : mcctx.groupId != void 0 ? MAX_DECRYPT_ATTEMPTS_SC_FOLLOWUP : MAX_DECRYPT_ATTEMPTS_SINGLECAST;
|
|
1224
|
-
for (let i = 0; i < decryptAttempts; i++) {
|
|
1225
|
-
({
|
|
1226
|
-
plaintext,
|
|
1227
|
-
authOK,
|
|
1228
|
-
key,
|
|
1229
|
-
iv,
|
|
1230
|
-
securityClass: decryptionSecurityClass
|
|
1231
|
-
} = await decrypt());
|
|
1232
|
-
if (!!authOK && !!plaintext)
|
|
1233
|
-
break;
|
|
1234
|
-
if (!!getSenderEI(extensions))
|
|
1235
|
-
break;
|
|
1236
|
-
}
|
|
1237
|
-
if (!authOK || !plaintext) {
|
|
1238
|
-
if (mcctx.isMulticast) {
|
|
1239
|
-
securityManager.storePeerMPAN(ctx.sourceNodeId, mcctx.groupId, { type: import_core.MPANState.OutOfSync });
|
|
1240
|
-
import_core.validatePayload.fail(import_core.ZWaveErrorCodes.Security2CC_CannotDecodeMulticast);
|
|
1241
|
-
} else {
|
|
1242
|
-
import_core.validatePayload.fail(import_core.ZWaveErrorCodes.Security2CC_CannotDecode);
|
|
1243
|
-
}
|
|
1244
|
-
} else if (!mcctx.isMulticast && mcctx.groupId != void 0) {
|
|
1245
|
-
securityManager.tryIncrementPeerMPAN(ctx.sourceNodeId, mcctx.groupId);
|
|
1246
|
-
}
|
|
1247
|
-
const securityClass = decryptionSecurityClass;
|
|
1248
|
-
offset = 0;
|
|
1249
|
-
if (hasEncryptedExtensions) {
|
|
1250
|
-
const parseResult = parseExtensions(plaintext, true);
|
|
1251
|
-
extensions.push(...parseResult.extensions);
|
|
1252
|
-
offset += parseResult.bytesRead;
|
|
1253
|
-
mustDiscardCommand = parseResult.mustDiscardCommand;
|
|
1254
|
-
}
|
|
1255
|
-
if (mustDiscardCommand) {
|
|
1256
|
-
import_core.validatePayload.fail("Invalid extension");
|
|
1257
|
-
}
|
|
1258
|
-
if (!mcctx.isMulticast) {
|
|
1259
|
-
const mpanExtension = extensions.find((e) => e instanceof import_Extension.MPANExtension);
|
|
1260
|
-
if (mpanExtension) {
|
|
1261
|
-
securityManager.storePeerMPAN(ctx.sourceNodeId, mpanExtension.groupId, {
|
|
1262
|
-
type: import_core.MPANState.MPAN,
|
|
1263
|
-
currentMPAN: mpanExtension.innerMPANState
|
|
1264
|
-
});
|
|
1265
|
-
}
|
|
1266
|
-
}
|
|
1267
|
-
const decryptedCCBytes = plaintext.subarray(offset);
|
|
1268
|
-
let encapsulated;
|
|
1269
|
-
if (decryptedCCBytes.length > 0) {
|
|
1270
|
-
(0, import_core.validatePayload)(decryptedCCBytes.length >= 2);
|
|
1271
|
-
encapsulated = await import_CommandClass.CommandClass.parseAsync(decryptedCCBytes, ctx);
|
|
1034
|
+
encapsulated = await import_CommandClass.CommandClass.parse(decryptedCCBytes, ctx);
|
|
1272
1035
|
}
|
|
1273
1036
|
const ret = new Security2CCMessageEncapsulation2({
|
|
1274
1037
|
nodeId: ctx.sourceNodeId,
|
|
@@ -1321,36 +1084,7 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1321
1084
|
getMulticastGroupId() {
|
|
1322
1085
|
return getMulticastGroupId(this.extensions);
|
|
1323
1086
|
}
|
|
1324
|
-
|
|
1325
|
-
maybeAddSPANExtensionSync(ctx, securityManager) {
|
|
1326
|
-
if (!this.isSinglecast())
|
|
1327
|
-
return;
|
|
1328
|
-
const receiverNodeId = this.nodeId;
|
|
1329
|
-
const spanState = securityManager.getSPANState(receiverNodeId);
|
|
1330
|
-
if (spanState.type === import_core.SPANState.None || spanState.type === import_core.SPANState.LocalEI) {
|
|
1331
|
-
throw new import_core.ZWaveError(`Security S2 CC requires the receiver's nonce to be sent!`, import_core.ZWaveErrorCodes.Security2CC_NoSPAN);
|
|
1332
|
-
} else if (spanState.type === import_core.SPANState.RemoteEI) {
|
|
1333
|
-
const senderEI = securityManager.generateNonce(void 0);
|
|
1334
|
-
const receiverEI = spanState.receiverEI;
|
|
1335
|
-
if (this.securityClass == void 0 && securityManager.tempKeys.has(receiverNodeId)) {
|
|
1336
|
-
securityManager.initializeTempSPAN(receiverNodeId, senderEI, receiverEI);
|
|
1337
|
-
} else {
|
|
1338
|
-
const securityClass = this.securityClass ?? ctx.getHighestSecurityClass(receiverNodeId);
|
|
1339
|
-
if (securityClass == void 0) {
|
|
1340
|
-
throw new import_core.ZWaveError("No security class defined for this command!", import_core.ZWaveErrorCodes.Security2CC_NoSPAN);
|
|
1341
|
-
}
|
|
1342
|
-
securityManager.initializeSPAN(receiverNodeId, securityClass, senderEI, receiverEI);
|
|
1343
|
-
}
|
|
1344
|
-
let spanExtension = this.extensions.find((e) => e instanceof import_Extension.SPANExtension);
|
|
1345
|
-
if (spanExtension) {
|
|
1346
|
-
spanExtension.senderEI = senderEI;
|
|
1347
|
-
} else {
|
|
1348
|
-
spanExtension = new import_Extension.SPANExtension({ senderEI });
|
|
1349
|
-
this.extensions.push(spanExtension);
|
|
1350
|
-
}
|
|
1351
|
-
}
|
|
1352
|
-
}
|
|
1353
|
-
async maybeAddSPANExtensionAsync(ctx, securityManager) {
|
|
1087
|
+
async maybeAddSPANExtension(ctx, securityManager) {
|
|
1354
1088
|
if (!this.isSinglecast())
|
|
1355
1089
|
return;
|
|
1356
1090
|
const receiverNodeId = this.nodeId;
|
|
@@ -1358,16 +1092,16 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1358
1092
|
if (spanState.type === import_core.SPANState.None || spanState.type === import_core.SPANState.LocalEI) {
|
|
1359
1093
|
throw new import_core.ZWaveError(`Security S2 CC requires the receiver's nonce to be sent!`, import_core.ZWaveErrorCodes.Security2CC_NoSPAN);
|
|
1360
1094
|
} else if (spanState.type === import_core.SPANState.RemoteEI) {
|
|
1361
|
-
const senderEI = await securityManager.
|
|
1095
|
+
const senderEI = await securityManager.generateNonce(void 0);
|
|
1362
1096
|
const receiverEI = spanState.receiverEI;
|
|
1363
1097
|
if (this.securityClass == void 0 && securityManager.tempKeys.has(receiverNodeId)) {
|
|
1364
|
-
await securityManager.
|
|
1098
|
+
await securityManager.initializeTempSPAN(receiverNodeId, senderEI, receiverEI);
|
|
1365
1099
|
} else {
|
|
1366
1100
|
const securityClass = this.securityClass ?? ctx.getHighestSecurityClass(receiverNodeId);
|
|
1367
1101
|
if (securityClass == void 0) {
|
|
1368
1102
|
throw new import_core.ZWaveError("No security class defined for this command!", import_core.ZWaveErrorCodes.Security2CC_NoSPAN);
|
|
1369
1103
|
}
|
|
1370
|
-
await securityManager.
|
|
1104
|
+
await securityManager.initializeSPAN(receiverNodeId, securityClass, senderEI, receiverEI);
|
|
1371
1105
|
}
|
|
1372
1106
|
let spanExtension = this.extensions.find((e) => e instanceof import_Extension.SPANExtension);
|
|
1373
1107
|
if (spanExtension) {
|
|
@@ -1378,11 +1112,10 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1378
1112
|
}
|
|
1379
1113
|
}
|
|
1380
1114
|
}
|
|
1381
|
-
|
|
1382
|
-
serialize(ctx) {
|
|
1115
|
+
async serialize(ctx) {
|
|
1383
1116
|
const securityManager = assertSecurityTX(ctx, this.nodeId);
|
|
1384
1117
|
this.ensureSequenceNumber(securityManager);
|
|
1385
|
-
this.
|
|
1118
|
+
await this.maybeAddSPANExtension(ctx, securityManager);
|
|
1386
1119
|
const unencryptedExtensions = this.extensions.filter((e) => !e.isEncrypted());
|
|
1387
1120
|
const encryptedExtensions = this.extensions.filter((e) => e.isEncrypted());
|
|
1388
1121
|
const unencryptedPayload = import_safe2.Bytes.concat([
|
|
@@ -1392,7 +1125,7 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1392
1125
|
]),
|
|
1393
1126
|
...unencryptedExtensions.map((e, index) => e.serialize(index < unencryptedExtensions.length - 1))
|
|
1394
1127
|
]);
|
|
1395
|
-
const serializedCC = this.encapsulated?.serialize(ctx) ?? new import_safe2.Bytes();
|
|
1128
|
+
const serializedCC = await this.encapsulated?.serialize(ctx) ?? new import_safe2.Bytes();
|
|
1396
1129
|
const plaintextPayload = import_safe2.Bytes.concat([
|
|
1397
1130
|
...encryptedExtensions.map((e, index) => e.serialize(index < encryptedExtensions.length - 1)),
|
|
1398
1131
|
serializedCC
|
|
@@ -1403,18 +1136,18 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1403
1136
|
let key;
|
|
1404
1137
|
let iv;
|
|
1405
1138
|
if (this.isSinglecast()) {
|
|
1406
|
-
iv = securityManager.nextNonce(this.nodeId, true);
|
|
1139
|
+
iv = await securityManager.nextNonce(this.nodeId, true);
|
|
1407
1140
|
const { keyCCM } = (
|
|
1408
1141
|
// Prefer the overridden security class if it was given
|
|
1409
1142
|
this.securityClass != void 0 ? securityManager.getKeysForSecurityClass(this.securityClass) : securityManager.getKeysForNode(this.nodeId)
|
|
1410
1143
|
);
|
|
1411
1144
|
key = keyCCM;
|
|
1412
1145
|
} else {
|
|
1413
|
-
const keyAndIV = securityManager.getMulticastKeyAndIV(destinationTag);
|
|
1146
|
+
const keyAndIV = await securityManager.getMulticastKeyAndIV(destinationTag);
|
|
1414
1147
|
key = keyAndIV.key;
|
|
1415
1148
|
iv = keyAndIV.iv;
|
|
1416
1149
|
}
|
|
1417
|
-
const { ciphertext: ciphertextPayload, authTag } = (0, import_core.
|
|
1150
|
+
const { ciphertext: ciphertextPayload, authTag } = await (0, import_core.encryptAES128CCM)(plaintextPayload, key, iv, authData, SECURITY_S2_AUTH_TAG_LENGTH);
|
|
1418
1151
|
this.key = key;
|
|
1419
1152
|
this.iv = iv;
|
|
1420
1153
|
this.authData = authData;
|
|
@@ -1427,54 +1160,6 @@ let Security2CCMessageEncapsulation = (() => {
|
|
|
1427
1160
|
]);
|
|
1428
1161
|
return super.serialize(ctx);
|
|
1429
1162
|
}
|
|
1430
|
-
async serializeAsync(ctx) {
|
|
1431
|
-
const securityManager = assertSecurityTX(ctx, this.nodeId);
|
|
1432
|
-
this.ensureSequenceNumber(securityManager);
|
|
1433
|
-
await this.maybeAddSPANExtensionAsync(ctx, securityManager);
|
|
1434
|
-
const unencryptedExtensions = this.extensions.filter((e) => !e.isEncrypted());
|
|
1435
|
-
const encryptedExtensions = this.extensions.filter((e) => e.isEncrypted());
|
|
1436
|
-
const unencryptedPayload = import_safe2.Bytes.concat([
|
|
1437
|
-
import_safe2.Bytes.from([
|
|
1438
|
-
this.sequenceNumber,
|
|
1439
|
-
(encryptedExtensions.length > 0 ? 2 : 0) | (unencryptedExtensions.length > 0 ? 1 : 0)
|
|
1440
|
-
]),
|
|
1441
|
-
...unencryptedExtensions.map((e, index) => e.serialize(index < unencryptedExtensions.length - 1))
|
|
1442
|
-
]);
|
|
1443
|
-
const serializedCC = await this.encapsulated?.serializeAsync(ctx) ?? new import_safe2.Bytes();
|
|
1444
|
-
const plaintextPayload = import_safe2.Bytes.concat([
|
|
1445
|
-
...encryptedExtensions.map((e, index) => e.serialize(index < encryptedExtensions.length - 1)),
|
|
1446
|
-
serializedCC
|
|
1447
|
-
]);
|
|
1448
|
-
const destinationTag = getDestinationIDTX.call(this);
|
|
1449
|
-
const messageLength = this.computeEncapsulationOverhead() + serializedCC.length;
|
|
1450
|
-
const authData = getAuthenticationData(ctx.ownNodeId, destinationTag, ctx.homeId, messageLength, unencryptedPayload);
|
|
1451
|
-
let key;
|
|
1452
|
-
let iv;
|
|
1453
|
-
if (this.isSinglecast()) {
|
|
1454
|
-
iv = await securityManager.nextNonceAsync(this.nodeId, true);
|
|
1455
|
-
const { keyCCM } = (
|
|
1456
|
-
// Prefer the overridden security class if it was given
|
|
1457
|
-
this.securityClass != void 0 ? securityManager.getKeysForSecurityClass(this.securityClass) : securityManager.getKeysForNode(this.nodeId)
|
|
1458
|
-
);
|
|
1459
|
-
key = keyCCM;
|
|
1460
|
-
} else {
|
|
1461
|
-
const keyAndIV = await securityManager.getMulticastKeyAndIVAsync(destinationTag);
|
|
1462
|
-
key = keyAndIV.key;
|
|
1463
|
-
iv = keyAndIV.iv;
|
|
1464
|
-
}
|
|
1465
|
-
const { ciphertext: ciphertextPayload, authTag } = await (0, import_core.encryptAES128CCMAsync)(plaintextPayload, key, iv, authData, SECURITY_S2_AUTH_TAG_LENGTH);
|
|
1466
|
-
this.key = key;
|
|
1467
|
-
this.iv = iv;
|
|
1468
|
-
this.authData = authData;
|
|
1469
|
-
this.authTag = authTag;
|
|
1470
|
-
this.ciphertext = ciphertextPayload;
|
|
1471
|
-
this.payload = import_safe2.Bytes.concat([
|
|
1472
|
-
unencryptedPayload,
|
|
1473
|
-
ciphertextPayload,
|
|
1474
|
-
authTag
|
|
1475
|
-
]);
|
|
1476
|
-
return super.serializeAsync(ctx);
|
|
1477
|
-
}
|
|
1478
1163
|
computeEncapsulationOverhead() {
|
|
1479
1164
|
const extensionBytes = this.extensions.map((e) => e.computeLength()).reduce((a, b) => a + b, 0);
|
|
1480
1165
|
return super.computeEncapsulationOverhead() + 2 + SECURITY_S2_AUTH_TAG_LENGTH + extensionBytes;
|