PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  ?Yc@sddlZddlZddlZddlmZmZddlmZddlm Z ddl m Z m Z m Z ddlmZddlmZddlmZdd lmZmZmZdd lmZdd lmZdd lmZddlZdd lmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$m%Z%ddlm&Z&ddl'm(Z(ej)ej*de+fdYZ,dZ-dZ.dZ/dZ0dZ1de+fdYZ2de2fdYZ3d e2fd!YZ4d"e2fd#YZ5d$e2fd%YZ6d&e3e,fd'YZ7d(e3e,fd)YZ8d*e3e,fd+YZ9d,e4e,fd-YZ:d.e4e,fd/YZ;d0e4e,fd1YZ<d2e5e,fd3YZ=d4e5e,fd5YZ>d6e5e,fd7YZ?d8e4e,fd9YZ@d:e4e,fd;YZAd<e4e,fd=YZBd>e6e,fd?YZCd@e+fdAYZDdBeDfdCYZEdDeEe,fdEYZFdFeEe,fdGYZGdHeEe,fdIYZHdJeDfdKYZIdLeIe,fdMYZJdNeIe,fdOYZKdPeIe,fdQYZLdReDfdSYZMdTeMe,fdUYZNdVeMe,fdWYZOdXeMe,fdYYZPdZeDfd[YZQd\eQe,fd]YZRd^eQe,fd_YZSd`eQe,fdaYZTdbeDe,fdcYZUddeDe,fdeYZVdfeVfdgYZWdheVfdiYZXdjeVfdkYZYdle+fdmYZZdneZfdoYZ[dpe[e,fdqYZ\dre[e,fdsYZ]dte[e,fduYZ^dveZfdwYZ_dxe_e,fdyYZ`dze_e,fd{YZad|e_e,fd}YZbd~e+fdYZcdS(iN(thexlifyt unhexlify(tInvalidSignature(tdefault_backend(t constant_timethashesthmac(tec(tpadding(tutils(tCiphert algorithmstmodes(t ConcatKDFHash(t PBKDF2HMAC(tPKCS7(tInvalidCEKeyLength(tInvalidJWAAlgorithm(tInvalidJWEKeyLength(tInvalidJWEKeyType(tInvalidJWEOperation(tbase64url_decodetbase64url_encode(t json_decode(tJWKt JWAAlgorithmcBsbeZejdZejdZejdZejdZejdZRS(cCsdS(sThe algorithm NameN((tself((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytname$scCsdS(sA short descriptionN((R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt description)scCsdS(s'The actual/recommended/minimum key sizeN((R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytkeysize.scCsdS(sOne of 'alg', 'enc' or 'JWK'N((R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytalgorithm_usage_location3scCsdS(sOne of 'sig', 'kex', 'enc'N((R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt algorithm_use8s( t__name__t __module__tabctabstractpropertyRRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR!s cCst|dS(Ni(tlen(tx((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt_bitsize>scCs|dS(Ni((R%((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt_inbytesBscCs2|ddkrtdntjt|S(Niislenght must be a multiple of 8(t ValueErrortosturandomR'(R%((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt _randombitsFscCs;dj|}|ddd}t|j|d| S(Ns{:x}iiit0(tformatRtrjust(tntbitstetilen((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt _encode_intMscCstt|dS(Ni(tintR(R/((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt _decode_intSst_RawJWScBseZdZdZRS(cCs tdS(N(tNotImplementedError(Rtkeytpayload((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytsignYscCs tdS(N(R7(RR8R9t signature((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytverify\s(R R!R:R<(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR6Ws t_RawHMACcBs,eZdZdZdZdZRS(cCst|_||_dS(N(Rtbackendthashfn(RR?((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt__init__bs cCs/tj||jd|j}|j||S(NR>(RtHMACR?R>tupdate(RR8R9th((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt _hmac_setupfs cCs1t|jd}|j||}|jS(NR:(Rt get_op_keyRDtfinalize(RR8R9tskeyRC((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR:kscCs8t|jd}|j||}|j|dS(NR<(RRERDR<(RR8R9R;tvkeyRC((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR<ps(R R!R@RDR:R<(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR=`s   t_RawRSAcBs#eZdZdZdZRS(cCs||_||_dS(N(tpadfnR?(RRJR?((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@ws cCs(|jd}|j||j|jS(NR:(RER:RJR?(RR8R9RG((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR:{scCs/|jd}|j|||j|jdS(NR<(RER<RJR?(RR8R9R;tpkey((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR<s(R R!R@R:R<(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRIvs  t_RawECcBs2eZdZedZdZdZRS(cCs||_||_dS(N(t_curveR?(RtcurveR?((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s cCs|jS(N(RM(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRNscCsw|jd|j}|j|tj|j}tj|\}}|j|jj }t ||t ||S(NR:( RERMR:RtECDSAR?tec_utilstdecode_rfc6979_signaturet get_curvetkey_sizeR3(RR8R9RGR;trtstl((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR:s cCs|jd|j}|t|d }|t|d}tjtt|dtt|d}|j||tj |j dS(NR<ii( RERMR$RPtencode_rfc6979_signatureR4RR<RROR?(RR8R9R;RKRTRUt enc_signature((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR<s *(R R!R@tpropertyRNR:R<(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRLs  t_RawNonecBseZdZdZRS(cCsdS(Nt((RR8R9((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR:scCstddS(Ns'The "none" signature cannot be verified(R(RR8R9R;((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR<s(R R!R:R<(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRZs t_HS256cBs/eZdZdZdZdZdZdZRS(tHS256sHMAC using SHA-256italgtsigcCs tt|jtjdS(N(tsuperR\R@RtSHA256(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR\s t_HS384cBs/eZdZdZdZdZdZdZRS(tHS384sHMAC using SHA-384iR^R_cCs tt|jtjdS(N(R`RbR@RtSHA384(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRbs t_HS512cBs/eZdZdZdZdZdZdZRS(tHS512sHMAC using SHA-512iR^R_cCs tt|jtjdS(N(R`ReR@RtSHA512(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRes t_RS256cBs/eZdZdZdZdZdZdZRS(tRS256sRSASSA-PKCS1-v1_5 using SHA-256iR^R_cCs)tt|jtjtjdS(N(R`RhR@RtPKCS1v15RRa(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRhs t_RS384cBs/eZdZdZdZdZdZdZRS(tRS384sRSASSA-PKCS1-v1_5 using SHA-384iR^R_cCs)tt|jtjtjdS(N(R`RkR@RRjRRd(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRks t_RS512cBs/eZdZdZdZdZdZdZRS(tRS512sRSASSA-PKCS1-v1_5 using SHA-512iR^R_cCs)tt|jtjtjdS(N(R`RmR@RRjRRg(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRms t_ES256cBs/eZdZdZdZdZdZdZRS(tES256sECDSA using P-256 and SHA-256iR^R_cCs#tt|jdtjdS(NsP-256(R`RoR@RRa(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRos t_ES384cBs/eZdZdZdZdZdZdZRS(tES384sECDSA using P-384 and SHA-384iR^R_cCs#tt|jdtjdS(NsP-384(R`RqR@RRd(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRqs t_ES512cBs/eZdZdZdZdZdZdZRS(tES512sECDSA using P-521 and SHA-512iR^R_cCs#tt|jdtjdS(NsP-521(R`RsR@RRg(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRss t_PS256cBs/eZdZdZdZdZdZdZRS(tPS256s.RSASSA-PSS using SHA-256 and MGF1 with SHA-256iR^R_cCsJtjtjtjtjj}tt|j|tjdS(N( RtPSStMGF1RRat digest_sizeR`RuR@(RRJ((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRus t_PS384cBs/eZdZdZdZdZdZdZRS(tPS384s.RSASSA-PSS using SHA-384 and MGF1 with SHA-384iR^R_cCsJtjtjtjtjj}tt|j|tjdS(N( RRwRxRRdRyR`RzR@(RRJ((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@(s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRz s t_PS512cBs/eZdZdZdZdZdZdZRS(tPS512s.RSASSA-PSS using SHA-512 and MGF1 with SHA-512iR^R_cCsJtjtjtjtjj}tt|j|tjdS(N( RRwRxRRgRyR`R|R@(RRJ((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@6s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR|.s t_NonecBs&eZdZdZdZdZdZRS(tnones%No digital signature or MAC performediR^R_(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR~<s t _RawKeyMgmtcBseZdZdZRS(cCs tdS(N(R7(RR8tbitsizetcektheaders((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytwrapGscCs tdS(N(R7(RR8RtekR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytunwrapJs(R R!RR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyREs t_RSAcBs,eZdZdZdZdZRS(cCs ||_dS(N(RJ(RRJ((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@PscCsFt|tstdn|jdkrBtd|jndS(Nskey is not a JWK objecttRSA(t isinstanceRR(tkey_typeR(RR8((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt _check_keySscCsX|j||s"t|}n|jd}|j||j}i|d6|d6S(NtwrapKeyRR(RR+REtencryptRJ(RR8RRRtrkR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRZs  cCs_|j||jd}|j||j}t||kr[t|t|n|S(Ntdecrypt(RRERRJR&R(RR8RRRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRbs  (R R!R@RRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRNs   t_Rsa15cBs8eZdZdZdZdZdZdZdZRS(tRSA1_5sRSAES-PKCS1-v1_5iR^tkexcCs tt|jtjdS(N(R`RR@RRj(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@sscCsc|j|t|}y1tt|j||||}tdWntk r^|SXdS(NtDummy(RR+R`RRt Exception(RR8RRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRvs  ! ( R R!RRRRRR@R(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRks t_RsaOaepcBs/eZdZdZdZdZdZdZRS(sRSA-OAEPs#RSAES OAEP using default parametersiR^RcCs>tt|jtjtjtjtjddS(N( R`RR@RtOAEPRxRtSHA1tNone(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t _RsaOaep256cBs/eZdZdZdZdZdZdZRS(s RSA-OAEP-256s.RSAES OAEP using SHA-256 and MGF1 with SHA-256iR^RcCs>tt|jtjtjtjtjddS(N( R`RR@RRRxRRaR(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t_AesKwcBs2eZdZdZdZdZdZRS(cCst|_dS(N(RR>(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@scCst|tstdn|jdkrBtd|jnt|j|}t||jkrt |jt|n|S(Nskey is not a JWK objecttoct( RRR(RRRRER&RR(RR8topR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt_get_keyscCst|j|d}|s't|}nd}t|}gtdt|dD]}|||d!^qR} t| } xtddD]} xtd| D]}ttj|tj d|j j } | j || || j } tt| d | | |dAd}| d | |ii@iRR(RR+RtrangeR$R R tAESR tECBR>t encryptorRBRFR3R5(RR8RRRRtivtatiRTR/tjR1tbR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs$ 6 !)cCs|j|d}d}t|}gtdt|dD]}|||d!^q=} | jd} t| } xtdddD]} xt| dddD]}t| } t| | | |dAd| |}ttj |t j d |j j }|j||j}|d } |d | |isDecryption FailedR[(RRRR$tpopR5R3R R RR RR>t decryptorRBRFt RuntimeErrortjoinR&R(RR8RRRRRtaivRRTRR/RtdatatrtdRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs* 6  '  N(R R!RRR@RRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs   t_A128KWcBs&eZdZdZdZdZdZRS(tA128KWsAES Key Wrap using 128-bit keyiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t_A192KWcBs&eZdZdZdZdZdZRS(tA192KWsAES Key Wrap using 192-bit keyiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t_A256KWcBs&eZdZdZdZdZdZRS(tA256KWsAES Key Wrap using 256-bit keyiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t _AesGcmKwcBs2eZdZdZdZdZdZRS(cCst|_dS(N(RR>(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@ scCst|tstdn|jdkrBtd|jnt|j|}t||jkrt |jt|n|S(Nskey is not a JWK objectR( RRR(RRRRER&RR(RR8RR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR sc Cs|j|d}|s't|}ntd}ttj|tj|d|j}|j}|j ||j } |j } i|d6| d6it |d6t | d6d6S( NRi`R>RRRttagtheader( RR+R R RR tGCMR>RRBRFRR( RR8RRRRRtcipherRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs    c Cs|j|d}d|kr-tdnt|d}d|krXtdnt|d}ttj|tj||d|j}|j } | j || j } t | |krt |t | n| S(NRRs&Invalid Header, missing "iv" parameterRs'Invalid Header, missing "tag" parameterR>(RR(RR R RR RR>RRBRFR&R( RR8RRRRRRRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR&s  !  N(R R!RRR@RRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs   t _A128GcmKwcBs&eZdZdZdZdZdZRS(t A128GCMKWs+Key wrapping with AES GCM using 128-bit keyiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR9s t _A192GcmKwcBs&eZdZdZdZdZdZRS(t A192GCMKWs+Key wrapping with AES GCM using 192-bit keyiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRBs t _A256GcmKwcBs&eZdZdZdZdZdZRS(t A256GCMKWs+Key wrapping with AES GCM using 256-bit keyiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRKs t _Pbes2HsAesKwcBs>eZdZdZdZdZdZdZdZ RS(cCs.t|_itd6td6td6|_dS(Niii(RR>RRRtaeskwmap(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@Zs c Cs>t|tr|}n|jd}t|jjdd|}|jdkretj}nH|jdkrtj}n*|jdkrtj}n t dt d|dt |j d |d |d |j }|j|} t| |j krt|j t| ntd d dddt| S(Ntutf8tiiisUnknown Hash Sizet algorithmtlengthtsaltt iterationsR>tktyRtusetenctk(RtbytestencodeRthashsizeRRaRdRgR(RR'RR>tderiveR&RR$RR( RR^R8tp2stp2ctplainRthashalgtkdfR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR^s"   c Cs{td}d}|j|d|||}|j|j}|j||||} it|d6|d6| d<| S(Nii R^RRR(R+RRRRR( RR8RRRRRtkektaeskwtret((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRus c Csd|krtdnd|kr6tdnt|d}|d}|j|d|||}|j|j}|j||||S(NRs'Invalid Header, missing "p2s" parameterRs'Invalid Header, missing "p2c" parameterR^(R(RRRRR( RR8RRRRRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs   N( R R!RRRRR@RRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRTs   t_Pbes2Hs256A128KwcBs,eZdZdZdZdZdZdZRS(sPBES2-HS256+A128KWs-PBES2 with HMAC SHA-256 and "A128KW" wrappingiR^Ri(R R!RRRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t_Pbes2Hs384A192KwcBs,eZdZdZdZdZdZdZRS(sPBES2-HS384+A192KWs-PBES2 with HMAC SHA-384 and "A192KW" wrappingiR^Ri(R R!RRRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t_Pbes2Hs512A256KwcBs,eZdZdZdZdZdZdZRS(sPBES2-HS512+A256KWs-PBES2 with HMAC SHA-512 and "A256KW" wrappingiR^Ri(R R!RRRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t_DirectcBsAeZdZdZdZdZdZdZdZdZ RS(tdirs$Direct use of a shared symmetric keyiR^RcCsFt|tstdn|jdkrBtd|jndS(Nskey is not a JWK objectR(RRR(RR(RR8((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRscCsg|j||r|dfSt|jd}t||kr\t|t|ni|d6S(NRR(RRRRER&R(RR8RRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs  cCsk|j||dkr(tdnt|jd}t||krgt|t|n|S(NR[sInvalid Encryption Key.R(RR(RRER&R(RR8RRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs  ( R R!RRRRRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs  t_EcdhEscBsSeZdZdZdZdZd ZdZdZ dZ dZ dZ RS( sECDH-ESsECDH-ES using Concat KDFR^RcCs.t|_itd6td6td6|_dS(Niii(RR>RRRR(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s cCsFt|tstdn|jdkrBtd|jndS(Nskey is not a JWK objecttEC(RRR(RR(RR8((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRsc Cs,tjdt|}|t|jd7}d|krMt|dnd}|tjdt|7}||7}d|krt|dnd}|tjdt|7}||7}|tjd|7}|jtj|} t dt j dt |d|d |j } | j| S( Ns>IRtapuR[tapvRRt otherinfoR>(tstructtpackR$RRRtexchangeRtECDHR RRaR'R>R( RtprivkeytpubkeyR^RRRRRt shared_keytckdf((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt_derives" "   c Cs+|j||jdkrD|dk r7tdn|d}n|j}|d}tjd|jd|j}|j|j d|j d|||}|jdkri|d6}nI|j |} tdd d dd t |} | j | |||}it |jd 6|d <|S(Ns"ECDH-ES cannot use an existing CEKRR^Rtcrvt unwrapKeyRRRRRtepkR(RRRRRtgenerateRt key_curveRRERRRRt export_public( RR8RRRR^RtdkRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs$      !c Csd|krtdn|j||jdkrD|d}n|j}|d}t|d}|j|jd|jd|||}|jdkr|S|j|}tddd dd t|} |j | |||} | SdS( NRs'Invalid Header, missing "epk" parameterRR^RRRRRR( R(RRRRRRERRR( RR8RRRR^RRRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs"      !N( R R!RRRRRRR@RRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs    t_EcdhEsAes128KwcBs&eZdZdZdZdZdZRS(sECDH-ES+A128KWs.ECDH-ES using Concat KDF and "A128KW" wrappingiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR*s t_EcdhEsAes192KwcBs&eZdZdZdZdZdZRS(sECDH-ES+A192KWs.ECDH-ES using Concat KDF and "A192KW" wrappingiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR3s t_EcdhEsAes256KwcBs&eZdZdZdZdZdZRS(sECDH-ES+A256KWs.ECDH-ES using Concat KDF and "A128KW" wrappingiR^R(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR<s t_RawJWEcBseZdZdZRS(cCs tdS(N(R7(RRRtm((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRGscCs tdS(N(R7(RRRRR1tt((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRJs(R R!RR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyREs t_AesCbcHmacSha2cBs2eZdZdZdZdZdZRS(cCs8t|_||_tjj|_|jd|_dS(Ni( RR>R?R Rt block_sizet blocksizeRt wrap_key_size(RR?((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@Rs  cCstt|d}tj||jd|j}|j||j||j||j||j}|t|j  S(Ni@R>( R3R&RRAR?R>RBRFR'R(RRRRR1talRCR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt_macXs     c Cs|t|j }|t|j}t|j}ttj|tj|d|j }|j }t |jj } | j || j} |j | |j} |j|||| } || | fS(s Encrypt according to the selected encryption and hashing functions. :param k: Encryption key (optional) :param a: Additional Authentication Data :param m: Plaintext Returns a dictionary with the computed data. R>(R'RR+RR R RR tCBCR>RRtpadderRBRFR( RRRRthkeytekeyRRRRt padded_dataR1R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRcs   c Cs|t|j }|t|j}tj||j||||sYtdnttj|t j |d|j }|j } | j || j} t|jj} | j | | jS(sJ Decrypt according to the selected encryption and hashing functions. :param k: Encryption key (optional) :param a: Additional Authenticated Data :param iv: Initialization Vector :param e: Ciphertext :param t: Authentication Tag Returns plaintext or raises an error sFailed to verify MACR>(R'RRtbytes_eqRRR R RR RR>RRBRFRRtunpadder( RRRRR1RRtdkeyRRRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR~s $  N(R R!RRR@RRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRNs   t _A128CbcHs256cBs/eZdZdZdZdZdZdZRS(s A128CBC-HS256s&AES_128_CBC_HMAC_SHA_256 authenticatediRcCs tt|jtjdS(N(R`RR@RRa(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t _A192CbcHs384cBs/eZdZdZdZdZdZdZRS(s A192CBC-HS384s&AES_192_CBC_HMAC_SHA_384 authenticatediRcCs tt|jtjdS(N(R`RR@RRd(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t _A256CbcHs512cBs/eZdZdZdZdZdZdZRS(s A256CBC-HS512s&AES_256_CBC_HMAC_SHA_512 authenticatediRcCs tt|jtjdS(N(R`R R@RRg(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s(R R!RRRRRR@(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR s t_AesGcmcBs)eZdZdZdZdZRS(cCst|_|j|_dS(N(RR>RR(R((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR@s cCsxtd}ttj|tj|d|j}|j}|j||j ||j }|||j fS(s Encrypt accoriding to the selected encryption and hashing functions. :param k: Encryption key (optional) :param a: Additional Authentication Data :param m: Plaintext Returns a dictionary with the computed data. i`R>( R+R R RR RR>Rtauthenticate_additional_dataRBRFR(RRRRRRRR1((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs    cCs]ttj|tj||d|j}|j}|j||j||j S(sK Decrypt accoriding to the selected encryption and hashing functions. :param k: Encryption key (optional) :param a: Additional Authenticated Data :param iv: Initialization Vector :param e: Ciphertext :param t: Authentication Tag Returns plaintext or raises an error R>( R R RR RR>RR RBRF(RRRRR1RRR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs !   N(R R!RRR@RR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR s  t_A128GcmcBs&eZdZdZdZdZdZRS(tA128GCMsAES GCM using 128-bit keyiR(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyR s t_A192GcmcBs&eZdZdZdZdZdZRS(tA192GCMsAES GCM using 192-bit keyiR(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs t_A256GcmcBs&eZdZdZdZdZdZRS(tA256GCMsAES GCM using 256-bit keyiR(R R!RRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRs tJWAcBsOeZdZi$ed6ed6ed6ed6ed6ed6e d6e d6e d 6e d 6e d 6ed 6ed 6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6e d6e!d6e"d 6e#d!6e$d"6e%d#6e&d$6Z'e(d)d%Z*e(d&Z+e(d'Z,e(d(Z-RS(*sSJWA Signing Algorithms. This class provides access to all JWA algorithms. R]RcRfRiRlRnRpRrRtRvR{R}RRsRSA-OAEPs RSA-OAEP-256RRRRsECDH-ESsECDH-ES+A128KWsECDH-ES+A192KWsECDH-ES+A256KWRRRsPBES2-HS256+A128KWsPBES2-HS384+A192KWsPBES2-HS512+A256KWs A128CBC-HS256s A192CBC-HS384s A256CBC-HS512R RRcCs8|j|}|dk r1|j|kr1tn|S(N(talgorithms_registryRRtKeyError(tclsRRR^((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytinstantiate_alg3s  cCs?y|j|ddSWn!tk r:td|nXdS(NRR_s(%s is not a valid Signign algorithm name(RRR(RR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt signing_alg:s  cCs?y|j|ddSWn!tk r:td|nXdS(NRRs/%s is not a valid Key Management algorithm name(RRR(RR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyt keymgmt_algBs  cCs?y|j|ddSWn!tk r:td|nXdS(NRRs+%s is not a valid Encryption algorithm name(RRR(RR((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pytencryption_algJs  N(.R R!t__doc__R\RbReRhRkRmRoRqRsRuRzR|R~RRRRRRRRRRRRRRRRRRRR R RRRt classmethodRRRRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyRsV (dR"R)RtbinasciiRRtcryptography.exceptionsRtcryptography.hazmat.backendsRtcryptography.hazmat.primitivesRRRt)cryptography.hazmat.primitives.asymmetricRRR RPt&cryptography.hazmat.primitives.ciphersR R R t,cryptography.hazmat.primitives.kdf.concatkdfR t)cryptography.hazmat.primitives.kdf.pbkdf2Rt&cryptography.hazmat.primitives.paddingRtsixtjwcrypto.commonRRRRRRRRt jwcrypto.jwkRt add_metaclasstABCMetatobjectRR&R'R+R3R5R6R=RIRLRZR\RbReRhRkRmRoRqRsRuRzR|R~RRRRRRRRRRRRRRRRRRRRRRRRRRR R R RRR(((s0/usr/lib/python2.7/site-packages/jwcrypto/jwa.pyts                      F   4   8   !_    K   .