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          

길이가 2165인 오프셋 19137에서 데이터를 추출하고 있습니다(오프셋 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를 사용하여 필터링할 수 있습니다 .grepsigningTime

OpenSSL의 텍스트 출력 필터링이 적합하지 않은 경우 ASN.1 구조의 내용을 검사하는 데 더 적합한 다른 도구가 있습니다. 예를 들어 Python에 능숙하다면 다음을 사용할 수 있습니다.pyasn1crypto.

관련 정보