Assine digitalmente dados no navegador usando cartão inteligente ou certificado

Preciso criar assinatura digital de alguns dados XML com um certificado de cliente (cartão inteligente) usando o navegador da web. Normalmente, eu costumava fazer isso com um applet java em execução no lado do cliente. O benefício de ser multiplataforma em termos de SO e navegadores.

No entanto, esta opção está ficando cada vez mais difícil de implementar e apoiar a longo prazo. Praticamente todos os navegadores exigem algum tipo de ação para executar esse applet, a assinatura de código com um certificado confiável é quase obrigatória atualmente, novos atributos de manifesto e assim por diante. Bem, não há nada de errado com uma camada extra de segurança e eu estou bem com isso.

No entanto, o Google Chrome, em abril de 2015, interrompeu o suporte a applets Java (e outros plugins também) - existe uma opção de configuração, mas ela não estará disponível por muito mais tempo, conforme indicadoaqui.
O Mozilla Firefox não tem data de final de suporte para NPAPI, mas eles chamam de "tecnologia legada"
Quanto ao IE - ele não suporta plugins na interface moderna.

Portanto, com os applets Java não são mais uma opção universal, quais são minhas escolhas?
O que eu investiguei até agora:

ActiveX - apenas IESilverlight - sem acesso a certificados e como um plugin enfrenta as mesmas limitações que JavaExtensões específicas do navegador; Por exemplo, o Firefox até a versão 33 costumava ter window.crypto.signText, mas não maisaplicativos locais instalados no cliente - não é fácil de instalar, oferecer suporte, desenvolver e atualizar para vários sistemas operacionais e suas diferentes versões.Criptografia da Web - "somente funções criptográficas básicas", sem suporte de certificados

Eu fiquei sem idéias. Todas as sugestões são bem-vindas e apreciadas.

questionAnswers(2)

yourAnswerToTheQuestion