Использование открытого ключа для проверки подписи в криптографии Node.JS - PullRequest
11 голосов
/ 02 июня 2011

Есть ли хороший способ проверить подписи в 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

Крипто модуль в Node.js v0.5 позволяет проверять как с сертификатами, так и с открытыми ключами (RSA или X.509)

1 Ответ

1 голос
/ 08 июля 2011

Почему бы вам просто не взять свой открытый ключ и не поместить его в самозаверяющий сертификат? Тогда криптомодуль узла будет работать нормально для вас.

http://www.akadia.com/services/ssh_test_certificate.html

Я думаю, что это будет гораздо эффективнее, чем разветвление подпроцесса openssl.

...