Gostaria de validar manualmente o documento PDF assinado da RSA, mas não estou recebendo assinatura diferente de um codificado dentro do PDF. Aqui estão os passos que eu segui, qualquer ajuda / dicas realmente apreciadas.
- Eu fiz um simples texto em PDF (~ 1Kb)
- Eu tenho gerado o arquivo pfx openssl com a chave RSA de 2048 bits
- Eu fiz um upload da chave mencionada no usuário do Windows certmgr
- Eu usei chave mencionada para assinar PDF via JSignPdf 1.6.3 (algoritmo de hash sha-256)
A saída das etapas acima é documento PDF devidamente assinado (barra superior verde). Em seguida, usei o notepad ++ para remover o campo contents conforme descrito na documentação da Adobe para receber o arquivo bruto para calcular se o hash corresponde à estrutura de conteúdo interno incorporado. Este passo foi bem sucedido no meu SHA-256.
Aqui está a saída do decodificador ASN.1 para o valor do campo de conteúdo do PDF:
2.16.840.1.101.3.4.2.1sha-256 (Algoritmo NIST)
1.2.840.113549.1.9.3contentType (PKCS # 9)
1.2.840.113549.1.7.1data (PKCS # 7)
1.2.840.113549.1.9.4messageDigest (PKCS # 9) 32 bytes
E271FBADC18080C7E8BD5F0FFBCA0BD77E488309E450D28B79B720D08F69F3FC
1.2.840.113549.1.1.1rsaEncryption (PKCS # 1) 256 bytes
6547B3C9658AA8C1C259A97F1B336A099677013EDABE315F9C18C4CE6B6341CAA7054…
Eu sou capaz de obter o mesmo valor calculando SHA-256 neste arquivo modificado manualmente como aquele incorporado em PDF (E271FB *).
O problema que estou enfrentando é que não consigo obter o último valor rsaEncryption manualmente no mesmo arquivo compatível com o sha-256 ou apenas com base no hash mencionado.
Aqui está o que eu tentei ..
- openssl dgst -sign ./domain.key file_hash.pdf> signature.bin
- openssl dgst -sha256 -sign ./domain.key -out signature.bin file_hash.pdf
Onde file_hash.pdf é o arquivo que sha-256 corresponde ao PDF em verde de JSignPDF e domain.key é a mesma chave importada para o Windows (com texto --- begin private key ---).
Você pode me dizer o que estou fazendo errado no final ou como posso alcançar esse valor 6547B *?