Como ver quais atributos são assinados nos pkcs # 7?
Eu tenho um arquivo pkcs # 7, que contém dados assinados. Verifica com sucesso:
$ openssl smime -verify -in data.p7s -CAfile root-certificate.pem
Verification successful
Signed data
Mas quando extraio a parte assinada, não vejo que ela seja realmente a mesma que foi assinada. Quero dizer os seguintes passos:
$ openssl asn1parse -in data.p7s
...
35:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data
46:d=4 hl=2 l=inf cons: cont [ 0 ]
48:d=5 hl=2 l=inf cons: OCTET STRING
50:d=6 hl=2 l= 5 prim: OCTET STRING :(my data is here in plaintext)
...
(then the signed block starts:)
2861:d=6 hl=2 l= 9 prim: OBJECT :rsaEncryption
2872:d=6 hl=2 l= 0 prim: NULL
2874:d=5 hl=4 l= 256 prim: OCTET STRING [HEX DUMP]:<signed data is here>
Eu cortei o[HEX DUMP]
com os dados assinados:
$ dd if=data.p7s of=signed-part.bin bs=1 skip=2878 count=256
Descriptografá-lo com a chave pública correspondente:
$ openssl rsautl -verify -in signed-part.bin -pubin -inkey root-public-key.pem -out verified-data.bin
e olhe dentro do resultado:
$ openssl asn1parse -inform der -in verified-data.bin
0:d=0 hl=2 l= 33 cons: SEQUENCE
2:d=1 hl=2 l= 9 cons: SEQUENCE
4:d=2 hl=2 l= 5 prim: OBJECT :sha1
11:d=2 hl=2 l= 0 prim: NULL
13:d=1 hl=2 l= 20 prim: OCTET STRING [HEX DUMP]:<hash here>
este[HEX DUMP]
énão a soma SHA1 dos meus dados originais.
Eu não entendo por que o hash é diferente. Obviamente, é um hash de algo diferente dos meus dados originais. O hash também abrange quaisquer "atributos autenticados"? Se sim, como ver exatamente quais atributos foram hash e assinados?