Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
anyc opened this issue Dec 18, 2024 · 1 comment
Open

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

anyc opened this issue Dec 18, 2024 · 1 comment

Comments

@anyc
Copy link

anyc commented Dec 18, 2024

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?

@anyc
Copy link
Author

anyc commented Dec 19, 2024

I replaced all occurrences of "sha-256" with "sha256" and now the server starts normally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant