Skip to content

Start fails due to "Digest method not supported" #1366

@anyc

Description

@anyc

Hello,

I am trying to start zwave-js-server on a system I built myself and the start of zwave-server fails with:

systemd[1]: Started Zwave JS server.
zwavejs-start.sh[11294]: Error in driver ZWaveError: Restoring the network from cache failed: Error: Digest method not supported
zwavejs-start.sh[11294]:     at new Hash (node:internal/crypto/hash:80:19)
zwavejs-start.sh[11294]:     at Object.createHash (node:crypto:142:10)
zwavejs-start.sh[11294]:     at digest (file:///home/user/node_modules/@zwave-js/core/src/crypto/primitives/primitives.node.ts:196:22)
zwavejs-start.sh[11294]:     at DeviceConfig.getHash (file:///home/user/node_modules/@zwave-js/config/src/devices/DeviceConfig.ts:915:10)
zwavejs-start.sh[11294]:     at ZWaveNode.loadDeviceConfig (file:///home/user/node_modules/zwave-js/src/lib/node/Node.ts:1367:8)
zwavejs-start.sh[11294]:     at ZWaveNode.deserialize (file:///home/user/node_modules/zwave-js/src/lib/node/Node.ts:4923:3)
zwavejs-start.sh[11294]:     at ZWaveController.deserialize (file:///home/user/node_modules/zwave-js/src/lib/controller/Controller.ts:7171:4)
zwavejs-start.sh[11294]:     at Driver.restoreNetworkStructureFromCache (file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:6975:4)
zwavejs-start.sh[11294]:     at file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:1720:7
zwavejs-start.sh[11294]:     at ZWaveController.initNodes (file:///home/user/node_modules/zwave-js/src/lib/controller/Controller.ts:1852:3) (ZW0107)
zwavejs-start.sh[11294]:     at Driver.restoreNetworkStructureFromCache (file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:6988:5)
zwavejs-start.sh[11294]:     at file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:1720:7
zwavejs-start.sh[11294]:     at ZWaveController.initNodes (file:///home/user/node_modules/zwave-js/src/lib/controller/Controller.ts:1852:3)
zwavejs-start.sh[11294]:     at Driver.initializeControllerAndNodes (file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:1714:4)
zwavejs-start.sh[11294]:     at Immediate.<anonymous> (file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:1466:5) {
zwavejs-start.sh[11294]:   code: 107,
zwavejs-start.sh[11294]:   context: undefined,
zwavejs-start.sh[11294]:   transactionSource: undefined
zwavejs-start.sh[11294]: }
zwavejs-start.sh[11294]: Starting server on <all interfaces>:3000
zwavejs-start.sh[11294]: ZwaveJS server listening on <all interfaces>:3000
zwavejs-start.sh[11294]: Error in driver ZWaveError: Failed to initialize the driver: Error: Digest method not supported
zwavejs-start.sh[11294]:     at new Hash (node:internal/crypto/hash:80:19)
zwavejs-start.sh[11294]:     at Object.createHash (node:crypto:142:10)
zwavejs-start.sh[11294]:     at digest (file:///home/user/node_modules/@zwave-js/core/src/crypto/primitives/primitives.node.ts:196:22)
zwavejs-start.sh[11294]:     at DeviceConfig.getHash (file:///home/user/node_modules/@zwave-js/config/src/devices/DeviceConfig.ts:915:10)
zwavejs-start.sh[11294]:     at ZWaveNode.loadDeviceConfig (file:///home/user/node_modules/zwave-js/src/lib/node/Node.ts:1367:8)
zwavejs-start.sh[11294]:     at ZWaveNode.overwriteConfig (file:///home/user/node_modules/zwave-js/src/lib/node/Node.ts:2328:4)
zwavejs-start.sh[11294]:     at ZWaveNode.interviewInternal (file:///home/user/node_modules/zwave-js/src/lib/node/Node.ts:1111:4)
zwavejs-start.sh[11294]:     at Driver.interviewNodeInternal (file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:2128:10)
zwavejs-start.sh[11294]:     at Driver.initializeControllerAndNodes (file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:1982:5)
zwavejs-start.sh[11294]:     at Immediate.<anonymous> (file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:1466:5) (ZW0100)
zwavejs-start.sh[11294]:     at Immediate.<anonymous> (file:///home/user/node_modules/zwave-js/src/lib/driver/Driver.ts:1486:6) {
zwavejs-start.sh[11294]:   code: 100,
zwavejs-start.sh[11294]:   context: undefined,
zwavejs-start.sh[11294]:   transactionSource: undefined
zwavejs-start.sh[11294]: }
zwavejs-start.sh[11294]: Shutting down
zwavejs-start.sh[11294]: Closing server...
zwavejs-start.sh[11294]: Server closed..
zwavejs-start.sh[11294]: DNS Service Discovery enabled
systemd[1]: zwavejs.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: zwavejs.service: Failed with result 'exit-code'.

zwavejs-start.sh just calls node_modules/.bin/zwave-server in my case.

I installed zwave-js-server using npm i @zwave-js/server. The system uses NodeJS v20.12.2 and OpenSSL 1.1.1. OpenSSL supports MD5, SHA1 and SHA256.

With this small test script, I was able to reproduce the problem:

var crypto = require("crypto");
var shasum = crypto.createHash("sha-256"); 
shasum.update("hello world", "utf-8"); 
console.log(shasum.digest("base64"));

If I change sha-256to sha256it works.

Is there something I am doing wrong?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions