HOME


Mini Shell 1.0
DIR: /snap/certbot/4482/lib/python3.12/site-packages/josepy/__pycache__/
Upload File :
Current File : //snap/certbot/4482/lib/python3.12/site-packages/josepy/__pycache__/util.cpython-312.pyc
�

�S�g�)���dZddlZddlZddlZddlmZmZddlmZddl	m
Z
mZmZm
Z
mZmZmZmZddlmZmZddlmZded	efd
�ZGd�d�ZGd
�d�ZGd�de�ZGd�de�Zedd��ZGd�dee�ZGd�dee�ZGd�d�Z eee ejBe"��ejBe"<y)zJOSE utilities.�N)�Hashable�Mapping)�
ModuleType)�Any�Callable�Iterator�List�Tuple�TypeVar�Union�cast)�ec�rsa)�crypto�func�returnc�>�ttj|��S�N)�classmethod�abc�abstractmethod)rs �{/build/snapcraft-certbot-29b1212f749eeba2f1dece1adfe9a83a/parts/certbot/install/lib/python3.12/site-packages/josepy/util.py�abstractclassmethodrs���s�)�)�$�/�0�0�c��eZdZdZdeejejfddfd�Zde	de
fd�Zejfde
defd	�Zd
e
defd�Zde
fd�Zde	fd
�Zy)�ComparableX509z�Wrapper for OpenSSL.crypto.X509** objects that supports __eq__.

    :ivar wrapped: Wrapped certificate or certificate request.
    :type wrapped: `OpenSSL.crypto.X509` or `OpenSSL.crypto.X509Req`.

    .. deprecated:: 1.15.0
    �wrappedrNc��tjdtd��t|tj
�st|tj�sJ�||_y)Na|The next major version of josepy will remove josepy.util.ComparableX509 and all uses of it as part of removing our dependency on PyOpenSSL. This includes modifying any functions with ComparableX509 parameters or return values. This will be a breaking change. To avoid breakage, we recommend pinning josepy < 2.0.0 until josepy 2.0.0 is out and you've had time to update your code.���
stacklevel)�warnings�warn�DeprecationWarning�
isinstancer�X509�X509Reqr��selfrs  r�__init__zComparableX509.__init__sF���
�
�
Q�

��	
��'�6�;�;�/�:�g�v�~�~�3V�V�V���r�namec�.�t|j|�Sr)�getattrr�r)r+s  r�__getattr__zComparableX509.__getattr__)s���t�|�|�T�*�*r�filetypec���t|jtj�r tj||j�Stj
||j�S)aNDumps the object into a buffer with the specified encoding.

        :param int filetype: The desired encoding. Should be one of
            `OpenSSL.crypto.FILETYPE_ASN1`,
            `OpenSSL.crypto.FILETYPE_PEM`, or
            `OpenSSL.crypto.FILETYPE_TEXT`.

        :returns: Encoded X509 object.
        :rtype: bytes

        )r%rrr&�dump_certificate�dump_certificate_request)r)r0s  r�_dumpzComparableX509._dump,sF���d�l�l�F�K�K�0��*�*�8�T�\�\�B�B��.�.�x����F�Fr�otherc�|�t||j�stS|j�|j�k(Sr)r%�	__class__�NotImplementedr4�r)r5s  r�__eq__zComparableX509.__eq__>s-���%����0�!�!��z�z�|�u�{�{�}�,�,rc�L�t|j|j�f�Sr)�hashr7r4�r)s r�__hash__zComparableX509.__hash__Cs���T�^�^�T�Z�Z�\�2�3�3rc�b�dj|jj|j�S�Nz<{0}({1!r})>)�formatr7�__name__rr=s r�__repr__zComparableX509.__repr__Fs#���$�$�T�^�^�%<�%<�d�l�l�K�Kr)rB�
__module__�__qualname__�__doc__rrr&r'r*�strrr/�
FILETYPE_ASN1�int�bytesr4�boolr:r>rC�rrrrs������f�k�k�6�>�>�&A� B��t��+��+��+�%+�$8�$8�G�c�G�U�G�$-�C�-�D�-�
4�#�4�L�#�Lrrc���eZdZUdZeZegefed<de	e
je
je
je
jffd�Zdedefd�Zdedefd	�Zdefd
�Zd
d�Zy)�
ComparableKeyznComparable wrapper for ``cryptography`` keys.

    See https://github.com/pyca/cryptography/issues/2122.

    r>rc��||_yr)�_wrappedr(s  rr*zComparableKey.__init__Ss�� ��
rr+rc�.�t|j|�Sr)r-rPr.s  rr/zComparableKey.__getattr__^s���t�}�}�d�+�+rr5c�z�t||j�r,|jj|jjurtSt	|jd�r!|j�|j�k(St	|jd�r!|j
�|j
�k(StS)N�private_numbers�public_numbers)r%r7rPr8�hasattrrSrTr9s  rr:zComparableKey.__eq__as����5�$�.�.�1��}�}�&�&�e�n�n�.F�.F�F�!�!�
�T�]�]�$5�
6��'�'�)�U�-B�-B�-D�D�D�
�T�]�]�$4�
5��&�&�(�E�,@�,@�,B�B�B�!�!rc�b�dj|jj|j�Sr@)rAr7rBrPr=s rrCzComparableKey.__repr__ns#���$�$�T�^�^�%<�%<�d�m�m�L�Lrc��t|jtjtj
f�r|S|j
|jj��S)zGet wrapped public key.)r%rPr�RSAPublicKeyWithSerializationr�'EllipticCurvePublicKeyWithSerializationr7�
public_keyr=s rrZzComparableKey.public_keyqsH����M�M�
�
.�
.��0Z�0Z�[�
��K��~�~�d�m�m�6�6�8�9�9rN)rrN)rBrDrErFr8r>rrI�__annotations__rr�RSAPrivateKeyWithSerializationrXr�(EllipticCurvePrivateKeyWithSerializationrYr*rGrr/rKr:rCrZrLrrrNrNJs����#1�H�h�r�3�w��0�	 ���.�.��-�-��7�7��6�6�
8�
�	 �,��,��,�"�C�"�D�"�M�#�M�:rrNc��eZdZdZdefd�Zy)�ComparableRSAKeyz�Wrapper for ``cryptography`` RSA keys.

    Wraps around:

    - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`
    - :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`

    rc
��t|jtj�r|j	�}|j
}t
|j|j|j|j|j|j|j|jf�St|jtj�r<|j�}t
|j|j|jf�St!��r)r%rPrr\rSrTr<r7�p�q�dmp1�dmq1�iqmp�n�erX�NotImplementedError�r)�priv�pubs   rr>zComparableRSAKey.__hash__�s����d�m�m�S�%G�%G�H��'�'�)�D��%�%�C��������������D�I�I�t�y�y�RU�RW�RW�Y\�Y^�Y^�_��
���
�
�s�'H�'H�
I��%�%�'�C�����������6�7�7�!�#�#rN�rBrDrErFrIr>rLrrr_r_|s���
$�#�
$rr_c��eZdZdZdefd�Zy)�ComparableECKeyz�Wrapper for ``cryptography`` EC keys.
    Wraps around:
    - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`
    - :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`
    rc��t|jtj�rh|j	�}|j
}t
|j|jj|j|j|jf�St|jtj�rQ|j�}t
|j|jj|j|jf�St��r)r%rPrr]rSrTr<r7�curver+�x�y�
private_valuerYrhris   rr>zComparableECKey.__hash__�s����d�m�m�R�%P�%P�Q��'�'�)�D��%�%�C����������������t�GY�GY�Z�[�[�
��
�
�r�'Q�'Q�
R��%�%�'�C����������������F�G�G�!�#�#rNrlrLrrrnrn�s���$�#�$rrn�GenericImmutableMap�ImmutableMap)�boundc��eZdZUdZdZeedfed<	deddfd�Z	d	e
dede
fd
�Zdedefd�Zde
efd
�Zdefd�Zdefd�Zdededdfd�Zdefd�Zy)ruz5Immutable key to value mapping with attribute access.rL.�	__slots__�kwargsrNc�R�t|�t|j�k7rOtdjdj	|j�|rdj	|����d���|jD](}t
j
|||j|���*y)NzA__init__() takes exactly the following arguments: {0} ({1} given)�, �none)�setrx�	TypeErrorrA�join�object�__setattr__�pop)r)ry�slots   rr*zImmutableMap.__init__�s����v�;�#�d�n�n�-�-���$�f��I�I�d�n�n�-�F�t�y�y��/@���
�QW���
��N�N�	=�D����t�T�6�:�:�d�+;�<�	=rr)c�0�i|�|�}t|�di|��S)zReturn updated map.rL)�type)r)ry�itemss   r�updatezImmutableMap.update�s%��#5�d�#5�f�#5���t�D�z�"�E�"�"r�keyc�L�	t||�S#t$rt|��wxYwr)r-�AttributeError�KeyError�r)r�s  r�__getitem__zImmutableMap.__getitem__�s-��	 ��4��%�%���	 ��3�-��	 �s��#c�,�t|j�Sr)�iterrxr=s r�__iter__zImmutableMap.__iter__�s���D�N�N�#�#rc�,�t|j�Sr)�lenrxr=s r�__len__zImmutableMap.__len__�s���4�>�>�"�"rc�R��tt�fd��jD���S)Nc3�6�K�|]}t�|����y�wr)r-)�.0r�r)s  �r�	<genexpr>z(ImmutableMap.__hash__.<locals>.<genexpr>�s�����I�$�'�$��-�I�s�)r<�tuplerxr=s`rr>zImmutableMap.__hash__�s����E�I�$�.�.�I�I�J�Jrr+�valuec��td���Nzcan't set attribute�r��r)r+r�s   rr�zImmutableMap.__setattr__�����2�3�3rc��dj|jjdjd�|j	�D���S)Nz{0}({1})r{c3�FK�|]\}}dj||����y�w�z	{0}={1!r}N�rA�r�r�r�s   rr�z(ImmutableMap.__repr__.<locals>.<genexpr>�s!����T���e�k�(�(��e�4�T���!)rAr7rBrr�r=s rrCzImmutableMap.__repr__�s:��� � ��N�N�#�#��I�I�T�t�z�z�|�T�T�
�	
r)rBrDrErFrxr
rGr[rr*rtr�r�rr�rIr�r>r�rCrLrrruru�s���?�!#�I�u�S�#�X��#�+�	=��	=��	=�#�(�#�C�#�<O�#�
 �s� �s� �$�(�3�-�$�#��#�K�#�K�4��4�C�4�D�4�
�#�
rc��eZdZdZdZdededdfd�Zdedefd	�Zde	efd
�Z
defd�Zde
e
eefdffd
�Zdefd�Zdedefd�Zdededdfd�Zdefd�Zy)�
frozendictzFrozen dictionary.)�_items�_keys�argsryrNc
�"�|r|st|�}n1t|�dk(rt|dt�r|d}n
t	��t
j
|d|�t
j
|dtt|j����y)N�rr�r�)
�dictr�r%rr~r�r�r��sorted�keys)r)r�ryr�s    rr*zfrozendict.__init__�so���$���L�E�
��Y�!�^�
�4��7�G� <���G�E��+��	���4��5�1����4��%��u�z�z�|�0D�*E�Frr�c� �|j|Sr)r�r�s  rr�zfrozendict.__getitem__�s���{�{�3��rc�,�t|j�Sr)r�r�r=s rr�zfrozendict.__iter__�s���D�J�J��rc�,�t|j�Sr)r�r�r=s rr�zfrozendict.__len__�s���4�;�;��r.c�@��t�fd��jD��S)Nc3�,�K�|]}|�|f���
y�wrrL)r�r�r)s  �rr�z+frozendict._sorted_items.<locals>.<genexpr>�s�����<�#�c�4��9�%�<�s�)r�r�r=s`r�
_sorted_itemszfrozendict._sorted_items�s����<����<�<�<rc�4�t|j��Sr)r<r�r=s rr>zfrozendict.__hash__�s���D�&�&�(�)�)rr+c�R�	|j|S#t$rt|��wxYwr)r�r�r�r.s  rr/zfrozendict.__getattr__�s0��	'��;�;�t�$�$���	'� ��&�&�	'�s��&r�c��td��r�r�r�s   rr�zfrozendict.__setattr__r�rc�l�djdjd�|j�D���S)Nzfrozendict({0})r{c3�FK�|]\}}dj||����y�wr�r�r�s   rr�z&frozendict.__repr__.<locals>.<genexpr>	s!����\���e�k�(�(��e�4�\�r�)rArr�r=s rrCzfrozendict.__repr__s0�� �'�'��I�I�\�t�GY�GY�G[�\�\�
�	
r)rBrDrErFrxrr*rGr�rr�rIr�r
r�r>r/r�rCrLrrr�r��s����#�I�G�c�G�S�G�T�G� �s� �s� � �(�3�-� � �� �=�u�U�3��8�_�c�%9�:�=�*�#�*�'��'��'�4��4�C�4�D�4�
�#�
rr�c�f�eZdZdZdeddfd�Zdedefd�Zdededdfd	�Z	deddfd
�Z
deefd�Zy)�_UtilDeprecationModulez�
    Internal class delegating to a module, and displaying warnings when attributes
    related to the deprecated "abstractclassmethod" attributes in the josepy.util module.
    �modulerNc�"�||jd<y�N�_module)�__dict__)r)r�s  rr*z_UtilDeprecationModule.__init__s��#)��
�
�i� r�attrc�p�|dk(rtjdtd��t|j|�S)Nrz�The abstractclassmethod attribute in josepy.util is deprecated and will be removed soon. Please use the built-in decorators @classmethod and @abc.abstractmethod together instead.rr )r"r#r$r-r��r)r�s  rr/z"_UtilDeprecationModule.__getattr__s7���(�(��M�M�8�#��
��t�|�|�T�*�*rr�c�2�t|j||�yr)�setattrr�)r)r�r�s   rr�z"_UtilDeprecationModule.__setattr__$s������d�E�*rc�0�t|j|�yr)�delattrr�r�s  r�__delattr__z"_UtilDeprecationModule.__delattr__'s������d�#rc�4�dgt|j�zSr�)�dirr�r=s r�__dir__z_UtilDeprecationModule.__dir__*s���{�S����.�.�.r)
rBrDrErFrr*rGrr/r�r�r	r�rLrrr�r�sj���
*�z�*�d�*�	+��	+��	+�+��+�C�+�D�+�$��$��$�/��c��/rr�)#rFr�sysr"�collections.abcrr�typesr�typingrrrr	r
rrr
�)cryptography.hazmat.primitives.asymmetricrr�OpenSSLrrrrrNr_rnrtrur�r��modulesrBrLrr�<module>r�s����
�
��-��M�M�M�=��1�h�1�;�1�4L�4L�n/:�/:�d$�}�$�4$�m�$�*�3�>�J��,
�7�H�,
�^-
��(�-
�f/�/�>�Z�)?����H�@U�)V�W����H�r