извлечь метку времени из p7s (файл подписи)

Я ищу, как извлечь информацию о метке времени (когда файл подписан) из файла 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
задан 17 December 2020 в 11:29
1 ответ

Для просмотра содержимого подписанного файла 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.

2
ответ дан 17 December 2020 в 09:43

Теги

Похожие вопросы