HOME


Mini Shell 1.0
DIR: /snap/certbot/current/lib64/python3.12/site-packages/josepy/__pycache__/
Upload File :
Current File : //snap/certbot/current/lib64/python3.12/site-packages/josepy/__pycache__/jwk.cpython-312.pyc
�


N�g�6���dZddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZm
Z
mZddlZddlmZddlmZmZddlmZmZddlZddlmZmZmZej<e�Z Gd�d	ejBejD�
�Z#e#jHGd�de#��Z%e#jHGd
�de#��Z&e#jHGd�de#��Z'y)�
JSON Web Key.�N)	�Any�Callable�Dict�Mapping�Optional�Sequence�Tuple�Type�Union)�default_backend)�hashes�
serialization)�ec�rsa)�errors�	json_util�utilc
�|�eZdZUdZdZiZeeedfe	d<dZ
eeedfe	d<	e
Zeee	d<	dd	d
d�Zeeeeeeeeffe	d<ee	d
<ej,fdegej0fdefd�Zej8dd��Ze	ddedeedeedefd��Ze	ddedeedeeddfd��Z y)�JWKr�kty�TYPES�.�cryptography_key_types�requiredN)�,�:T)�indent�
separators�	sort_keys�_thumbprint_json_dumps_params�key�
hash_function�returnc
�n�tj|�t���}|jt	j
|j
�j�D��cic]\}}||jvs�||��c}}fi|j��j��|j�Scc}}w)zgCompute JWK Thumbprint.

        https://tools.ietf.org/html/rfc7638

        :returns: bytes

        )�backend)r�Hashr
�update�json�dumps�to_json�itemsrr!�encode�finalize)�selfr#�digest�k�vs     �z/build/snapcraft-certbot-2c33630aaf29c47357e5a1683f659d3d/parts/certbot/install/lib/python3.12/site-packages/josepy/jwk.py�
thumbprintzJWK.thumbprint4s������]�_�o�6G�H���
�
��J�J�"&�,�,�.�"6�"6�"8�O�$�!�Q�A����<N��A��O�
��4�4�
��f�h�		
���� � ��	Ps� B1�7B1c��t��)ziGenerate JWK with public key.

        For symmetric cryptosystems, this would return ``self``.

        )�NotImplementedError�r/s r3�
public_keyzJWK.public_keyGs
��"�#�#��data�passwordr&c�.�|�
t�n|}i}tjtjfD]}	||||�cStjtjfD]
}	|||�cStjdj|���#tt
tjjf$r}||t|�<Yd}~��d}~wwxYw#ttjjf$r}||t|�<Yd}~��d}~wwxYw)NzUnable to deserialize key: {0})r
r�load_pem_private_key�load_der_private_key�
ValueError�	TypeError�cryptography�
exceptions�UnsupportedAlgorithm�str�load_pem_public_key�load_der_public_keyr�Error�format)�clsr:r;r&rB�loader_private�error�
loader_publics        r3�_load_cryptography_keyzJWK._load_cryptography_keyPs��(/��/�#�G���
�

�.�.��.�.�
�	8�N�
8�%�d�H�g�>�>�	8�,�?�?��Ab�Ab�c�	7�M�
7�$�T�7�3�3�	7��l�l�;�B�B�:�N�O�O���	�<�+B�+B�+W�+W�X�
8�27�
�3�~�.�/��
8���� 7� 7� L� L�M�
7�16�
�3�}�-�.��
7�s/�	B�&C�(C�>C�C�#D�<D�Dc�L�	|j|||�}|jturOt||j�s9tjdj|j|j���|jj�D]#}t||j�s�||��cStjdj|j���#tj$r,}tj	d|�t|��cYd}~Sd}~wwxYw)a�Load serialized key as JWK.

        :param str data: Public or private key serialized as PEM or DER.
        :param str password: Optional password.
        :param backend: A `.PEMSerializationBackend` and
            `.DERSerializationBackend` provider.

        :raises errors.Error: if unable to deserialize, or unsupported
            JWK algorithm

        :returns: JWK of an appropriate type.
        :rtype: `JWK`

        z,Loading symmetric key, asymmetric failed: %s�r"Nz"Unable to deserialize {0} into {1}zUnsupported algorithm: {0})rMrrG�logger�debug�JWKOct�typ�NotImplemented�
isinstancerrH�	__class__r�values)rIr:r;r&r"rK�jwk_clss       r3�loadzJWK.loadms���$	$��,�,�T�8�W�E�C�
�7�7�.�(��C��A[�A[�1\��,�,�4�;�;�C�M�M�3�=�=�Y��
��y�y�'�'�)�	(�G��#�w�=�=�>��3�'�'�	(��l�l�7�>�>�s�}�}�M�N�N���|�|�	$��L�L�G��O��d�#�#��	$�s�C$�$D#�7!D�D#�D#)r$r)NN)!�__name__�
__module__�__qualname__�__doc__�type_field_namerrrDr�__annotations__rr
rrTrr	r!rr�int�boolr�SHA256r�
HashAlgorithm�bytesr4�abc�abstractmethodr8�classmethodrMrYrr9r3rrse����O�$&�E�4��T�%�[� �!�&�46��E�$�s�)�S�.�1�6�%�,�H�h�s�m�,�P�
� ��[�!�4��U�8�C�=�(�3�-�QU�3U�-V�(V�#W��

�H�CI�-�-�!�%�b�&�*>�*>�&>�?�!�	�!�&	���$��$��UY�P��P�$,�U�O�P�EM�c�]�P�	�P��P�8�UY�O��O�$,�U�O�O�EM�c�]�O�	�O��Or9r)�	metaclassc��eZdZUdZdZdZdejfZe	e
d<deeeffd�Z
edeeefddfd	��Zdd
�Zy)
rRzSymmetric JWK.�octrOr1r"r$c�D�dtj|j�iS)Nr1)r�encode_b64joser"r7s r3�fields_to_partial_jsonzJWKOct.fields_to_partial_json�s��
�Y�-�-�d�h�h�7�8�8r9�jobjc�@�|tj|d���S)Nr1rO)r�decode_b64jose)rIrns  r3�fields_from_jsonzJWKOct.fields_from_json�s���y�/�/��S�	�:�;�;r9c��|S�Nrr7s r3r8zJWKOct.public_key�s���r9N)r$rR)rZr[r\r]rS�	__slots__rr^rrdr_rrDrmrgrrrqr8rr9r3rRrR�sh���
�C��I��S�(�(�)�H�	�J�9��S�#�X��9��<�G�C��H�$5�<�(�<��<�r9rRc�0��eZdZUdZdZejejfZdZ	de
jdfZe
jjed<deded	d
f�fd�Zeded	efd
��Zeded	efd��Zdd�Zedeeefd	dfd��Zd	eeeffd�Z�xZS)�JWKRSAz�RSA JWK.

    :ivar key: :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`
        or :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey` wrapped
        in :class:`~josepy.util.ComparableRSAKey`

    �RSArO�e�nr"�args�kwargsr$Nc���d|vr8t|dtj�stj|d�|d<t�|�|i|��y�Nr")rUr�ComparableRSAKey�super�__init__�r/rzr{rVs   �r3r�zJWKRSA.__init__�sG����F�?�:�f�U�m�T�=R�=R�#S� �1�1�&��-�@�F�5�M�
���$�)�&�)r9r:c��t|j�d�}tj|dz�}t	j
|j
d|���S)zOEncode Base64urlUInt.
        :type data: long
        :rtype: unicode
        ��big��	byteorder�length)�max�
bit_length�math�ceilrrl�to_bytes�rIr:r�s   r3�
_encode_paramzJWKRSA._encode_param�sG���T�_�_�&��*�����6�A�:�&���'�'��
�
��f�
�(U�V�Vr9c���	tj|�}|stj��tj|d��S#t$rtj��wxYw)�Decode Base64urlUInt.r��r�)rrpr�DeserializationErrorr`�
from_bytesr?)rIr:�binarys   r3�
_decode_paramzJWKRSA._decode_param�sZ��	0��-�-�d�3�F���1�1�3�3��>�>�&�E�>�:�:���	0��-�-�/�/�	0�s�AA�A"c�V�t|�|jj���S)NrO)�typer"r8r7s r3r8zJWKRSA.public_key�s ���t�D�z�d�h�h�1�1�3�4�4r9rnc	������fd�dD�\}}tj||��}d�vr �|jt����S�j	�d�}d�vsd�vsd�vsd	�vsd
�vsd�vrmt�fd�d
D��x\}}}}	}
}td�|D��r$t
jdj|���t�fd�|D��\}}}}	}
n\tj|||�\}}tj||�}tj||�}	tj||�}
tj|||||	|
|�jt��}�|��S)Nc3�F�K�|]}�j�|����y�wrs�r�)�.0�xrIrns  ��r3�	<genexpr>z*JWKRSA.fields_from_json.<locals>.<genexpr>�s �����?�q��!�!�$�q�'�*�?�s�!�ryrx)rxry�drO�p�q�dp�dq�qi�othc3�@�K�|]}�j|����y�wrs)�get)r�r�rns  �r3r�z*JWKRSA.fields_from_json.<locals>.<genexpr>�s�����"U�1�4�8�8�A�;�"U�s�)r�r�r�r�r�c3�&K�|]	}|��|���y�wrsr)r��params  r3r�z*JWKRSA.fields_from_json.<locals>.<genexpr>�s����D�u�e�m�U�D�s��z(Some private parameters are missing: {0}c3�R�K�|]}�jt|����� y�wrs)r�rD)r�r�rIs  �r3r�z*JWKRSA.fields_from_json.<locals>.<genexpr>�s �����$S�1�S�%6�%6�s�1�v�%>�$S�s�$')r�RSAPublicNumbersr8r
r��tuplerrGrH�rsa_recover_prime_factors�rsa_crt_dmp1�rsa_crt_dmq1�rsa_crt_iqmp�RSAPrivateNumbers�private_key)
rIrnryrx�public_numbersr�r�r�r�r�r��
all_paramsr"s
``           r3rqzJWKRSA.fields_from_json�s����?�J�?���1��-�-��Q�7���d�?��>�4�4�_�5F�G�H�H�
���d�3�i�(���4�K��d�{��t�|��t�|��t�|���}�#�"U�8T�"U�U�

V�
��������D�
�D�D��l�l�#M�#T�#T�U_�#`�a�a�$�$S�
�$S�S��A�q�"�b�"�
�0�0��A�q�9�D�A�q��!�!�!�Q�'�B��!�!�!�Q�'�B��!�!�!�Q�'�B��#�#�A�q�!�R��R��H�T�T���
���s�|�r9c	�r�t|jjtj�r4|jj�}|j|jd�}n�|jj�}|jj�j�}|j|j|j|j|j|j|j|jd�}|j!�D��cic]\}}||j#|���c}}Scc}}w)Nr�)ryrxr�r�r�r�r�r�)rUr"�_wrappedr�RSAPublicKeyr�ryrx�private_numbersr8r�r�r��dmp1�dmq1�iqmpr,r�)r/�numbers�params�private�publicr"�values       r3rmzJWKRSA.fields_to_partial_jsons����d�h�h�'�'��)9�)9�:��h�h�-�-�/�G��Y�Y��Y�Y��F�
�h�h�.�.�0�G��X�X�(�(�*�9�9�;�F��X�X��X�X��Y�Y��Y�Y��Y�Y��l�l��l�l��l�l�	�F�BH����P�:�3���T�'�'��.�.�P�P��Ps�D3)r$rv)rZr[r\r]rSrr��
RSAPrivateKeyrrtrr^r�josepyrr~r_rr�rgr`rDr�r�r8rrqrrm�
__classcell__�rVs@r3rvrv�s������C�!�.�.��0A�0A�B���I��S�(�(�#�.�H�	���	%�	%�%�*�c�*�S�*�T�*�
�W��W��W��W��0��0��0��0�5��.�G�C��H�$5�.�(�.��.�`Q��S�#�X��Qr9rvc	���eZdZUdZdZdZejejfZ	de
jddfZe
jjed<ded	ed
df�fd�Zed
eded
efd��Zed
ededed
efd��Zeded
efd��Zeded
ej2fd��Zedej2d
efd��Zd
eeeffd�Zedeeefd
dfd��Zdd�Z �xZ!S)�JWKECz�EC JWK.

    :ivar key: :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`
        or :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey` wrapped
        in :class:`~josepy.util.ComparableECKey`

    �ECrO�crvr��yr"rzr{r$Nc���d|vr8t|dtj�stj|d�|d<t�|�|i|��yr})rUr�ComparableECKeyrr�r�s   �r3r�zJWKEC.__init__,sG����F�?�:�f�U�m�T�=Q�=Q�#R� �0�0����?�F�5�M�
���$�)�&�)r9r:r�c�N�tj|jd|���S)zlEncode Base64urlUInt.
        :type data: long
        :type key_size: long
        :rtype: unicode
        r�r�)rrlr�r�s   r3r�zJWKEC._encode_param1s"���'�'��
�
��f�
�(U�V�Vr9�name�valid_lengthc
�
�	tj|�}t|�|k7r(tjd|�d|�dt|��d���t
j
|d��S#t$rtj��wxYw)r�zExpected parameter "z" to be z" bytes after base64-decoding; got z bytes insteadr�r�)rrp�lenrr�r`r�r?)rIr:r�r�r�s     r3r�zJWKEC._decode_param:s���		0��-�-�d�3�F��6�{�l�*��1�1�*�4�&����G2�25�f�+��n�N����>�>�&�E�>�:�:���	0��-�-�/�/�	0�s�A!A$�$B�
curve_namec�N�|dk(ry|dk(ry|dk(rytj��)N�	secp256r1�P-256�	secp384r1�P-384�	secp521r1�P-521)r�SerializationError)rIr�s  r3�_curve_name_to_crvzJWKEC._curve_name_to_crvHs2����$����$����$���'�'�)�)r9c��|dk(rtj�S|dk(rtj�S|dk(rtj�St	j
��)Nr�r�r�)r�	SECP256R1�	SECP384R1�	SECP521R1rr�)rIr�s  r3�
_crv_to_curvezJWKEC._crv_to_curveRsL���'�>��<�<�>�!��'�>��<�<�>�!��'�>��<�<�>�!��)�)�+�+r9�curvec��t|tj�ryt|tj�ryt|tj�rytd|����)N� �0�BzUnexpected curve: )rUrr�r�r�r?)rIr�s  r3�expected_length_for_curvezJWKEC.expected_length_for_curve]sH���e�R�\�\�*��
��r�|�|�
,��
��r�|�|�
,���-�e�W�5�6�6r9c��i}t|jjtj�r|jj�}n�t|jjtj�rR|jj�}|jj�j�}|j|d<ntjd��|j|d<|j|d<|j�D��cic]1\}}||j||j!|j"����3}}}|j%|j"j&�|d<|Scc}}w)Nr�zRSupplied key is neither of type EllipticCurvePublicKey nor EllipticCurvePrivateKeyr�r�r�)rUr"r�r�EllipticCurvePublicKeyr��EllipticCurvePrivateKeyr�r8�
private_valuerr�r�r�r,r�r�r�r�r�)r/r�r�r�r"r�s      r3rmzJWKEC.fields_to_partial_jsongs1�����d�h�h�'�'��)B�)B�C��X�X�,�,�.�F�
����)�)�2�+E�+E�
F��h�h�.�.�0�G��X�X�(�(�*�9�9�;�F�!�/�/�F�3�K��+�+�.��
��h�h��s���h�h��s��%�l�l�n�
���U�
��#�#�E�4�+I�+I�&�,�,�+W�X�X�
��
��/�/����0A�0A�B��u�
��
��
s�6E5rnc������j�d�}�j|�����fd�dD�\}}tj|||��}d�vr �|j	t����S�j
�dd��}tj||�jt��}�|��S)Nr�c3�J�K�|]}�j�||�����y�wrsr�)r�ryrI�expected_lengthrns  ���r3r�z)JWKEC.fields_from_json.<locals>.<genexpr>�s$�����S�1��!�!�$�q�'�1�o�>�S�s� #)r�r�)r�r�r�r�rO)	r�r�r�EllipticCurvePublicNumbersr8r
r��EllipticCurvePrivateNumbersr�)	rIrnr�r�r�r�r�r"r�s	``      @r3rqzJWKEC.fields_from_json}s�����!�!�$�u�+�.���7�7��>��S�
�S���1��6�6��a�u�M���d�?��>�4�4�_�5F�G�H�H�
���d�3�i��o�>���,�,�Q��?�K�K�O�L]�^���s�|�r9c���t|jd�r|jj�}n1|jj�jt	��}t|�|��S)Nr8rO)�hasattrr"r8r�r
r�)r/r"s  r3r8zJWKEC.public_key�sS���4�8�8�\�*��(�(�%�%�'�C��(�(�)�)�+�6�6��7H�I�C��t�D�z�c�"�"r9)r$r�)"rZr[r\r]rSrtrr�r�rrr^rr�rr�r_rr�rgr`rDr�r�r��
EllipticCurver�r�rrmrrqr8r�r�s@r3r�r�s}�����C��I� �7�7��9S�9S�T���s�*�*�C��5�H�	���	$�	$�$�*�c�*�S�*�T�*�
�W��W�c�W�c�W��W��0��0�C�0�s�0�s�0��0��*�C�*�C�*��*��,��,��(8�(8�,��,��7�b�.>�.>�7�3�7��7���S�#�X���,�
�G�C��H�$5�
�'�
��
�#r9r�)(r]rer)�loggingr��typingrrrrrr	r
rr�cryptography.exceptionsrA�cryptography.hazmat.backendsr
�cryptography.hazmat.primitivesrr�)cryptography.hazmat.primitives.asymmetricrr�josepy.utilr�rrr�	getLoggerrZrP�TypedJSONObjectWithFields�ABCMetar�registerrRrvr�rr9r3�<module>r�s����
����
�
�
��8�@�=��*�*�	��	�	�8�	$��nO�)�
-�
-����nO�b����S����.���qQ�S�qQ��qQ�h���v#�C�v#��v#r9