Erro Assinatura: Index was outside the bounds of the array.

Ao tentar assinar um arquivo XML com um certificado digital do tipo A1 ocorre o seguinte erro:

"(...) Index was outside the bounds of the array. (...)"

O erro acima está ocorrendo quando são instalados o aplicativo de gerenciamento de certificados digitais que acompanha o certificado digital.

A solução reportada por um usuário consistiu na:

1. desinstalação do gerenciador de certificados digitais que acompanha o certificado digital;
2. instalação da cadeia de certificados digitais da AC emissora do certificado digital;
3. instalação do certificado digital (arquivo PFX).

Ou seja, no caso de certificado digital do tipo A1 não é necessário instalar o aplicativo de gerenciamento de certificados digitais fornecido pelo emissor do certificado digital.

Alerta - Certificado Digital A1 da CAIXA ECONÔMICA FEDERAL - CEF

Existe um "macete" para utilizar o certificado digital da CAIXA:

O problema deste certificado é que apesar de ser um certificado digital A1, ele age como se fosse um certificado digital A3 e utiliza o CSP próprio (cefcert.dll que fica na pasta csp da aplicação da caixa), que não tem suporte para o tipo de assinatura do projeto (só funciona para autenticação).

Assim, é necessário fazer com que o certificado utilize o CSP do Windows.

Os passos são:

1.instalar o certificado digital conforme orientação da CEF;
2.verificar o funcionamento do certificado e que o certificado consta da lista de certificados no Internet Explorer;
3.exportar o certificado digital pelo Internet Explorer;
4.desinstalar o aplicativo da CAIXA;
5.verificar se a DLL não ficou na pasta da aplicação da CAIXA;
6.importar o certificado digital exportado no item 3.
Os passos acima funcionam para windows XP e vista, mas não existe garantia de funcionamento para o windows 7, assim se o equipamento tiver windows 7, tente fazer o processo em um equipamento que tenha windows XP, o certificado gerado no item 3 deve funcionar no windows 7.