Your IP : 216.73.217.85


Current Path : /opt/alt/python34/lib/python3.4/site-packages/wheel/signatures/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib/python3.4/site-packages/wheel/signatures/__pycache__/__init__.cpython-34.pyc

�
�/6R��@s�dZddgZddlZddlmZmZmZmZdadZ	dd	�Z
d
d�Zddd
�Zdd�Z
dd�ZdS)z5
Create and verify jws-js format Ed25519 signatures.
�sign�verify�N�)�urlsafe_b64decode�urlsafe_b64encode�native�binaryZEd25519cCsOtsKyddlaWn(ttfk
r@ddlmaYnXt�ntS)z&Lazy import-and-test of ed25519 modulerN�)�	ed25519py)�	ed25519ll�ImportError�OSError�r
�test�rr�J/opt/alt/python34/lib/python3.4/site-packages/wheel/signatures/__init__.py�
get_ed25519lls
rc	Cs�t�itd6itd6tt|j��d6d6}tttj|dd���}tttj|dd���}dj||f�}t	j
||j�}|dt	j�}t|�}iit|�d	6t|�d
6gd6t|�d6S)
z_Return a JWS-JS format signature given a JSON-serializable payload and 
    an Ed25519 keypair.�alg�kty�vk�jwkZ	sort_keysT�.N�header�	signature�
recipients�payload)
r�ALGrrrr�json�dumps�joinrZcrypto_sign�skZSIGNATUREBYTES)	rZkeypairrZencoded_header�encoded_payload�
secured_input�sig_msgrZencoded_signaturerrrrs !!rcCs|st|��ndS)N)�
ValueError)�	condition�messagerrr�
assertTrue4sr'cCs�t�|d}t|d�}g}x�|D]�}tt|�dkdj|��t|d�}t|d�}tjtt|���}t|dt	kdj|d��d|d	kr�d
|d	kr�|d	d|d	d
<nt|d	d
t	kdj|d	d
��tt|d	d��}d
j
||f�}	t|�}
|
|	}ttj||��}|j
d�\}
}t|
�}
tt|
��}|jtj|��q.Wt|�}tjtt|���}||fS)z�Return (decoded headers, payload) if all signatures in jwsjs are
    consistent, else raise ValueError.
    
    Caller must decide whether the keys are actually trusted.rrrzUnknown recipient key {0}rrrzUnexpected algorithm {0}rrzUnexpected key type {0}rr�.)rrr'�len�formatr�loadsrrrrrZcrypto_sign_open�split�append)�jwsjsrr!�headersZ	recipient�h�srrr"�sigr#Zverified_inputZverified_headerZverified_payloadZdecoded_headerrrrrr8s6

" 
cCs�tj�}idd6}tjtjt||���}t|�|dd7<yt|�Wntk
rtYn
Xtd��dS)NZ	onstartuprr�xz+No error from bad wheel.signatures payload.)	rZcrypto_sign_keypairrr+rrrr$�RuntimeError)Zkprr.rrrr^s
!

r)�__doc__�__all__r�utilrrrrrrrrr'rrrrrr�<module>s"
&