Ответ 1
Все сообщения ниже предлагают подписку на основе RSA.
Вы можете подписать его в чистом Javascript + Web Crypto api.
Ключевые моменты: извлечение ключа с тегом HTML5 <file>
, использование forge js library для работы с ключами и хэшами и canonize xml с deoxxa и использовать веб-криптографию для подписывания/проверки (кроме того, forge также может подписываться/проверяться, но веб-крипто быстрее).
Если вы подписываете xmls с исключительной канонизацией, используйте deoxxa (вы должны его прокси-серверу перед использованием). Если вы подпишете xml и вам нужно включить инклюзивную канонизацию, используйте мою вилку deoxxa (размещенную на собственном сервере gitlab). Я был слишком ленив, чтобы переименовать эксклюзив в include, но мой .js файл работает включительно, поверьте мне) Пример использования forge
+ deoxxa
+ html5_p12_file_read
в signJs, verifyJs files.
Кроме того, forge поддерживает подписание двоичных файлов (CMS или более старый стиль имен PKCS # 7), но в моих JSP файлах нет такого примера. О OCSP и тестовом тестировании в JS-I открыли проблему в кузнице, но, похоже, слишком сложно обрабатывать протоколы CRL/OCSP и TSP в JS, почему вы можете подписывать JS, но проверка может быть разделена - проверка хэша выполняется в JS (использование forge и дополнительный код, показанный в моем JSP), но в вашем веб-сервисе выполняются интеллектуальные проверки, такие как CRL, цепочка и т.д. - вы можете извлечь сертификат X509 и отправить его к вашему веб-сервису и использовать bouncycastle или любую другую классную библиотеку для интеллектуальных проверок. X509Certificate - это общедоступная информация, без проблем при отправке ее на обслуживание, но проверка дайджестов требует наличия файлов, и вы можете не отправлять файлы в службу и, таким образом, использовать кузницу для проверки дайджеста, которая отображается в моем файле подтверждения.
Мой JS-код не реорганизуется и даже не работает в ООП, и в настоящее время я не работаю над этим проектом, но на каком-то этапе у меня была полная работа xml RSA, играющая с ключами p12 в файловой системе.
Последний JSP в моем репо использует forge только для разбора файлов p12 и предоставления ключей от них API веб-криптографии, но в моей истории репо также есть чистый знак/проверка Javascript (если вам не нравится веб-крипто api). см. историю ветвей проекта.