CasperSecurity

Current Path : /usr/lib/python3/dist-packages/josepy/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/josepy/__pycache__/jwk.cpython-310.pyc

o

h9Ra�7�@sdZddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZm
Z
mZddlZddlZddlmZddlmZddlmZddlmZddlmZdd	lmZmZmZe�e�Z Gd
d�dej!ej"d�Z#e#j$Gd
d�de#��Z%e#j$Gdd�de#��Z&e#j$Gdd�de#��Z'dS)�
JSON Web Key.�N)	�Dict�Optional�Sequence�Type�Union�Callable�Any�Tuple�Mapping)�default_backend)�hashes)�
serialization)�ec)�rsa)�errors�	json_util�utilc
@seZdZUdZdZiZeeedfe	d<dZ
eeedfe	d<	e
Zeee	d<	dd	d
d�Zeeeeeeeeffe	d<ee	d
<ejfdegejfdefdd�Zejddd��Ze		ddedeedeedefdd��Ze		ddedeedeeddfdd��Z dS)�JWKr�kty�TYPES�.�cryptography_key_types�requiredN)�,�:T)�indent�
separators�	sort_keys�_thumbprint_json_dumps_params�key�
hash_function�returncsNtj|�t�d�}|�tj�fdd������D�fi�j���	��|�
�S)zgCompute JWK Thumbprint.

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

        :returns: bytes

        )�backendcs i|]\}}|�jvr||�qSr)r)�.0�k�v��selfr�,/usr/lib/python3/dist-packages/josepy/jwk.py�
<dictcomp>7s
�z"JWK.thumbprint.<locals>.<dictcomp>)r
�Hashr�update�json�dumps�to_json�itemsr�encode�finalize)r(r!�digestrr'r)�
thumbprint,s	���zJWK.thumbprintcCst��)ziGenerate JWK with public key.

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

        )�NotImplementedErrorr'rrr)�
public_key<szJWK.public_key�data�passwordr#cCs�|durt�n|}i}tjtjfD](}z	||||�WStttjjfy9}z||t	|�<WYd}~qd}~wwtj
tjfD]&}z|||�WSttjjfyf}z||t	|�<WYd}~q@d}~wwt�
d�|���)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)�clsr7r8r#r>�loader_private�error�
loader_publicrrr)�_load_cryptography_keyEs2��������zJWK._load_cryptography_keyc
Cs�z	|�|||�}Wntjy'}zt�d|�t|d�WYd}~Sd}~ww|jtur>t||j	�s>t�d�
|j|j���|j�
�D]}t||j	�rR||d�SqCt�d�
|j���)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})rIrrC�logger�debug�JWKOct�typ�NotImplemented�
isinstancerrD�	__class__r�values)rEr7r8r#r rG�jwk_clsrrr)�load`s ����zJWK.load)r"r)NN)!�__name__�
__module__�__qualname__�__doc__�type_field_namerrr@r�__annotations__rr
r	rOrrrrr�int�boolr
�SHA256r�
HashAlgorithm�bytesr4�abc�abstractmethodr6�classmethodrIrTrrrr)rsJ
(�	��
�������r)�	metaclassc@sjeZdZUdZdZdZdejfZe	e
d<deeeffdd�Z
ed	eeefddfd
d��Zddd
�ZdS)rMzSymmetric JWK.�octrJr%r r"cCsdt�|j�iS)Nr%)r�encode_b64joser r'rrr)�fields_to_partial_json�szJWKOct.fields_to_partial_json�jobjcCs|t�|d�d�S)Nr%rJ)r�decode_b64jose�rErgrrr)�fields_from_json�szJWKOct.fields_from_jsoncCs|S�Nrr'rrr)r6�szJWKOct.public_keyN)r"rM)rUrVrWrXrN�	__slots__rrYrr_rZrr@rfrbrr	rjr6rrrr)rM�s

rMcs�eZdZUdZdZejejfZdZ	de
jdfZe
jjed<deded	d
f�fdd�Zed
ed	efdd��Zed
ed	efdd��Zddd�Zedeeefd	dfdd��Zd	eeeffdd�Z�ZS)�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`

    �RSArJ�e�nr �args�kwargsr"Nc�@d|vrt|dtj�st�|d�|d<t�j|i|��dS�Nr )rPr�ComparableRSAKey�super�__init__�r(rqrr�rQrr)rw��


�zJWKRSA.__init__r7cCs0t|��d�}t�|d�}t�|jd|d��S)zOEncode Base64urlUInt.
        :type data: long
        :rtype: unicode
        ��big��	byteorder�length)�max�
bit_length�math�ceilrre�to_bytes�rEr7rrrr)�
_encode_param�szJWKRSA._encode_paramcCs>zt�|�}|st���tj|dd�WStyt���w)�Decode Base64urlUInt.r|�r~)rrhr�DeserializationErrorr[�
from_bytesr;)rEr7�binaryrrr)�
_decode_param�s
�zJWKRSA._decode_paramcCst|�|j��d�S)NrJ)�typer r6r'rrr)r6�szJWKRSA.public_keyrgc
	sD��fdd�dD�\}}tj||d�}d�vr �|�t��d�S���d�}d�vs?d�vs?d	�vs?d
�vs?d�vs?d�vrst�fd
d�dD��\}}}}	}
}tdd�|D��rbt�d�|���t�fdd�|D��\}}}}	}
nt�	|||�\}}t�
||�}t�||�}	t�||�}
t�
|||||	|
|��t��}�|d�S)Nc3s�|]
}���|�VqdSrk�r��r$�xrirr)�	<genexpr>�s�z*JWKRSA.fields_from_json.<locals>.<genexpr>�rpro)rorp�drJ�p�q�dp�dq�qi�othc3s�|]}��|�VqdSrk)�getr�)rgrr)r��s�

�)r�r�r�r�r�css�|]	}|dur|VqdSrkr)r$�paramrrr)r��s�z(Some private parameters are missing: {0}c3s�|]
}��t|��VqdSrk)r�r@r�)rErr)r��s�
�)r�RSAPublicNumbersr6rr��tuplerrCrD�rsa_recover_prime_factors�rsa_crt_dmp1�rsa_crt_dmq1�rsa_crt_iqmp�RSAPrivateNumbers�private_key)
rErgrpro�public_numbersr�r�r�r�r�r��
all_paramsr rrir)rj�s>�������
zJWKRSA.fields_from_jsonc	s~t�jjtj�r�j��}|j|jd�}n�j��}�j�	���}|j|j|j
|j|j|j
|j|jd�}�fdd�|��D�S)Nr�)rpror�r�r�r�r�r�csi|]
\}}|��|��qSr)r��r$r �valuer'rr)r*s�z1JWKRSA.fields_to_partial_json.<locals>.<dictcomp>)rPr �_wrappedr�RSAPublicKeyr�rpro�private_numbersr6r�r�r��dmp1�dmq1�iqmpr0)r(�numbers�params�private�publicrr'r)rf�s&
�
�

�zJWKRSA.fields_to_partial_json)r"rm)rUrVrWrXrNrr��
RSAPrivateKeyrrlrrYr�josepyrrurZr	rwrbr[r@r�r�r6rrjrrf�
__classcell__rrryr)rm�s 
	

)rmc	seZdZUdZdZdZejejfZ	de
jddfZe
jjed<ded	ed
df�fdd
�Zededed
efdd��Zedededed
efdd��Zeded
efdd��Zeded
ejfdd��Zedejd
efdd��Zd
eeeffdd�Zed eeefd
dfd!d"��Zd%d#d$�Z �Z!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`

    �ECrJ�crvr��yr rqrrr"Ncrsrt)rPr�ComparableECKeyrvrwrxryrr)rwrzzJWKEC.__init__r7rcCst�|jd|d��S)zlEncode Base64urlUInt.
        :type data: long
        :type key_size: long
        :rtype: unicode
        r|r})rrer�r�rrr)r�szJWKEC._encode_param�name�valid_lengthcCsXz t�|�}t|�|krt�dj||t|�d���tj|dd�WSty+t���w)r�ziExpected parameter "{name}" to be {valid_lengths} bytes after base64-decoding; got {length} bytes instead)r��
valid_lengthsrr|r�)	rrh�lenrr�rDr[r�r;)rEr7r�r�r�rrr)r�&s

���zJWKEC._decode_param�
curve_namecCs,|dkrdS|dkrdS|dkrdSt���)N�	secp256r1�P-256�	secp384r1�P-384�	secp521r1�P-521)r�SerializationError)rEr�rrr)�_curve_name_to_crv5szJWKEC._curve_name_to_crvcCs8|dkrt��S|dkrt��S|dkrt��St���)Nr�r�r�)r�	SECP256R1�	SECP384R1�	SECP521R1rr�)rEr�rrr)�
_crv_to_curve?szJWKEC._crv_to_curve�curvecCs>t|tj�rdSt|tj�rdSt|tj�rdStd|����)N� �0�BzUnexpected curve: )rPrr�r�r�r;)rEr�rrr)�expected_length_for_curveJszJWKEC.expected_length_for_curvecs�i}t�jjtj�r�j���nt�jjtj�r*�j��}�j�����|j	|d<nt
�d���j|d<�j
|d<��fdd�|��D�}���jj�|d<|S)Nr�zRSupplied key is neither of type EllipticCurvePublicKey nor EllipticCurvePrivateKeyr�r�c	s&i|]\}}|��|���j���qSr)r�r�r�r��r�r(rr)r*as&z0JWKEC.fields_to_partial_json.<locals>.<dictcomp>r�)rPr r�r�EllipticCurvePublicKeyr��EllipticCurvePrivateKeyr�r6�
private_valuerr�r�r�r0r�r�r�)r(r�r�rr�r)rfTs
�

zJWKEC.fields_to_partial_jsonrgcs����d�}��|�����fdd�dD�\}}tj|||d�}d�vr.�|�t��d�S���dd��}t�||��t��}�|d�S)Nr�c3s"�|]}���||��VqdSrkr�)r$rp�rE�expected_lengthrgrr)r�js� z)JWKEC.fields_from_json.<locals>.<genexpr>)r�r�)r�r�r�r�rJ)	r�r�r�EllipticCurvePublicNumbersr6rr��EllipticCurvePrivateNumbersr�)rErgr�r�r�r�r�r rr�r)rjes
�
zJWKEC.fields_from_jsoncCs8t|jd�r|j��}n	|j���t��}t|�|d�S)Nr6rJ)�hasattrr r6r�rr�)r(r rrr)r6wszJWKEC.public_key)r"r�)"rUrVrWrXrNrlrr�r�rrrYrr�rr�rZr	rwrbr[r@r�r�r��
EllipticCurver�r�rrfrrjr6r�rrryr)r�s.
�	
	r�)(rXr`r-�loggingr��typingrrrrrrr	r
r�cryptography.exceptionsr=�josepy.utilr��cryptography.hazmat.backendsr�cryptography.hazmat.primitivesr
r�)cryptography.hazmat.primitives.asymmetricrrrrr�	getLoggerrUrK�TypedJSONObjectWithFields�ABCMetar�registerrMrmr�rrrr)�<module>s,,
jo
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY