Назад | Перейти на главную страницу

В чем разница между TVOCache и URLCache в Microsoft CAPI2?

В журнале CAPI2 я вижу несколько CertVerifyRevocation события, которые имеют место TvoCache и некоторые, у которых есть местоположение UrlCache для подтверждения того же сертификата:

<Event>
  <UserData />
    <CertVerifyRevocation>
      <Certificate fileRef="AC815F8FCDE5524771442A0F619A04DA00C8728D.cer" subjectName="Kaiblinger Harald" />
      <IssuerCertificate fileRef="410DE74321872F90A43E4969C3224A987EDED648.cer" subjectName="Siemens Issuing CA EE Enc 2016" />
      <Flags value="4" CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG="true" />
      <AdditionalParameters timeToUse="2020-05-05T13:42:48.510Z" currentTime="2020-05-05T13:42:48.510Z" urlRetrievalTimeout="PT19.570S" />
      <RevocationStatus index="0" error="0" reason="0" actualFreshnessTime="P2DT3H33M56S" thirdPartyProviderUsed="C:\Windows\SysWOW64\cryptnet.dll" />
      <CertificateRevocationList location="TvoCache" url="http://ch.siemens.com/pki?ZZZZZZA3.crl" fileRef="A045197D2F9D422F5C163D1F420798D1DD4927C8.crl" issuerName="Siemens Issuing CA EE Enc 2016" />
      <EventAuxInfo ProcessName="OUTLOOK.EXE" />
      <CorrelationAuxInfo TaskId="{A7973502-62E3-4973-8DEE-519E95942DAD}" SeqNumber="16" />
      <Result value="0" />
    </CertVerifyRevocation>
  </UserData>
</Event>

и

<Event>
  <UserData>
    <CertVerifyRevocation>
      <Certificate fileRef="AC815F8FCDE5524771442A0F619A04DA00C8728D.cer" subjectName="Kaiblinger Harald" />
      <IssuerCertificate fileRef="0A9B014FA2E69AB97F6B54B8C07C07B66FA2AA64.cer" subjectName="Siemens Issuing CA EE Enc 2016" />
      <Flags value="4" CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG="true" />
      <AdditionalParameters timeToUse="2020-05-05T13:42:48.510Z" currentTime="2020-05-05T13:42:48.510Z" urlRetrievalTimeout="PT20S" />
      <RevocationStatus index="0" error="0" reason="0" actualFreshnessTime="P2DT3H33M56S" thirdPartyProviderUsed="C:\Windows\SysWOW64\cryptnet.dll" />
      <CertificateRevocationList location="UrlCache" url="http://ch.siemens.com/pki?ZZZZZZA3.crl" fileRef="A045197D2F9D422F5C163D1F420798D1DD4927C8.crl" issuerName="Siemens Issuing CA EE Enc 2016" />
      <EventAuxInfo ProcessName="OUTLOOK.EXE" />
      <CorrelationAuxInfo TaskId="{A7973502-62E3-4973-8DEE-519E95942DAD}" SeqNumber="8" />
      <Result value="0" />
    </CertVerifyRevocation>
  </UserData>
</Event>

Я не могу найти никакой документации о разнице. Может кто-нибудь объяснить разницу?

ТВ здесь означает Time Valid Object, мы можем найти ссылки на TVO в этой документации: CryptGetTimeValidObject (Wincrypt.h / Cryptnet.dll)

Функция CryptGetTimeValidObject извлекает CRL, ответ OCSP или объект CTL, действительный в заданном контексте и времени.

Библиотека динамической компоновки Cryptnet реализует кэш допустимых по времени объектов (TVO), который используется для поддержки функции CryptGetTimeValidObject. Кэш используется глобальным агентом TVO [...]

Агент TVO поддерживает получение объектов TVO по запросу или с помощью автоматического обновления.

Хотя это не документация по упомянутым вами событиям, я думаю, можно с уверенностью предположить, что это просто означает, что CRL был найден в кэше TVO.