Pergunta

Estou lutando com o seguinte cenário:

  1. Uma mensagem XML é criada no lado do cliente e assinada digitalmente usando a janela de Mozilla.crypto.signtext. Após a assinatura, a mensagem e a assinatura são transmitidas por um serviço da web (.NET) para o servidor. Tudo está bem até este ponto.

  2. No servidor, o XML deve ser incluído em outro documento XML, que é acessível ao público. A assinatura também deve ser publicada para conceder a não repudiação.

P: Existe uma opção suave para converter o PKCS#7 destacado em XML-DSIG (por exemplo, funcionalidade dentro da estrutura .NET)?

P2: Ou é possível criar o XML-DSIG já do lado do cliente sem usar plugins externos?

TNX para sua ajuda!

Alois Paulin

Foi útil?

Solução

Devido à natureza dos formatos de assinatura digital XML e PKCS#7, não é possível converter de um para o outro.

Em uma explicação muito simplificada, a assinatura em PKCS#7 O formato contém, entre outras coisas, alguma estrutura de dados específica chamada Digestinfo que contém o Data Digest e um OID (identificador de objeto) e foi cifrado com a chave privada do usuário. o Xml-dsig O formato aplica a etapa final do algoritmo criptográfico (novamente com a chave privada do usuário) a um valor de dados diferente calculado a partir da digerir os dados XML original e algumas estruturas de dados XML-DSIG específicas. Portanto, como os dois valores cifrados não serão os mesmos, é possível gerar a assinatura XML-DSIG assinando os dados com a chave privada do usuário, à qual você não terá acesso (portanto, o nome privado).

A partir dessa explicação, a resposta para sua primeira pergunta é "Não, não há opção suave, não é possível".

Portanto, a única opção é gerar o XML-DSIG diretamente no lado do cliente. Isso não é possível usando o JavaScript padrão, definitivamente não com a janela do Firefox.crypto (que gera apenas assinaturas destacadas do PKCS7). Na minha empresa (www.isigma.es), resolvemos que, ao usar um applet, é uma solução comum na indústria de assinatura digital (existem muitas soluções comerciais e também de código aberto). Isso pode não ser uma opção no seu caso, se você não deseja plugins do navegador.

Capicom (o componente ativo/x baseado no Windows que você pode usar em uma configuração da Microsoft) também não gera XML-DSIG, apenas CMS/PKCS7.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top