�
�S�gT{ � �x � d Z ddlZddlZddlmZ ddlmZ ddlZddl Z ddl
Z
ddlmZ ddlm
Z
ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZ ddlZddlmZ ddlZddlZddlZdd
lmZ ddlmZ ddlm Z ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ejJ e&� Z'dZ( G d� d� Z) G d� d� Z*y)zACME client API.� N)�parsedate_tz)�Any)�cast)�List)�Mapping)�Optional)�Set)�Tuple)�Union)�x509)�HTTPAdapter)�parse_header_links)�
challenges)�crypto_util)�errors)�jws)�messages�- c
� � e Zd ZdZdej
ddddfd�Zdej dej fd �Z d
ej dej fd�Z
d8d
ej deej dej fd
�Z
d9d
ej dedej fd�Zd8dedee dej$ fd�Zdej( deej( ej. f fd�Z d8dej$ deej2 dej$ fd�Zdej$ dej2 dej$ fd�Zdej$ dej$ fd�Z d9dej$ dej2 dedej$ fd�Z d9dej$ dej2 dedej$ fd�Zdej@ de!ddfd�Z"defd �Z#d!e$d"e$dej. fd#�Z%d$ej. d%ede&e fd&�Z'e(d'edddej
fd(�� Z)e( d:d$ej. d)ee d*ee dej fd+�� Z*d
ej d,ej dej fd-�Z+d!e$d"e$dej. fd.�Z,d
ej dej fd/�Z-dej( dej( fd0�Z. d:d$ej. d1eej^ d)ee dej( fd2�Z0d3ejb d$e2jf dejh fd4�Z5e(d$ej. d5e!dej2 fd6�� Z6dej@ de!d'eddfd7�Z7y);�ClientV2zuACME client for a v2 API.
:ivar messages.Directory directory:
:ivar .ClientNetwork net: Client network.
� directory�net�
ClientNetwork�returnNc � � || _ || _ y)z�Initialize.
:param .messages.Directory directory: Directory Resource
:param .ClientNetwork net: Client network.
N)r r )�selfr r s �{/build/snapcraft-certbot-29b1212f749eeba2f1dece1adfe9a83a/parts/certbot/install/lib/python3.12/site-packages/acme/client.py�__init__zClientV2.__init__- s � � #������ �new_accountc � � | j | j d |� }|j dk( r0d|j v r"t j
|j d � �| j
|� }|| j _ |S )z�Register.
:param .NewRegistration new_account:
:raises .ConflictError: in case the account already exists
:returns: Registration Resource.
:rtype: `.RegistrationResource`
�
newAccount�� �Location) �_postr �status_code�headersr �
ConflictError�_regr_from_responser �account)r r �response�regrs r r zClientV2.new_account6 su � � �:�:�d�n�n�\�:�K�H�����3�&�:��9I�9I�+I��&�&�x�'7�'7�
�'C�D�D��'�'��1��������r r, c �p � | j |d� | j _ | j j S )z�Query server about registration.
:param messages.RegistrationResource regr: Existing Registration
Resource.
T)�_get_v2_accountr r* �r r, s r �query_registrationzClientV2.query_registrationI s- � � �/�/��d�;������x�x���r �updatec �� � | j |� }|�|j n|}t j di t |� ��}| j ||�� }|| j _ |S )aK Update registration.
:param messages.RegistrationResource regr: Registration Resource.
:param messages.Registration update: Updated body of the
resource. If not provided, body will be taken from `regr`.
:returns: Updated Registration Resource.
:rtype: `.RegistrationResource`
��body� )r. r4 r �UpdateRegistration�dict�_send_recv_regrr r* )r r, r1 r4 �updated_regrs r �update_registrationzClientV2.update_registrationU sa � � �#�#�D�)��$�n����&���*�*�:�T�&�\�:���+�+�D�t�+�<��'������r �update_bodyc �v � d | j _ |j j d�� }| j | j
d |� }|j d }|j |r-t j j |j � � n|j |�� }|| j _ |S )NT)�only_return_existingr" |