Библиотека 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