Есть ли хороший способ проверить подписи в Node.JS(v0.4 +) с открытыми ключами?
Текущий крипто-модуль позволяет это с сертификатами, но не с открытыми ключами. Например:
var crypto = require("crypto");
verifier = crypto.createVerifier("sha1");
verifier.update("signed data");
verifier.verify(CERT, signature);
Переменная CERT
должна быть подписана с сертификатом (я предполагаю, что открытый ключ извлекается из этого), но все, что у меня есть, - это открытый ключ, а не сертификат.
Единственный надежный способ добиться этого - это сброс содержимого данных, открытого ключа и подписи в файлы и выполнение openssl dgst
fs.writeFileSync("public.key", pubkey);
fs.writeFileSync("sig.sha1", signature);
fs.writeFileSync("data.txt", data);
exec("openssl dgst -sha1 -verify public.key -signature sig.sha1 data.txt", ...)
Но создание (и удаление) файлов каждый раз, когда мне нужно проверить подпись, похоже на общий отход.
Любые хорошие идеи, как это сделать лучше?
ОБНОВЛЕНИЕ 2011-08-03
Crypto module в Node.js v0.5 позволяет проверять как с сертификатами, так и с открытыми ключами (RSA или X.509)