Я ищу, как извлечь информацию о метке времени (когда файл подписан) из файла 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?
Для просмотра содержимого подписанного файла PKCS#7 можно использовать команду OpenSSL cms
. Предполагая, что у вас нет сертификата подписывающего лица и, следовательно, вы не проверяете подпись и только просматриваете структуру, вы можете использовать:
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.