.png)
Я хочу узнать, как извлечь информацию о временной метке (когда файл подписан) из файла p7s.
В настоящее время я извлекаю временную метку через asn1parse и использую строку (id-smime-aa-timeStampToken)
Содержимое моего проанализированного файла выглядит следующим образом.
19120:d=7 hl=2 l= 11 prim: OBJECT :id-smime-aa-timeStampToken
19133:d=7 hl=4 l=2165 cons: SET
19137:d=8 hl=4 l=2161 cons: SEQUENCE
Я извлекаю данные из смещения 19137 длиной 2165 (которое, как я предполагал, находится в той же строке, что и смещение hl=4 l=2161). Не уверен, что это правильно, но я получаю правильные данные о времени.
Но есть ли способ извлечь временную метку непосредственно из p7s?
решение1
Вы можете использовать команду OpenSSL cms
для просмотра содержимого подписанного файла PKCS#7. Предполагая, что у вас нет сертификата подписчика, и, следовательно, вы не проверяете подпись, а только просматриваете структуру, вы можете использовать:
openssl cms -verify -noverify -cmsout -print -inform DER -in file.p7s
Это позволит получить подробную информацию о структуре, включая следующую выдержку:
signedAttrs:
object: contentType (1.2.840.113549.1.9.3)
set:
OBJECT:pkcs7-data (1.2.840.113549.1.7.1)
object: signingTime (1.2.840.113549.1.9.5)
set:
GENERALIZEDTIME:Aug 3 23:50:00 2020 GMT
Вы можете отфильтровать это с помощью awk
или grep
по требуемому signingTime
полю.
Если фильтрация текстового вывода OpenSSL вас не устраивает, есть другие инструменты, которые лучше подходят для проверки содержимого любой структуры ASN.1. Если вы разбираетесь, например, в Python, вы можете использоватьpyasn1crypto.