Библиотека Javascript для расшифровки файлов SMIME.p7m

Я ищу способ расшифровки писем S/MIME на стороне клиента. Я специально не хочу, чтобы клиент делился секретным ключом с сервером, и поэтому мне нужно найти способ, чтобы клиент мог делать все самостоятельно.

Мне не нужно поддерживать несколько браузеров, поэтому использовать что-то вроде window.Crypto, который в настоящее время работает только с Mozilla Firefox, вполне подойдет. Тем более, что браузер на клиенте каким-то образом должен будет получить доступ к хранилищу сертификатов, которое находится на клиентском компьютере (для доступа к закрытому ключу - с согласия пользователя, конечно).

Я просто заблудился относительно того, с чего начать, так как почти невозможно найти какой-либо пример или учебное пособие по выполнению чего-либо подобного, поэтому любой код, которым вы можете поделиться, будет более чем приветствоваться.

2 ответа

Я не знаком с файлами SMIME.p7m, но, похоже, они зашифрованы с помощью pkcs7.

Возможно, вам повезет с модулем nodejs cryptojs, который, похоже, будет поддерживать pkcs7.

Поскольку nodejs - это JavaScript, если он не работает "из коробки", это будет хорошей отправной точкой.

Чаще всего модули nodejs создаются для поддержки nodejs и использования браузера.

Если он не поддерживает браузеры из коробки, <keygen> HTML-тег и связанные с ним функции (для хранения ключей и т. д.) могут представлять интерес.

У нас есть примеры шифрования / дешифрования и подписания / проверки сообщений S/MIME в Javascript с использованием Web Crypto здесь - https://github.com/PeculiarVentures/pkijs-es6/tree/master/examples/

Этот подход будет работать как в браузере, так и в узле, если на узле вы используете полизаполнение WebCrypto, например - https://github.com/PeculiarVentures/node-webcrypto-ossl

Другие вопросы по тегам