Использование открытого ключа для проверки подписи в Node.JS crypto

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

11
задан gevorg 27 June 2016 в 09:45
поделиться