Viewing File: /opt/alt/python35/lib/python3.5/site-packages/jwt/__pycache__/algorithms.cpython-35.opt-1.pyc



b'[4@sddlZddlZddlZddlmZmZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZmZyddlmZddlmZmZmZddlmZmZmZmZmZmZmZmZdd	l m!Z!m"Z"dd
l#m$Z$m%Z%ddl&m'Z'ddl(m)Z)d
Z*Wne+k
rZdZ*YnXe,ddddddddddg
Z-ddZ.Gddde/Z0Gddde0Z1Gdd d e0Z2e*rGd!d"d"e0Z3Gd#d$d$e0Z4Gd%d&d&e3Z5dS)'N)constant_time_comparestring_types)InvalidKeyError)base64url_decodebase64url_encodeder_to_raw_signatureforce_bytes
force_unicodefrom_base64url_uintraw_to_der_signatureto_base64url_uint)hashes)load_pem_private_keyload_pem_public_keyload_ssh_public_key)
RSAPrivateKeyRSAPublicKeyRSAPrivateNumbersRSAPublicNumbersrsa_recover_prime_factorsrsa_crt_dmp1rsa_crt_dmq1rsa_crt_iqmp)EllipticCurvePrivateKeyEllipticCurvePublicKey)ecpadding)default_backend)InvalidSignatureTFRS256RS384RS512ES256ES384ES521ES512PS256PS384PS512cCsdtdttjdttjdttji}tr|jdttjdttjdttjdttjd	ttjd
ttjdttjdt	t	jd
t	t	jdt	t	ji
|S)zE
    Returns the algorithms that are implemented by the library.
    ZnoneZHS256ZHS384ZHS512r r!r"r#r$r%r&r'r(r))

NoneAlgorithm
HMACAlgorithmSHA256SHA384SHA512
has_cryptoupdateRSAAlgorithmECAlgorithmRSAPSSAlgorithm)Zdefault_algorithmsr4/algorithms.pyget_default_algorithms&s"	r6c@s^eZdZdZddZddZddZedd	Zed
dZ	dS)
	AlgorithmzH
    The interface for an algorithm used to sign and verify tokens.
    cCs
tdS)z
        Performs necessary validation and conversions on the key and returns
        the key value in the proper format for sign() and verify().
        N)NotImplementedError)selfkeyr4r4r5prepare_keyFszAlgorithm.prepare_keycCs
tdS)zn
        Returns a digital signature for the specified message
        using the specified key value.
        N)r8)r9msgr:r4r4r5signMszAlgorithm.signcCs
tdS)zz
        Verifies that the specified digital signature is valid
        for the specified message and key values.
        N)r8)r9r<r:sigr4r4r5verifyTszAlgorithm.verifycCs
tdS)z7
        Serializes a given RSA key into a JWK
        N)r8)key_objr4r4r5to_jwk[szAlgorithm.to_jwkcCs
tdS)zb
        Deserializes a given RSA key from JWK back into a PublicKey or PrivateKey object
        N)r8)jwkr4r4r5from_jwkbszAlgorithm.from_jwkN)
__name__
__module____qualname____doc__r;r=r?staticmethodrArCr4r4r4r5r7Bsr7c@s:eZdZdZddZddZddZdS)	r*zZ
    Placeholder for use when no signing or verification
    operations are required.
    cCs.|dkrd}|dk	r*td|S)Nz*When alg = "none", key value must be None.)r)r9r:r4r4r5r;os
zNoneAlgorithm.prepare_keycCsdS)Nr4)r9r<r:r4r4r5r=xszNoneAlgorithm.signcCsdS)NFr4)r9r<r:r>r4r4r5r?{szNoneAlgorithm.verifyN)rDrErFrGr;r=r?r4r4r4r5r*js	r*c@seZdZdZejZejZej	Z
ddZddZe
ddZe
dd	Zd
dZdd
ZdS)r+zf
    Performs signing and verification operations using HMAC
    and the specified hash function.
    cCs
||_dS)N)hash_alg)r9rKr4r4r5__init__szHMACAlgorithm.__init__csMtddddg}tfdd|DrItdS)Ns-----BEGIN PUBLIC KEY-----s-----BEGIN CERTIFICATE-----s-----BEGIN RSA PUBLIC KEY-----sssh-rsacsg|]}|kqSr4r4).0Zstring_value)r:r4r5
<listcomp>s	z-HMACAlgorithm.prepare_key.<locals>.<listcomp>zdThe specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.)r	anyr)r9r:Zinvalid_stringsr4)r:r5r;s		zHMACAlgorithm.prepare_keycCs+tjdttt|ddiS)Nkktyoct)jsondumpsr
rr	)r@r4r4r5rAszHMACAlgorithm.to_jwkcCs>tj|}|jddkr0tdt|dS)NrQrRzNot an HMAC keyrP)rSloadsgetrr)rBobjr4r4r5rCszHMACAlgorithm.from_jwkcCstj|||jjS)N)hmacnewrKdigest)r9r<r:r4r4r5r=szHMACAlgorithm.signcCst||j||S)N)rr=)r9r<r:r>r4r4r5r?szHMACAlgorithm.verifyN)rDrErFrGhashlibsha256r,sha384r-sha512r.rLr;rHrArCr=r?r4r4r4r5r+s				r+c@seZdZdZejZejZejZddZddZ	e
ddZe
dd	Zd
dZ
dd
ZdS)r1z~
        Performs signing and verification operations using
        RSASSA-PKCS-v1_5 and the specified hash function.
        cCs
||_dS)N)rK)r9rKr4r4r5rLszRSAAlgorithm.__init__cCst|tst|tr"|St|trt|}yF|jdrgt|dt}nt|dddt}Wqt	k
rt
|dt}YqXntd|S)Nsssh-rsabackendpasswordzExpecting a PEM-formatted key.)
isinstancerrrr	
startswithrrr
ValueErrorr	TypeError)r9r:r4r4r5r;s
zRSAAlgorithm.prepare_keycCscd}t|ddr|j}ddddgdtt|jjdtt|jjdtt|jd	tt|jd
tt|j	dtt|j
dtt|jd
tt|ji
}nlt|ddrJ|j}ddddgdtt|jdtt|ji}nt
dtj|S)Nprivate_numbersrQRSAZkey_opsr=nedpqdpdqqir?zNot a public or private key)getattrrer
r
public_numbersrgrhrirjrkdmp1dmq1iqmprrSrT)r@rWnumbersr4r4r5rAs*		zRSAAlgorithm.to_jwkc	slytj|Wntk
r3tdYnXjddkrUtddkrdkrdkrdkrtd	d
ddd
dg}fdd|D}t|}|rt|rtdttdtd}|rt	dtdd
td
dtddtddtd
dtdd|}n|td}t
|j||j\}}t	d|d
|d|dt
||dt||dt||d|}|jtSdkr\dkr\ttdtd}|jtStddS)NzKey is not valid JSONrQrfzNot an RSA keyrirhrgZothz5Unsupported RSA private key: > 2 primes not supportedrjrkrlrmrncsg|]}|kqSr4r4)rMZprop)rWr4r5rN	s	z)RSAAlgorithm.from_jwk.<locals>.<listcomp>z@RSA key must include all parameters if any are present besides drqrrrsrpzNot a public or private key)rSrUrcrrVrOallrrrrrgrhrrrZprivate_keyrZ
public_key)	rBZother_propsZprops_foundZany_props_foundrprtrirjrkr4)rWr5rCsT
$ 	 zRSAAlgorithm.from_jwkcCs|j|tj|jS)N)r=rPKCS1v15rK)r9r<r:r4r4r5r=8szRSAAlgorithm.signcCsGy*|j||tj|jdSWntk
rBdSYnXdS)NTF)r?rrvrKr)r9r<r:r>r4r4r5r?;s
"
zRSAAlgorithm.verifyN)rDrErFrGrr,r-r.rLr;rHrArCr=r?r4r4r4r5r1s			$?r1c@saeZdZdZejZejZejZddZddZ	ddZ
dd	Zd
S)r2zr
        Performs signing and verification operations using
        ECDSA and the specified hash function
        cCs
||_dS)N)rK)r9rKr4r4r5rLKszECAlgorithm.__init__cCst|tst|tr"|St|trt|}y@|jdrgt|dt}nt|dt}Wqt	k
rt
|dddt}YqXntd|S)Nsecdsa-sha2-r_r`zExpecting a PEM-formatted key.)rarrrr	rbrrrrcrrd)r9r:r4r4r5r;Ns
#zECAlgorithm.prepare_keycCs1|j|tj|j}t||jS)N)r=rECDSArKrcurve)r9r<r:der_sigr4r4r5r=fs!zECAlgorithm.signcCsvyt||j}Wntk
r.dSYnXy*|j||tj|jdSWntk
rqdSYnXdS)NFT)rrxrcr?rrwrKr)r9r<r:r>ryr4r4r5r?ks
	"
zECAlgorithm.verifyN)rDrErFrGrr,r-r.rLr;r=r?r4r4r4r5r2Bs			r2c@s.eZdZdZddZddZdS)r3zA
        Performs a signature using RSASSA-PSS with MGF1
        cCs@|j|tjdtj|jd|jj|jS)Nmgfsalt_length)r=rPSSMGF1rKdigest_size)r9r<r:r4r4r5r=|s	zRSAPSSAlgorithm.signcCshyK|j||tjdtj|jd|jj|jdSWntk
rcdSYnXdS)Nrzr{TF)r?rr|r}rKr~r)r9r<r:r>r4r4r5r?s	

zRSAPSSAlgorithm.verifyN)rDrErFrGr=r?r4r4r4r5r3ws
r3)6r[rXrScompatrr
exceptionsrZutilsrrrr	r
rrr
Zcryptography.hazmat.primitivesrZ,cryptography.hazmat.primitives.serializationrrrZ-cryptography.hazmat.primitives.asymmetric.rsarrrrrrrrZ,cryptography.hazmat.primitives.asymmetric.ecrrZ)cryptography.hazmat.primitives.asymmetricrrZcryptography.hazmat.backendsrZcryptography.exceptionsrr/ImportErrorsetZrequires_cryptographyr6objectr7r*r+r1r2r3r4r4r4r5<module>s4::

(45
Back to Directory File Manager