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

извлечь временную метку из 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

Вы можете использовать команду 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.

Связанный контент