Your IP : 216.73.216.52


Current Path : /snap/certbot/5451/lib/python3.12/site-packages/certbot/_internal/__pycache__/
Upload File :
Current File : //snap/certbot/5451/lib/python3.12/site-packages/certbot/_internal/__pycache__/san.cpython-312.pyc

�

q[�i,�	�f�dZddlZddlmZddlmZmZddlmZ	ddl
mZddlm
Z
Gd�d	�ZGd
�de�ZGd�d
e�Zdeedeefd�Zdeedeeeeeffd�Zdeedeedeefd�Zdeedefd�Zdej0dej2deeeeeffd�Zy)zFTypes for representing IP addresses and DNS names internal to Certbot.�N)�abstractmethod)�Any�Iterable)�crypto_util)�x509)�enforce_domain_sanityc�&�eZdZdZedefd��Zy)�SANzyA domain or IP address.

    These are Certbot-internal types, independent of the acme module's messages.Identifier.
    �returnc��y)z+Return True if this is a wildcard DNS name.N���selfs ��/build/snapcraft-certbot-8ace4148c346cc61c23dfdbf9a13f72e/parts/certbot/install/lib/python3.12/site-packages/certbot/_internal/san.py�is_wildcardzSAN.is_wildcards��N)�__name__�
__module__�__qualname__�__doc__r�boolrr
rrr
r
s"����:�T�:��:rr
c�`�eZdZdZdeddfd�Zdefd�Zdefd�Zdefd�Z	d	e
defd
�Zdefd�Z
y)�DNSNamez�An FQDN or wildcard domain name.

    Raises ConfigurationError if the domain name is syntactically invalid.

    Normalizes inputs by converting to lowercase and removing a trailing dot, if present.
    �dns_namerNc�Z�t|t�std��t|�|_y)Nz(tried to initialize DNSName with non-str)�
isinstance�str�	TypeErrorrr)rrs  r�__init__zDNSName.__init__s$���(�C�(��F�G�G�-�h�7��
rc��|jS�N�rrs r�__str__zDNSName.__str__ s���}�}�rc�,�t|j�Sr!)�hashrrs r�__hash__zDNSName.__hash__#s���D�M�M�"�"rc� �d|jzS)NzDNS(%s)r"rs r�__repr__zDNSName.__repr__&s���4�=�=�(�(r�otherc��|xtd�x�\|j|jk(Std�x�\y	tdt	|�����)Nr
Fz!DNSName SAN compared to non-SAN: )rr�	IPAddressr�type�rr)s  r�__eq__zDNSName.__eq__)sK�������}�}����6�6��������"C�D��K�=� Q�R�Rrc�8�|jjd�S)z+Return True if this DNS name is a wildcard.z*.)r�
startswithrs rrzDNSName.is_wildcard2s���}�}�'�'��-�-r�rrrrrrr#�intr&r(rrr.rr
rrrrs`���8��8��8�
���#�#�#�)�#�)�S�C�S�D�S�.�T�.rrc�`�eZdZdZdeddfd�Zdefd�Zdefd�Zdefd�Z	d	e
defd
�Zdefd�Z
y)r+zDAn IP address (IPv4 or IPv6).

    Validated upon construction.
    �
ip_addressrNc�8�tj|�|_yr!)�	ipaddressr4)rr4s  rrzIPAddress.__init__;s��#�.�.�z�:��rc�,�t|j�Sr!)rr4rs rr#zIPAddress.__str__>s���4�?�?�#�#rc�,�t|j�Sr!)r%r4rs rr&zIPAddress.__hash__As���D�O�O�$�$rc� �d|jzS)NzIP(%s))r4rs rr(zIPAddress.__repr__Ds���$�/�/�)�)rr)c��|xtd�x�\|j|jk(Std�x�\y	tdt	|�����)Nr
Fz#IPAddress SAN compared to non-SAN: )r+r4rrr,r-s  rr.zIPAddress.__eq__GsM���������%�*:�*:�:�:��������"E�d�5�k�]� S�T�Trc��y)z
Always False.Fr
rs rrzIPAddress.is_wildcardPs��rr1r
rrr+r+6s`���;�3�;�4�;�$��$�%�#�%�*�#�*�U�C�U�D�U��T�rr+�namesrc��g}|D]}	|jt|���|S#t$r|jt|��Y�GwxYw)zDTurn a list of strings in to a list of SANs based on how they parse.)�appendr+�
ValueErrorr)r<�sans�names   r�guessrBTsS���D��'��	'��K�K�	�$��(�'�
�K���	'��K�K���
�&�	'�s�'�#A
�A
r@c���g}g}|D]X}|xtd�x�\|j|��#td�x�\|j|��A	tdt	|�����||fS)zQSplit a list of SANs into a list of DNSNames and one of IPAddress, in that order.r
zSAN of type )r+r>rrr,)r@�domains�ip_addresses�ss    r�splitrG^st���G��L�
�:�������#�#�A�&�������q�!����,�t�A�w�i� 8�9�9�:��L� � r�	dns_namesrEc�0�t|�t|�zS)z7Combine a list of DNS names and a list of IP addresses.)�list)rHrEs  r�joinrKls���	�?�T�,�/�/�/rc�@�djtt|��S)zEReturn the list of SANs in string form, separated by comma and space.z, )rK�mapr)r@s r�displayrNps���9�9�S��d�^�$�$r�subject�extsc��tj||�\}}|D�cgc]
}t|���c}|D�cgc]
}t|���c}fScc}wcc}w)a�Get all DNS names and IP addresses, plus the first Common Name from subject.

    The CN will be first in the list, if present. It will always be interpreted
    as a DNS name.

    :param subject: Name of the x509 object, which may include Common Name
    :type subject: `cryptography.x509.Name`
    :param exts: Extensions of the x509 object, which may include SANs
    :type exts: `cryptography.x509.Extensions`

    :returns: Tuple containing a list of DNSNames and a list of IPAddresses
    )�acme_crypto_util�get_identifiers_from_x509rr+)rOrPrHrE�d�is      r�	from_x509rVtsK��/�H�H��RV�W��I�|� )�*�1�G�A�J�*�<�,P�a�Y�q�\�,P�P�P��*��,Ps
�A�A)rr6�abcr�typingrr�acmerrR�cryptographyr�certbot.utilrr
rr+rrJrB�tuplerGrKrN�Name�
ExtensionsrVr
rr�<module>r_s���L��� �0��.�:�:� .�c� .�D���<��#���4��9��!���
�!�%��W�
�t�I��(F�"G�!�0�H�W�%�0�X�i�5H�0�T�RU�Y�0�%�(�3�-�%�C�%�Q�t�y�y�Q����Q�E�$�w�-�QU�V_�Q`�B`�<a�Qr