�
N�g�: �
�� � d Z ddlmZ ddlmZ ddlZddlZddlZddlmZ ddlmZ ddlm Z ddl
mZ dd lm
Z
dd
lmZ ddlmZ ddlmZ dd
lmZ ddlmZ ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ej@ e!� Z" G d� d� Z#de$de ee$ ee$ f fd�Z%de$de$de$de&de'f
d�Z(dddd d!ejR de$ddf
d"�Z*ddd!ejR de$ddfd#�Z+de$d$e$d%e$de'fd&�Z,y)'z*Tools for checking certificate revocation.� )�datetime)� timedeltaN)�PIPE)�Optional)�Tuple)�x509)�InvalidSignature)�UnsupportedAlgorithm)�default_backend)�hashes)�
serialization)�ocsp)�crypto_util)�errors)�util)�getenv)�
RenewableCertc �l � e Zd ZdZddeddfd�Zdedefd�Zdded ed
e defd�Z
ded eded
ed
e defd�Zy)�RevocationCheckerzEThis class figures out OCSP checking on this system, and performs it.�enforce_openssl_binary_usage�returnNc �J � d| _ || _ | j r�t j d� st j d� d| _ y t
j g d�t t ddt j � �� }d|j v r d� | _ y d � | _ y y )
NF�opensslz-openssl not installed, can't check revocationT)r r �-header�var�val)�stdout�stderr�universal_newlines�check�envz Missing =c � � d| z gS )NzHost=� ��hosts �|/build/snapcraft-certbot-2c33630aaf29c47357e5a1683f659d3d/parts/certbot/install/lib/python3.12/site-packages/certbot/ocsp.py�<lambda>z,RevocationChecker.__init__.<locals>.<lambda>0 s
� �w��~�.>� � c �
� d| gS )N�Hostr# r$ s r& |