a
    !f                     @   s  d dl Z d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZm	Z	 ddd	d
dddZ
ddd	d
ddddZddd	dddZddd	dddddddddZddd	dddZdd d!d"d#dZd$Zd%Zd&Zd'eeef Zeeed(gd)Zeeed*Zd+Zd,Zd'eeef Zeeed(gd)Zeeed*Zd-Zd.Zd'eeef Zeeed(gd)Zeeed*Zd/Z d0Z!d'e ee!f Z"ee e!d(gd)Z#ee e!d*Z$d1Z%d2diZ&d3Z'ee%e&e'd4gd)Z(ee%e&e'd5Z)ddd6Z*d7Z+ee*e+d8gd)Z,ee*e+d9Z-d:Z.d2diZ/d;Z0d<dd6Z1d=Z2d/Z3d0Z4ee.e/e0d4e1e2d8e3e4d(gd)Z5G d>d? d?e j6Z7d@Z8ddAd!dBddCdDdEdFdGdHdZ9dIZ:dJZ;dKZ<dLZ=dMZ>dNe<e;e:e=e>f Z?dOe;ige<e:e=e>dPZ@e<e;e:e=e>dQZAddRd!dSddTdUdVdWdXdYdZd[ZBd\ZCd]ZDd^ZEd_ZFd`ZGdNeEeDeCeFeGf ZHdOeDigeEeCeFeGdPZIeEeDeCeFeGdQZJdaZKdbZLdcZMddZNdedfdgdhZOdiZPdjZQdkZRdNePeNeMeQeRf ZSdOeNigePeMeQeRdPZTePeNeMeQeRdQZUddld!dmdndodpdZVdqZWdrZXdsdldtduZYdvZZdwZ[dxZ\dNeZeXeWe[e\f Z]dOeXigeZeWe[e\dPZ^eZeXeWe[e\dQZ_ddyd!dzd{d|d}dZ`d~ZaddydgduZbdZcdZddZedeceaedeef ZfeceaedeedZgddd!dtddZhdZidZjdZkdZldejeiekelf ZmejeiekeldZnddd!dddZodZpdZqdddgduZrdZsdZtdZudNeseqepeteuf ZvdOeqigesepeteudPZweseqepeteudQZxddd!dddZydZzdZ{dZ|dZ}dZ~dNe|e{eze}e~f ZdOe{ige|eze}e~dPZe|e{eze}e~dQZdZdZdZdZdZdNeeeeef ZdOeigeeeedPZeeeeedQZee	ddi ddgdi ddgdi dg dgdi ddgdi ddgggZdZdZdZdZdZdOeigeeeeedZeeeeeedZdZdZdZdZdZddd6ZdOeigeeeeedZeeeeeedZdZdZdZdZdddtduZdOeigeeeedZeeeeedZG dd de j6ZdS )    N)jwe)jwk)jws)base64url_decodebase64url_encode)json_decodejson_encodeZECzbilbo.baggins@hobbiton.examplesigzP-521zXAHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0KtzXAdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1)ktykidusecrvxyzXAAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt)r
   r   r   r   r   r   dZRSAaV  n4EPtAOCc9AlkeQHPzHStgAbgs7bTZLwUBZdR8_KuKPEHLd4rHVTeT-O-XV2jRojdNhxJWTDvNd7nqQ0VEiZQHz_AJmSCpMaJMRBSFKrKb2wqVwGU_NsYOYL-QtiWN2lbzcEe6XC0dApr5ydQLrHqkHHig3RBordaZ6Aj-oBHqFEHYpPe7Tpe-OfVfHd1E6cS6M1FZcD1NNLYD5lFHpPI9bTwJlsde3uhGqC0ZCuEHg8lhzwOHrtIQbS0FVbb9k3-tVTU4fg_3L_vniUFAKwuCLqKnS2BYwdq_mzSnbLY7h_qixoR7jig3__kRhuaxwUkRz5iaiQkqgc5gHdrNP5zwZAQAB)r
   r   r   neaV  bWUC9B-EFRIo8kpGfh0ZuyGPvMNKvYWNtB_ikiH9k20eT-O1q_I78eiZkpXxXQ0UTEs2LsNRS-8uJbvQ-A1irkwMSMkK1J3XTGgdrhCku9gRldY7sNA_AKZGh-Q661_42rINLRCe8W-nZ34ui_qOfkLnK9QWDDqpaIsA-bMwWWSDFu2MUBYwkHTMEzLYGqOe04noqeq1hExBTHBOBdkMXiuFhUq1BU6l-DqEiWxqg82sXt2h-LMnT3046AOYJoRioz75tSUQfGCshWTBnP5uDjd18kKhyv07lhfSJdrPdM5Plyl21hsFf4L_mHCuoFau7gdsPfHPxxjVOcOpBrQzwQz3Slxg_DwTXJcb6095RoXygQCAZ5RnAvZlno1yhHtnUex_fp7AZ_9nRaO7HX_-SFfGQeutao2TDjDAWU4Vupk8rw9JR0AzZ0N2fvuIAmr_WCsmGpeNqQnev1T7IyEsnh8UMt-n5CafhkikzhEsrmndH6LxOrvRJlsPp6Zv8bUq0kzuKE2dh-cTf6ERF4k4e_jy78GfPYUIaUyoSSJuBzp3Cubk3OCqs6grT8bR_cu0Dm1MZwWmtdqDyI95HrUeq3MP15vMMON8lHTeZu2lmKvwqW7anV5UzhM1iZ7z4yMkuUwFWoBvyY898EXvRD-hdqRxHlSqAZ192zB3pVFJ0s7pFczB8PVvXkvJrj2L-GYQ7v3y9r6Kw5g9SahXBwsWUzp19TVlgI-YV85q1NIb1rxQtD-IsXXR3-TanevuRPRt5OBOdiMGQp8pbt26gljYfKU_E9xn-RULHz0-ed9E9gXLKD4VGngpz-PfQ_q29pk5xWHoJp009Qf1HvChixRX59ehikzCLDmDGduhylc9o7r84rEUVn7pzQ6PF83Y-iBZx5NT-TpnOZKF1pErAMVeKzFEl41DlHHqqBLSM0W1sOFbwTxYWZDm6sI6og5iTbwQGIC3gnJKbi_7k_vJgGHwHxgPaX2PnvP-zyEkDERuf-ry4c_Z11Cq9AqC2yeL6kdKT1cYF8z3PiqvXQN0zwMeE-sBvZgi289XP9XCQF3VWqPzMKnIgQp7_Tugo6-NZBKCQsMf3HaEGBjTVJs_jcK8-TRXvaKe-7ZMaQj8VfBdYkssbu0NKDDhjJ-GtiseaDVWt7dcH0cfwxgFUHpQh7FoCrjFJ6h6ZEpMF6xmujs4qMpPz8aaI4)r
   r   r   r   r   r   pqdpdqqioctz$018c0ae5-4d9b-471b-bfd6-eef314bc7037ZHS256z+hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg)r
   r   r   algkz$1e571774-2e08-40da-8308-e8d68773842dencZA256GCMz+AAPapAv4LbFbiVawEjagUBluYqN5rhna-8nuldDvOx8ZSXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4ZHeyJhbGciOiJSUzI1NiIsImtpZCI6ImJpbGJvLmJhZ2dpbnNAaG9iYml0b24uZXhhbXBsZSJ9aV  MRjdkly7_-oTPTS3AXP41iQIGKa80A0ZmTuV5MEaHoxnW2e5CZ5NlKtainoFmKZopdHM1O2U4mwzJdQx996ivp83xuglII7PNDi84wnB-BDkoBwA78185hX-Es4JIwmDLJK3lfWRa-XtL0RnltuYv746iYTh_qHRD68BNt1uSNCrUCTJDt5aAE6x8wW1Kt9eRo4QPocSadnHXFxnt8Is9UzpERV0ePPQdLuW3IS_de3xyIrDaLGdjluPxUAhb6L2aXic1U12podGU0KLUQSE_oI-ZnmKJ3F4uOZDnd6QZWJushZ41Axf_fcIe8u9ipH84ogoree7vjbU5y18kDquDgz%s.%s.%s)	protected	signature)payloadZ
signatures)r   r   r   ZHeyJhbGciOiJQUzM4NCIsImtpZCI6ImJpbGJvLmJhZ2dpbnNAaG9iYml0b24uZXhhbXBsZSJ9aV  cu22eBqkYDKgIlTpzDXGvaFfz6WGoz7fUDcfT0kkOy42miAh2qyBzk1xEsnk2IpN6-tPid6VrklHkqsGqDqHCdP6O8TTB5dDDItllVo6_1OLPpcbUrhiUSMxbbXUvdvWXzg-UD8biiReQFlfz28zGWVsdiNAUf8ZnyPEgVFn442ZdNqiVJRmBqrYRXe8P_ijQ7p8Vdz0TTrxUeT3lm8d9shnr2lfJT8ImUjvAA2Xez2Mlp8cBE5awDzT0qI0n6uiP1aCN_2_jLAeQTlqRHtfa64QQSUmFAAjVKPbByi7xho0uTOcbH510a6GYmJUAfmWjwZ6oD4ifKo8DYM-X72EawZHeyJhbGciOiJFUzUxMiIsImtpZCI6ImJpbGJvLmJhZ2dpbnNAaG9iYml0b24uZXhhbXBsZSJ9zAE_R_YZCChjn4791jSQCrdPZCNYqHXCTZH0-JZGYNlaAjP2kqaluUIIUnC9qvbu9Plon7KRTzoNEuT4Va2cmL1eJAQy3mtPBu_u_sDDyYjnAMDxXPn7XrT0lw-kvAD890jl8e2puQens_IEKBpHABlsbEPX6sFY8OcGDqoRuBomu9xQ2ZPeyJhbGciOiJIUzI1NiIsImtpZCI6IjAxOGMwYWU1LTRkOWItNDcxYi1iZmQ2LWVlZjMxNGJjNzAzNyJ9Z+s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0ZeyJhbGciOiJIUzI1NiJ9r   Z+bWUSVaxorn7bEF1djytBd0kHv70Ly5pvbomzMWSOr20)r   headerr   )r   r   r   r   )r   r   Z+xuLifqLGiblpv9zBpuZczWhNj1gARaLV3UxvxhJxZuk)r   r   )r   r   r   ZeyJhbGciOiJSUzI1NiJ9aV  MIsjqtVlOpa71KE-Mss8_Nq2YH4FGhiocsqrgi5NvyG53uoimic1tcMdSg-qptrzZc7CG6Svw2Y13TDIqHzTUrL_lR2ZFcryNFiHkSw129EghGpwkpxaTn_THJTCglNbADko1MZBCdwzJxwqZc-1RlpO2HibUYyXSwO97BSe0_evZKdjvvKSgsIqjytKSeAMbhMBdMma622_BG5t4sdbuCHtFjp9iJmkio47AIwqkZV1aIZsv33uPUqBBCXbYoQJwt7mxPftHmNlGoOSMxR_3thmXTCm4US-xiNOyhbm8afKK64jU6_TPtQHiJeQJxz9G3Tx-083B745_AfYOnlC9wZES512zARcVLnaJJaUWG8fG-8t5BREVAuTY8n8YHjwDO1muhcdCoFZFFjfISu0Cdkn9Ybdlmi54ho0x924DUz8sK7ZXkhc7AFM8ObLfTvNCrqcI3Jkl2U5IX3utNhODH6v7xgy1Qahsn0fyb4zSAkje8bAWz4vIfj5pCMYxxm4fgV3q7ZYhm5eDc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )Cookbook08JWSTestsc                 C   s   t t}t td}tjf i t}tjf i t}tj	|d}|
|d | | t|jdd |tt| |tt| d S Nutf-8r   Tcompact)r   Payload_plaintext_b64_4JWS_Protected_Header_4_1_2decoder   JWKRSA_Public_Key_3_3RSA_Private_Key_3_4r   JWSadd_signatureassertEqualJWS_compact_4_1_3	serializedeserializer   JWS_general_4_1_3JWS_flattened_4_1_3)self	plaintextr   pub_keypri_keys r9   X/var/www/html/python-backend/venv/lib/python3.9/site-packages/jwcrypto/tests-cookbook.pytest_4_1_signing'  s    z#Cookbook08JWSTests.test_4_1_signingc                 C   s   t t}t td}tjf i t}tjf i t}tj	|d}|
|d | | }||| |t| |tt| |tt| d S Nr"   r#   )r   r&   JWS_Protected_Header_4_2_2r(   r   r)   r*   r+   r   r,   r-   r0   r1   JWS_compact_4_2_3r   JWS_general_4_2_3JWS_flattened_4_2_3r4   r5   r   r6   r7   r8   r	   r9   r9   r:   test_4_2_signing3  s    z#Cookbook08JWSTests.test_4_2_signingc                 C   s   t t}t td}tjf i t}tjf i t}tj	|d}|
|d | | }||| |t| |tt| |tt| d S r<   )r   r&   JWS_Protected_Header_4_3_2r(   r   r)   EC_Public_Key_3_1EC_Private_Key_3_2r   r,   r-   r0   r1   JWS_compact_4_3_3r   JWS_general_4_3_3JWS_flattened_4_3_3rA   r9   r9   r:   test_4_3_signingD  s    z#Cookbook08JWSTests.test_4_3_signingc                 C   s   t t}t td}tjf i t}tj|d}|	|d | |j
dd}||| | |t |t| |tt| |tt| d S r!   )r   r&   JWS_Protected_Header_4_4_2r(   r   r)   Symmetric_Key_MAC_3_5r   r,   r-   r0   r1   r.   JWS_compact_4_4_3r   JWS_general_4_4_3JWS_flattened_4_4_3)r4   r5   r   keyr8   r	   r9   r9   r:   test_4_4_signingU  s    z#Cookbook08JWSTests.test_4_4_signingc                 C   s   t t}t td}tt}tjf i t}t	j
|d}||d || | }||| | t|t |tt| |tt| d S r<   )r   r&   JWS_Protected_Header_4_6_2r(   r   JWS_Unprotected_Header_4_6_2r   r)   rK   r   r,   r-   r0   r1   r.   r   JWS_flattened_4_6_3JWS_general_4_6_3)r4   r5   r   r   rO   r8   r	   r9   r9   r:   test_4_6_signingd  s    z#Cookbook08JWSTests.test_4_6_signingc                 C   s   t t}tt}tjf i t}tj|d}|	|d d | |
 }||| | t|t |tt| |tt| d S )Nr#   )r   r&   r   JWS_Unprotected_Header_4_7_2r   r)   rK   r   r,   r-   r0   r1   r.   r   JWS_flattened_4_7_3JWS_general_4_7_3)r4   r5   r   rO   r8   r	   r9   r9   r:   test_4_7_signings  s    z#Cookbook08JWSTests.test_4_7_signingc           
      C   s  t t}tj|d}t td}tt}tj	f i t
}||d || tt}tj	f i t}||d d | t td}tj	f i t}||d | | }tj	f i t}tj	f i t}	||| |||	 ||| |tt| |tt|	 |tt| d S )Nr#   r"   )r   r&   r   r,   JWS_Protected_Header_4_8_2r(   r   JWS_Unprotected_Header_4_8_2r   r)   r+   r-   JWS_Unprotected_Header_4_8_3rE   JWS_Protected_Header_4_8_4rK   r0   r*   rD   r1   JWS_general_4_8_5)
r4   r5   r8   r   r   r7   Zsym_keyr	   rsa_keyec_keyr9   r9   r:   test_4_8_signing  s.    z#Cookbook08JWSTests.test_4_8_signingN)
__name__
__module____qualname__r;   rB   rI   rP   rU   rY   ra   r9   r9   r9   r:   r    %  s   r    s  You can trust us to stick with you through thick and thin–to the bitter end. And you can trust us to keep any secret of yours–closer than you keep it yourself. But you cannot trust us to let you face trouble alone, and go off without a word. We are your friends, Frodo.zfrodo.baggins@hobbiton.exampleaV  maxhbsmBtdQ3CNrKvprUE6n9lYcregDMLYNeTAWcLj8NnPU9XIYegTHVHQjxKDSHP2l-F5jS7sppG1wgdAqZyhnWvXhYNvcM7RfgKxqNx_xAHx6f3yy7s-M9PSNCwPC2lh6UAkR4I00EhV9lrypM9Pi4lBUop9t5fS9W5UNwaAllhrd-osQGPjIeI1deHTwx-ZTHu3C60Pu_LJIl6hKn9wbwaUmA4cR5Bd2pgbaY7ASgsjCUbtYJaNIHSoHXprUdJZKUMAzV0WOKPfA6OPI4oypBadjvMZ4ZAj3BnXaSYsEZhaueTXvZB4eZOAjIyh2e_VOIKVMsnDrJYAVotGlvMQaV  Kn9tgoHfiTVi8uPu5b9TnwyHwG5dK6RE0uFdlpCGnJN7ZEi963R7wybQ1PLAHmpIbNTztfrheoAniRV1NCIqXaW_qS461xiDTp4ntEPnqcKsyO5jMAji7-CL8vhpYYowNFvIesgMoVaPRYMYT9TW63hNM0aWs7USZ_hLg6Oe1mY0vHTI3FucjSM86Nff4oIENt43r2fspgEPGRrdE6fpLc9Oaq-qeP1GFULimrRdndm-P8q8kvN3KHlNAtEgrQAgTTgz80S-3VD0FgWfgnb1PNmiuPUxO8OpI9KDIfu_acc6fg14nsNaJqXe6RESvhGPH2afjHqSy_Fd2vpzj85bQQz2DwQmZ43FoTnQ8IkUj3BmKRf5Eh2mizZA5xEJ2MinUE3sdTYKSLtaEoekX9vbBZuWxHdVhM6UnKCJ_2iNk8Z0ayLYHL0_G21aXf9-unynEpUsH7HHTklLpYAzOOx1ZgVljoxAdWNn3hiEFrjZLZGS7lOH-a3QQlDDQoJOJ2VFmUzte8LY4-W7IyaqH1ExujjMqkTAlTeRbv0VLQnfLY2xINnrWdwiQ93_VF099aP1ESeLja2nw-6iKIe-qT7mtCPozKfVtUYfz5HrJ_XY2kfexJINb9lhZHMv5p1skZpeIS-GPHCC6gRlKo1q-idn_qxyusfWv7WAxlSVfQfk8d6Et0zUfYKcL_or492vVc0PzwLSplbg4L3-Z5wL48mwiswbpzOyIgd2xHTHQmjJpFAIZ8q-zf9RmgJXkDrFs9rkdxPtAsL1WYdeCT5c125Fkdg317JVRDo1inX7x2Kdh8ERCreW8_4zXItuTl_KiXZNU5lvMQjWbIw2eTx1lpsflo0rYUziEgcO-QfpepdH8FWd7mUFyrXdnOkXJBCogChY6YKuIHGc_p8Le9MbpFKESzEaLlN1Ehf3B6oGBl5Iz_ayUlZj2IoQZ82znoUrpa9fVYNot87ACfzIG7q9Mv7RiPAderZi03tkVXAdaBau_9vs5rS-7HMtxkVrxSUvJY14TkXlHEzkC-lzZOqoFaZCr5l0tOVtREKoVqaAYhQiqIRGL-MzS4sCmRkxm5vZlXYx6RtE1n_AagjqajlkjieGlxTTThHD8Iga6foGBMaAr5uR1hGQpSc7Gl7CF1DZkBJMTQN6EshYzZfxW08mIO8M6Rzuh0beL6fG9mkDcIyPrBXx2bQ_mMZbbd5sTkYwhAIqfHsx8DayAaV  laLxI0j-nLH-_BgLOXMozKxmy9gffy2gTdvqzfTihJBuuzxg0V7yk1WClnQePFvG2K-pvSlWc9BRIazDrn50RcRai__3TDON395H3c62tIouJJ4XaRvYHFjZTZ2GXfz8YAImcc91Tfk0WXC2F5Xbb71ClQ1DDH151tlpH77f2ff7xiSxh9oSewYrcGTSLUeeCt36r1Kt3OSj7EyBQXoZlN7IxbyhMAfgIe7Mv1rOTOI5I8NQqeXXW8VlzNmoxaGMny3YnGir5Wf6Qt2nBq4qDaPdnaAuuGUGEecelIO1wx1BpyIfgvfjOhMBs9M8XL223Fg47xlGsMXdfuY-4jaqVwZgeyJhbGciOiJSU0ExXzUiLCJraWQiOiJmcm9kby5iYWdnaW5zQGhvYmJpdG9uLmV4YW1wbGUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0a  0fys_TY_na7f8dwSfXLiYdHaA2DxUjD67ieF7fcVbIR62JhJvGZ4_FNVSiGc_raa0HnLQ6s1P2sv3Xzl1p1l_o5wR_RsSzrS8Z-wnI3Jvo0mkpEEnlDmZvDu_k8OWzJv7eZVEqiWKdyVzFhPpiyQU28GLOpRc2VbVbK4dQKPdNTjPPEmRqcaGeTWZVyeSUvf5k59yJZxRuSvWFf6KrNtmRdZ8R4mDOjHSrM_s8uwIFcqt4r5GX8TKaI0zT5CbL5Qlw3sRc7u_hg0yKVOiRytEAEs3vZkcfLkP6nbXdC_PkMdNS-ohP78T2O6_7uInMGhFeX4ctHG7VelHGiT93JfWDEQi5_V9UN1rhXNrYu-0fVMkZAKX3VWi7lzA6BP430mZkvKuFBXHe5mQr4lqgobAUgz%s.%s.%s.%s.%sencrypted_key)
recipientsr   iv
ciphertexttag)r   re   rg   rh   ri   zsamwise.gamgee@hobbiton.examplea  wbdxI55VaanZXPY29Lg5hdmv2XhvqAhoxUkanfzf2-5zVUxa6prHRrI4pP1AhoqJRlZfYtWWd5mmHRG2pAHIlh0ySJ9wi0BioZBl1XP2e-C-FyXJGcTy0HdKQWlrfhTm42EW7Vv04r4gfao6uxjLGwfpGrZLarohiWCPnkNrg71S2CuNZSQBIPGjXfkmIy2tl_VWgGnL22GplyXj5YlBLdxXp3XeStsqo571utNfoUTU8E4qdzJ3U1DItoVkPGsMwlmmnJiwA7sXRItBCivR4M5qnZtdw-7v4WuR4779ubDuJ5nalMv2S66-RPcnFAzWSKxtBDnFJJDGIUe7Tzizjg1nms0Xq_yPub_UOlWn0ec85FCft1hACpWG8schrOBeNqHBODFskYpUc2LC5JA2TaPF2dA67dg1TTsC_FupfQ2kNGcE1LgprxKHcVWYQb86B-HozjHZcqtauBzFNV5tbTuB-TpkcvJfNcFLlH3b8mb-H_ox35FjqBSAjLKyoeqfKTpVjvXhd09knwgJf6VKq6UC418_TOljMVfFTWXUxlnfhOOnzW6HSSzD1c9WrCuVzsUMv54szidQ9wf1cYWf3g5qFDxDQKis99gcDaiCAwM3yEBIzuNeeCa5dartHDb1xEB_HcHSeYbghbMjGfasvKn0aZRsnTyC0xhWBlsolZEzRSA-OAEPa  n7fzJc3_WG59VEOBTkayzuSMM780OJQuZjN_KbH8lOZG25ZoA7T4Bxcc0xQn5oZE5uSCIwg91oCt0JvxPcpmqzaJZg1nirjcWZ-oBtVk7gCAWq-B3qhfF3izlbkosrzjHajIcY33HBhsy4_WerrXg4MDNE4HYojy68TcxT2LYQRxUOCf5TtJXvM8olexlSGtVnQnDRutxEUCwiewfmmrfveEogLx9EA-KMgAjTiISXxqIXQhWUQX1G7v_mV_Hr2YuImYcNcHkRvp9E7ook0876DhkO8v4UOZLwA1OlUX98mkoqwc58A_Y2lBYbVx1_s5lpPsEqbbH-nqIjh1fL0gdNfihLxnclWtW7pCztLnImZAyeCWAG7ZIfv-Rn9fLIv9jZ6r7r-MSH9sqbuziHN2grGjD_jfRluMHa0l84fFKl6bcqN1JWxPVhzNZo01yDF-1LiQnqUYSepPf6X3a2SOdkqBRiquE6EvLuSYIDpJq3jDIsgoL8Mo1LoomgiJxUwL_GWEOGu28gplyzm-9Q0U0nyhEf1uhSR8aJAQWAiFImWH5W_IQT9I7-yrindr_2fWQ_i1UgMsGzA7aOGzZfPljRy6z-tY_KuBG00-28S_aWvjyUc-Alp8AUyKjBZ-7CWH32fGWK48j1t-zomrwjL_mnhsPbGs0c9WsWgRzI-K8gEaV  7_2v3OQZzlPFcHyYfLABQ3XP85Es4hCdwCkbDeltaUXgVy9l9etKghvM4hRkOvbb01kYVuLFmxIkCDtpi-zLCYAdXKrAK3PtSbtzld_XZ9nlsYa_QZWpXB_IrtFjVfdKUdMz94pHUhFGFj7nr6NNxfpiHSHWFE1zD_AC3mY46J961Y2LRnreVwAGNw53p07Db8yD_92pDa97vqcZOdgtybH9q6uma-RFNhO1AoiJhYZj69hjmMRXx-x56HO9cnXNbmzNSCFCKnQmn4GQLmRj9sfbZRqL94bbtE4_e0Zrpo8RNo8vxRLqQNwIy85fc6BRgBJomt8QdQvIgPgWCv5HoQaV  zqOHk1P6WN_rHuM7ZF1cXH0x6RuOHq67WuHiSknqQeefGBA9PWs6ZyKQCO-O6mKXtcgE8_Q_hA2kMRcKOcvHil1hqMCNSXlflM7WPRPZu2qCDcqssd_uMbP-DqYthH_EzwL9KnYoH7JQFxxmcv5An8oXUtTwk4knKjkIYGRuUwfQTus0w1NfjFAyxOOiAQ37ussIcE6C6ZSsM3n41UlbJ7TCqewzVJaPJN5cxjySPZPD3Vp01a9YgAD6a3IIaKJdIxJS1ImnfPevSJQBE79-EXe2kSwVgOzvt-gsmM29QQ8veHy4uAqca5dZzMs7hkkHtw1z0jHV90epQJJlXXnH8QaV  19oDkBh1AXelMIxQFm2zZTqUhAzCIr4xNIGEPNoDt1jK83_FJA-xnx5kA7-1erdHdms_Ef67HsONNv5A60JaR7w8LHnDiBGnjdaUmmuO8XAxQJ_ia5mxjxNjS6E2yD44USo2JmHvzeeNczq25elqbTPLhUpGo1IZuG72FZQ5gTjXoTXC2-xtCDEUZfaUNh4IeAipfLugbpe0JAFlFfrTDAMUFpC3iXjxqzbEanflwPvj6V9iDSgjj8SozSM0dLtxvu0LIeIQAeEgT_yXcrKGmpKdSO08kLBx8VUjkbv_3Pn20Gyu2YEuwpFlM_H1NikuxJNKFGmnAq9LcnwwT0jvoQaV  S6p59KrlmzGzaQYQM3o0XfHCGvfqHLYjCO557HYQf72O9kLMCfd_1VBEqeD-1jjwELKDjck8kOBl5UvohK1oDfSP1DleAy-cnmL29DqWmhgwM1ip0CCNmkmsmDSlqkUXDi6sAaZuntyukyflI-qSQ3C_BafPyFaKrt1fgdyEwYa08pESKwwWisy7KnmoUvaJ3SaHmohFS78TJ25cfc10wZ9hQNOrIChZlkiOdFCtxDqdmCqNacnhgE3bZQjGp3n83ODSz9zwJcSUvODlXBPc2AycH6Ci5yjbxt4Ppox_5pjm6xnQkiPgj01GpsUssMmBN7iHVsrE7N2iznBNCeOUIQaV  FZhClBMywVVjnuUud-05qd5CYU0dK79akAgy9oX6RX6I3IIIPckCciRrokxglZn-omAY5CnCe4KdrnjFOT5YUZE7G_Pg44XgCXaarLQf4hl80oPEf6-jJ5Iy6wPRx7G2e8qLxnh9cOdf-kRqgOS3F48Ucvw3ma5V6KGMwQqWFeV31XtZ8l5cVI-I3NzBS7qltpUVgz2Ju021eyc7IlqgzR98qKONl27DuEES0aK0WE97jnsyO27Yp88Wa2RiBrEocM89QZI1seJiGDizHRUP4UZxw9zsXww46wy0P6f9grnYp7t8LkyDDk8eoI4KX6SNMNVcyVS9IWjlq8EzqZEKIA)r
   r   r   r   r   r   r   r   r   r   r   r   z-nBoKLH0YkLZPSI9a  rT99rwrBTbTI7IJM8fU3Eli7226HEB7IchCxNuh7lCiud48LxeolRdtFF4nzQibeYOl5S_PJsAXZwSXtDePz9hk-BbtsTBqC2UsPOdwjC9NhNupNNu9uHIVftDyucvI6hvALeZ6OGnhNV4v1zx2k7O1D89mAzfw-_kT3tkuorpDU-CpBENfIHX1Q58-Aad3FzMuo3Fn9buEP2yXakLXYa15BUXQsupM4A1GD4_H4Bd7V3u9h8Gkg8BpxKdUV9ScfJQTcYm6eJEBz3aSwIaK4T3-dwWpuBOhROQXBosJzS1asnuHtVMt2pKIIfux5BC6huIvmY7kzV7W7aIUrpYm_3H4zYvyMeq5pGqFmW2k8zpO878TRlZx7pZfPYDSXZyS0CfKKkMozT_qiCwZTSz4duYnt8hS4Z9sGthXn9uDqd6wycMagnQfOTs_lycTWmY-aqWVDKhjYNRf03NiwRtb5BE-tOdFwCASQj3uuAgPGrO2AWBe38UjQb0lvXn1SpyvYZ3WFc7WOJYaTa7A8DRn6MC6T-xDmMuxC0G7S2rscw5lQQU06MvZTlFOt0UvfuKBa03cxA_nIBIhLMjY2kOTxQMmpDPTr6Cbo8aKaOnx6ASE5Jx9paBpnNmOOKH35j_QlrQhDWUN6A2Gg8iFayJ69xDEdHAVCGRzN3woEI2ozDRsZceyJhbGciOiJSU0EtT0FFUCIsImtpZCI6InNhbXdpc2UuZ2FtZ2VlQGhvYmJpdG9uLmV4YW1wbGUiLCJlbmMiOiJBMjU2R0NNIn0al  o4k2cnGN8rSSw3IDo1YuySkqeS_t2m1GXklSgqBdpACm6UJuJowOHC5ytjqYgRL-I-soPlwqMUf4UgRWWeaOGNw6vGW-xyM01lTYxrXfVzIIaRdhYtEMRBvBWbEwP7ua1DRfvaOjgZv6Ifa3brcAM64d8p5lhhNcizPersuhw5f-pGYzseva-TUaL8iWnctc-sSwy7SQmRkfhDjwbz0fz6kFovEgj64X1I5s7E6GLp5fnbYGLa1QUiML7Cc2GxgvI7zqWo0YIEc7aCflLG1-8BboVWFdZKLK9vNoycrYHumwzKluLWEbSVmaPpOslY2n525DxDfWaVFUfKQxMF56vn4B9QMpWAbnypNimbM8zVOwZUCGiqJxhBI3IFVdPalHHvAs|  {"keys":[{"kty":"oct","kid":"77c7e2b8-6e13-45cf-8672-617b5b45243a","use":"enc","alg":"A128GCM","k":"XctOhJAkA-pD9Lh7ZgW_2A"},{"kty":"oct","kid":"81b20965-8332-43d9-a468-82160ad91ac8","use":"enc","alg":"A128KW","k":"GZy6sIZ6wl9NJOKB-jnmVQ"},{"kty":"oct","kid":"18ec08e1-bfa9-4d95-b205-2b4dd1d4321d","use":"enc","alg":"A256GCMKW","k":"qC57l_uxcm7Nm3K-ct4GFjx8tM1U8CZ0NLBvdQstiS8"}]}s"   entrap_o–peter_long–credit_tunZVBiCzVHNoLiR3F4V82uoTQZ6d3qNhUWfqheyPp4H8sjOWsDYajoej4c5Je6rlUtFPWdgtURtmeDV1gzPBES2-HS512+A256KWzjwk-set+jsonzA128CBC-HS256)r   Zctyr   ZeyJhbGciOiJQQkVTMi1IUzUxMitBMjU2S1ciLCJwMnMiOiI4UTFTemluYXNSM3hjaFl6NlpaY0hBIiwicDJjIjo4MTkyLCJjdHkiOiJqd2stc2V0K2pzb24iLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0a   23i-Tb1AV4n0WKVSSgcQrdg6GRqsUKxjruHXYsTHAJLZ2nsnGIX86vMXqIi6IRsfywCRFzLxEcZBRnTvG3nhzPk0GDD7FMyXhUHpDjEYCNA_XOmzg8yZR9oyjo6lTF6si4q9FZ2EhzgFQCLO_6h5EVg3vR75_hkBsnuoqoM3dwejXBtIodN84PeqMb6asmas_dpSsz7H10fC5ni9xIz424givB1YLldF6exVmL93R3fOoOJbmk2GBQZL_SEGllv2cQsBgeprARsaQ7Bq99tT80coH8ItBjgV08AtzXFFsx9qKvC982KLKdPQMTlVJKkqtV4Ru5LEVpBZXBnZrtViSOgyg6AiuwaS-rCrcD_ePOGSuxvgtrokAKYPqmXUeRdjFJwafkYEkiuDCV9vWGAi1DH2xTafhJwcmywIyzi4BqRpmdn_N-zl5tuJYyuvKhjKv6ihbsV_k1hJGPGAxJ6wUpmwC4PTQ2izEm0TuSE8oMKdTw8V3kobXZ77ulMwDs4pZ0HlwodAhOCILG5SQ2LQ9dgz!peregrin.took@tuckborough.examplezP-384Z@YU4rRUzdmVqmRtWOs2OpDE_T5fsNIodcG8G5FWPrTPMyxpzsSOGaQLpe2FpxBmu2z@A8-yxCHxkfBz3hKZfI1jUYMjUhsEveZ9THuwFjH2sCNdtksRJU7D5-SkgaFL1ETPz@iTx2pk7wW-GqJkHcEkFQb2EFyYcO7RugmaW3mRrQVAOUiPommT0IdnYK2xDlZh-jzmH-G2zVqgztUtnW_Z 0DJjBXri_kBcC46IkU5_Jk9BqaQeHdv2zECDH-ES+A128KWZA128GCM)r   r   r   AW  eyJhbGciOiJFQ0RILUVTK0ExMjhLVyIsImtpZCI6InBlcmVncmluLnRvb2tAdHVja2Jvcm91Z2guZXhhbXBsZSIsImVwayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwieCI6InVCbzRrSFB3Nmtiang1bDB4b3dyZF9vWXpCbWF6LUdLRlp1NHhBRkZrYllpV2d1dEVLNml1RURzUTZ3TmROZzMiLCJ5Ijoic3AzcDVTR2haVkMyZmFYdW1JLWU5SlUyTW84S3BvWXJGRHI1eVBOVnRXNFBnRXdaT3lRVEEtSmRhWTh0YjdFMCJ9LCJlbmMiOiJBMTI4R0NNIn0al  tkZuOO9h95OgHJmkkrfLBisku8rGf6nzVxhRM3sVOhXgz5NJ76oID7lpnAi_cPWJRCjSpAaUZ5dOR3Spy7QuEkmKx8-3RCMhSYMzsXaEwDdXta9Mn5B7cCBoJKB0IgEnj_qfo1hIi-uEkUpOZ8aLTZGHfpl05jMwbKkTe2yK3mjF6SBAsgicQDVCkcY9BLluzx1RmC3ORXaM0JaHPB93YcdSDGgpgBWMVrNU1ErkjcMqMoT_wtCex3w03XdLkjXIuEr2hWgeP-nkUZTPU9EoGSPj6fAS-bSz87RCPrxZdj_iVyC6QWcqAu07WNhjzJEPc4jVntRJ6K53NgPQ5p99l3Z408OUqj4ioYezbS6vTPlQZWuGzxmcreYjpHGJoa17EBgz$meriadoc.brandybuck@buckland.examplezP-256Z+Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0z+HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zwz+r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8Zyc9N8v5sYyv3iGQT926IUgzECDH-ESA"  eyJhbGciOiJFQ0RILUVTIiwia2lkIjoibWVyaWFkb2MuYnJhbmR5YnVja0BidWNrbGFuZC5leGFtcGxlIiwiZXBrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoibVBVS1RfYkFXR0hJaGcwVHBqanFWc1AxclhXUXVfdndWT0hIdE5rZFlvQSIsInkiOiI4QlFBc0ltR2VBUzQ2ZnlXdzVNaFlmR1RUMElqQnBGdzJTUzM0RHY0SXJzIn0sImVuYyI6IkExMjhDQkMtSFMyNTYifQa  BoDlwPnTypYq-ivjmQvAYJLb5Q6l-F3LIgQomlz87yW4OPKbWE1zSTEFjDfhU9IPIOSA9Bml4m7iDFwA-1ZXvHteLDtw4R1XRGMEsDIqAYtskTTmzmzNa-_q4F_evAPUmwlO-ZG45Mnq4uhM1fm_D9rBtWolqZSF3xGNNkpOMQKF1Cl8i8wjzRli7-IXgyirlKQsbhhqRzkv8IcY6aHl24j03C-AR2le1r7URUhArM79BY8soZU0lzwI-sD5PZ3l4NDCCei9XkoIAfsXJWmySPoeRb2Ni5UZL4mYpvKDiwmyzGd65KqVw7MsFfI_K767G9C9Azp73gKZD0DyUn1mn0WW5LmyX_yJ-3AROq8p1WZBfG-ZyJ6195_JGG2m9CsgzWCCkNa-x4BeB9hIDIfFuhgz%s..%s.%s.%s)r   rg   rh   ri   z$77c7e2b8-6e13-45cf-8672-617b5b45243azXctOhJAkA-pD9Lh7ZgW_2AZrefa467QzzKx6QABZceyJhbGciOiJkaXIiLCJraWQiOiI3N2M3ZTJiOC02ZTEzLTQ1Y2YtODY3Mi02MTdiNWI0NTI0M2EiLCJlbmMiOiJBMTI4R0NNIn0al  JW_i_f52hww_ELQPGaYyeAB6HYGcR559l9TYnSovc23XJoBcW29rHP8yZOZG7YhLpT1bjFuvZPjQS-m0IFtVcXkZXdH_lr_FrdYt9HRUYkshtrMmIUAyGmUnd9zMDB2n0cRDIHAzFVeJUDxkUwVAE7_YGRPdcqMyiBoCO-FBdE-Nceb4h3-FtBP-c_BIwCPTjb9o0SbdcdREEMJMyZBH8ySWMVi1gPD9yxi-aQpGbSv_F9N4IZAxscj5g-NJsUPbjk29-s7LJAGb15wEBtXphVCgyy53CoIKLHHeJHXex45Uz9aKZSRSInZI-wjsY0yu3cT4_aQ3i1o-tiE-F8Ios61EKgyIQ4CWao8PFMj8TTnpZvbb32Xvllea2OtmHAdccRQz$18ec08e1-bfa9-4d95-b205-2b4dd1d4321dZ	A256GCMKWz+qC57l_uxcm7Nm3K-ct4GFjx8tM1U8CZ0NLBvdQstiS8Zgz6NjyEFNm_vm8Gj6FwoFQZ+lJf3HbOApxMEBkCMOoTnnABxs_CvTWUmZQ2ElLvYNokZeyJhbGciOiJBMjU2R0NNS1ciLCJraWQiOiIxOGVjMDhlMS1iZmE5LTRkOTUtYjIwNS0yYjRkZDFkNDMyMWQiLCJ0YWciOiJrZlBkdVZRM1QzSDZ2bmV3dC0ta3N3IiwiaXYiOiJLa1lUMEdYXzJqSGxmcU5fIiwiZW5jIjoiQTEyOENCQy1IUzI1NiJ9a  Jf5p9-ZhJlJy_IQ_byKFmI0Ro7w7G1QiaZpI8OaiVgD8EqoDZHyFKFBupS8iaEeVIgMqWmsuJKuoVgzR3YfzoMd3GxEm3VxNhzWyWtZKX0gxKdy6HgLvqoGNbZCzLjqcpDiF8q2_62EVAbr2uSc2oaxFmFuIQHLcqAHxy51449xkjZ7ewzZaGV3eFqhpco8o4DijXaG5_7kp3h2cajRfDgymuxUbWgLqaeNQaJtvJmSMFuEOSAzw9Hdeb6yhdTynCRmu-kqtO5Dec4lT2OMZKpnxc_F1_4yDJFcqb5CiDSmA-psB2k0JtjxAj4UPI61oONK7zzFIu4gBfjJCndsZfdvG7h8wGjV98QhrKEnR7xKZ3KCr0_qR1B-gxpNk3xWUZDKW7jrb4WaRSNfbXVPlT5gz$81b20965-8332-43d9-a468-82160ad91ac8ZA128KWzGZy6sIZ6wl9NJOKB-jnmVQZQx0pmsDa8KnJc9JoZ CBI6oDw8MydIx1IBntf_lQcw2MmJKIQxZgeyJhbGciOiJBMTI4S1ciLCJraWQiOiI4MWIyMDk2NS04MzMyLTQzZDktYTQ2OC04MjE2MGFkOTFhYzgiLCJlbmMiOiJBMTI4R0NNIn0al  AwliP-KmWgsZ37BvzCefNen6VTbRK3QMA4TkvRkH0tP1bTdhtFJgJxeVmJkLD61A1hnWGetdg11c9ADsnWgL56NyxwSYjU1ZEHcGkd3EkU0vjHi9gTlb90qSYFfeF0LwkcTtjbYKCsiNJQkcIp1yeM03OmuiYSoYJVSpf7ej6zaYcMv3WwdxDFl8REwOhNImk2Xld2JXq6BR53TSFkyT7PwVLuq-1GwtGHlQeg7gDT6xW0JqHDPn_H-puQsmthc9Zg0ojmJfqqFvETUxLAF-KjcBTS5dNy6egwkYtOt8EIHK-oEsKYtZRaa8Z7MOZ7UGxGIMvEmxrGCPeJa14slv2-gaqK0kEThkaSqdYw0FkQZFZER7MWJZ1FBI_NKvn7Zb1LwZp9pUq6XHY0jfEZIlZ 5vUT2WOtQxKWcekM_IzVQwkGgzlFDwPiZweyJhbGciOiJBMTI4S1ciLCJraWQiOiI4MWIyMDk2NS04MzMyLTQzZDktYTQ2OC04MjE2MGFkOTFhYzgiLCJlbmMiOiJBMTI4R0NNIiwiemlwIjoiREVGIn0zHbDtOsdai1oYziSx25KEeTxmwnh8L8jKMFNc1k3zmMI6VB8hry57tDZ61jXyezSPt0fdLVfe6Jf5y5-JaCap_JQBcb5opbmT60uWGml8blyiMQmOn9J--XhhlYg0m-BHaqfDO5iTOWxPxFMUedx7WCy8mxgDHj0aBMG6152PsM-w5E_o2B3jDbrYBKhpYA7qi3AyijnCJ7BP9rr3U8kxExCpG3mK420TjOwzVILuUwuIxaLVmh5X-T7kmAZvcardversiontextz4.0fnzMeriadoc Brandybuckr   )Z
BrandybuckZMeriadoczMr. ZbdayzTA 2982ZgenderMZveCx9ece2orS7c_NZ 4YiiQ_ZzH76TaIkJmYfRFgOV9MIpnx4Xal  Z_3cbr0k3bVM6N3oSNmHz7Lyf3iPppGf3Pj17wNZqteJ0Ui8p74SchQP8xygM1oFRWCNzeIa6s6BcEtp8qEFiqTUEyiNkOWDNoF14T_4NFqF-p2Mx8zkbKxI7oPK8KNarFbyxIDvICNqBLba-v3uzXBdB89fzOI-Lv4PjOFAQGHrgv1rjXAmKbgkft9cB4WeyZw8MldbBhc-V_KWZslrsLNygon_JJWd_ek6LQn5NRehvApqf9ZrxB4aq3FXBxOxCys35PhCdaggy2kfUfl2OkwKnWUbgXVD1C6HxLIlqHhCwXDG59weHrRDQeHyMRoBljoV3X_bUTJDnKBFOod7nLz-cj48JMx3SnCZTpbQAkFVZvOaH_Rajnpy_3hOtqvZHRA)rf   r   rg   aadrh   ri   )r   re   rg   ro   rh   ri   ZWgEJsDS9bkoXQ3nRz jJIcM9J-hbx3wnqhf5FlkEYos0sHsF0HZeyJlbmMiOiJBMTI4R0NNIn0al  lIbCyRmRJxnB2yLQOTqjCDKV3H30ossOw3uD9DPsqLL2DM3swKkjOwQyZtWsFLYMj5YeLht_StAn21tHmQJuuNt64T8D4t6C7kC9OCCJ1IHAolUv4MyOt80MoPb8fZYbNKqplzYJgIL58g8N2v46OgyG637d6uuKPwhAnTGm_zWhqc_srOvgiLkzyFXPq1hBAURbc3-8BqeRb48iR1-_5g5UjWVD3lgiLCN_P7AW8mIiFvUNXBPJK3nOWL4teUPS8yHLbWeL83olU4UAgL48x-8dDkH23JykibVSQju-f7e-1xreHWXzWLHs1NqBbre0dEwK3HX_xM0LjUz77Krppgegoutpf5qaKg3l-_xMINmfZfNYLqpUe84KD45lvDiaBAQ)rf   unprotectedr   rg   rh   ri   )r   rp   re   rg   rh   ri   ZYihBoVOGsR1l7jCDZ 244YHfO_W7RMpQW81UjQrZcq5LSyqiPval  qtPIMMaOBRgASL10dNQhOa7Gqrk7Eal1vwht7R4TT1uq-arsVCPaIeFwQfzrSS6oEUWbBtxEasE0vC6r7sphyVziMCVJEuRJyoAHFSP3eqQPb4Ic1SDSqyXjw_L3svybhHYUGyQuTmUQEDjgjJfBOifwHIsDsRPeBz1NomqeifVPq5GTCWFo5k_MNIQURR2Wj0AHC2k7JZfu2iWjUHLF8ExFZLZ4nlmsvJu_mvifMYiikfNfsZAudISOa6O73yPZtL04k_1FI7WDfrb2w7OqKLWDXzlpcxohPVOLQwpA3mFNRKdY-bQz4Z4KX9lfz1cne31N4-8BKmojpw-OdQjKdLOGkC445Fb_K1tlDQXw2sBFze2m0Vm7JvjK2VpCKXS-kyg)rf   rp   rg   rh   ri   )rp   re   rg   rh   ri   c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )Cookbook08JWETestsc                 C   s   t }tt}tjf i t}tj||tjdg d}|	| |
 }||| | |j| |t| | |j| |tt| | |j| |tt| | |j| d S )NZRSA1_5)Zalgs)Payload_plaintext_5r   JWE_Protected_Header_5_1_4r   r)   RSA_key_5_1_1r   JWEZdefault_allowed_algsadd_recipientr0   r1   r.   r   JWE_compact_5_1_5r   JWE_general_5_1_5JWE_flattened_5_1_5r4   r5   r   r_   r   r   r9   r9   r:   test_5_1_encryptionU  s     

z&Cookbook08JWETests.test_5_1_encryptionc                 C   s   t }tt}tjf i t}t||}|| |	 }|
|| | |j| |
t| | |j| |
tt| | |j| |
tt| | |j| d S N)rr   r   JWE_Protected_Header_5_2_4r   r)   RSA_key_5_2_1r   ru   rv   r0   r1   r.   r   JWE_compact_5_2_5r   JWE_general_5_2_5JWE_flattened_5_2_5rz   r9   r9   r:   test_5_2_encryptionf  s    
z&Cookbook08JWETests.test_5_2_encryptionc                 C   s   t }t}td}t|tt}|| |jdd | }|	|| | 
|j| |	t| | 
|j| |	tt| | 
|j| |	tt| | 
|j| d S )Nutf8Tr$   )Payload_plaintext_5_3_1Password_5_3_1r(   r   ru   r   JWE_Protected_Header_no_p2xrv   r0   r1   r.   r   JWE_compact_5_3_5JWE_general_5_3_5JWE_flattened_5_3_5)r4   r5   passwordZ
unicodepwdr   r   r9   r9   r:   test_5_3_encryptionv  s    

z&Cookbook08JWETests.test_5_3_encryptionc                 C   s   t }tt}tjf i t}t||}|| |j	dd}|
|| | |j| |
t| | |j| |
tt| | |j| d S NTr$   )rr   r   !JWE_Protected_Header_no_epk_5_4_4r   r)   EC_key_5_4_1r   ru   rv   r0   r1   r.   r   JWE_compact_5_4_5JWE_general_5_4_5r4   r5   r   r`   r   r   r9   r9   r:   test_5_4_encryption  s    
z&Cookbook08JWETests.test_5_4_encryptionc                 C   s   t }tt}tjf i t}t||}|| |j	dd}|
|| | |j| |
t| | |j| |
tt| | |j| d S r   )rr   r   !JWE_Protected_Header_no_epk_5_5_4r   r)   EC_key_5_5_1r   ru   rv   r0   r1   r.   r   JWE_compact_5_5_5JWE_general_5_5_5r   r9   r9   r:   test_5_5_encryption  s    
z&Cookbook08JWETests.test_5_5_encryptionc                 C   s   t }tt}tjf i t}t||}|| |j	dd |	 }|
|| | |j| |
t| | |j| |
tt| | |j| d S r   )rr   r   JWE_Protected_Header_5_6_3r   r)   AES_key_5_6_1r   ru   rv   r0   r1   r.   r   JWE_compact_5_6_4r   JWE_general_5_6_4r4   r5   r   aes_keyr   r   r9   r9   r:   test_5_6_encryption  s    
z&Cookbook08JWETests.test_5_6_encryptionc                 C   s   t }tjf i t}t|tt}|| |j	dd}|
|| | |j| |
t| | |j| |
tt| | |j| |
tt| | |j| d S r   )rr   r   r)   AES_key_5_7_1r   ru   r   JWE_Protected_Header_no_ivtagrv   r0   r1   r.   r   JWE_compact_5_7_5JWE_general_5_7_5JWE_flattened_5_7_5)r4   r5   r   r   r   r9   r9   r:   test_5_7_encryption  s    
z&Cookbook08JWETests.test_5_7_encryptionc                 C   s   t }tt}tjf i t}t||}|| |	 }|
|| | |j| |
t| | |j| |
tt| | |j| |
tt| | |j| d S r|   )rr   r   JWE_Protected_Header_5_8_4r   r)   AES_key_5_8_1r   ru   rv   r0   r1   r.   r   JWE_compact_5_8_5r   JWE_general_5_8_5JWE_flattened_5_8_5r   r9   r9   r:   test_5_8_encryption  s    
z&Cookbook08JWETests.test_5_8_encryptionc                 C   s   t }tt}tjf i t}t||}|| |	 }|
|| | |j| |
t| | |j| |
tt| | |j| |
tt| | |j| d S r|   )rr   r   JWE_Protected_Header_5_9_4r   r)   r   r   ru   rv   r0   r1   r.   r   JWE_compact_5_9_5r   JWE_general_5_9_5JWE_flattened_5_9_5r   r9   r9   r:   test_5_9_encryption  s    
z&Cookbook08JWETests.test_5_9_encryptionc                 C   s   t }tt}tt}tjf i t}tj|||d}|	| |
 }||| | |j| |tt| | |j| |tt| | |j| d S )N)ro   )rr   r   JWE_Protected_Header_5_10_4
AAD_5_10_1r   r)   r   r   ru   rv   r0   r1   r.   r   r   JWE_general_5_10_5JWE_flattened_5_10_5)r4   r5   r   ro   r   r   r   r9   r9   r:   test_5_10_encryption  s    
z'Cookbook08JWETests.test_5_10_encryptionc                 C   s   t }tt}tt}tjf i t}t	|||}|
| | }||| | |j| |tt| | |j| |tt| | |j| d S r|   )rr   r   JWE_Protected_Header_5_11_4r   JWE_Unprotected_Header_5_11_5r   r)   r   r   ru   rv   r0   r1   r.   r   JWE_general_5_11_5JWE_flattened_5_11_5)r4   r5   r   rp   r   r   r   r9   r9   r:   test_5_11_encryption  s    
z'Cookbook08JWETests.test_5_11_encryptionc                 C   s   t }tt}tjf i t}t|d |}|| |	 }|
|| | |j| |
tt| | |j| |
tt| | |j| d S r|   )rr   r   JWE_Unprotected_Header_5_12_5r   r)   r   r   ru   rv   r0   r1   r.   r   JWE_general_5_12_5JWE_flattened_5_12_5)r4   r5   rp   r   r   r   r9   r9   r:   test_5_12_encryption  s    
z'Cookbook08JWETests.test_5_12_encryptionN)rb   rc   rd   r{   r   r   r   r   r   r   r   r   r   r   r   r9   r9   r9   r:   rq   S  s   rq   )ZunittestZjwcryptor   r   r   Zjwcrypto.commonr   r   r   r   rD   rE   r*   r+   rK   ZSymmetric_Key_Enc_3_6r&   r'   ZJWS_Signature_4_1_2r/   r2   r3   r=   ZJWS_Signature_4_2_2r>   r?   r@   rC   ZJWS_Signature_4_3_2rF   rG   rH   rJ   ZJWS_Signature_4_4_2rL   rM   rN   rQ   rR   ZJWS_Signature_4_6_2rT   rS   rV   ZJWS_Signature_4_7_2rX   rW   rZ   r[   ZJWS_Signature_4_8_2r\   ZJWS_Signature_4_8_3r]   ZJWS_Signature_4_8_4r^   ZTestCaser    rr   rt   ZJWE_IV_5_1_2ZJWE_Encrypted_Key_5_1_3rs   ZJWE_Ciphertext_5_1_4ZJWE_Authentication_Tag_5_1_4rw   rx   ry   r~   ZJWE_IV_5_2_2ZJWE_Encrypted_Key_5_2_3r}   ZJWE_Ciphertext_5_2_4ZJWE_Authentication_Tag_5_2_4r   r   r   r   r   ZJWE_IV_5_3_2ZJWE_Encrypted_Key_5_3_3r   ZJWE_Protected_Header_5_3_4ZJWE_Ciphertext_5_3_4ZJWE_Authentication_Tag_5_3_4r   r   r   r   ZJWE_IV_5_4_2ZJWE_Encrypted_Key_5_4_3r   ZJWE_Protected_Header_5_4_4ZJWE_Ciphertext_5_4_4ZJWE_Authentication_Tag_5_4_4r   r   ZJWE_flattened_5_4_5r   ZJWE_IV_5_5_2r   ZJWE_Protected_Header_5_5_4ZJWE_Ciphertext_5_5_4ZJWE_Authentication_Tag_5_5_4r   r   r   ZJWE_IV_5_6_2r   ZJWE_Ciphertext_5_6_3ZJWE_Authentication_Tag_5_6_3r   r   r   ZJWE_IV_5_7_2ZJWE_Encrypted_Key_5_7_3r   ZJWE_Protected_Header_5_7_4ZJWE_Ciphertext_5_7_4ZJWE_Authentication_Tag_5_7_4r   r   r   r   ZJWE_IV_5_8_2ZJWE_Encrypted_Key_5_8_3r   ZJWE_Ciphertext_5_8_4ZJWE_Authentication_Tag_5_8_4r   r   r   ZJWE_IV_5_9_2ZJWE_Encrypted_Key_5_9_3r   ZJWE_Ciphertext_5_9_4ZJWE_Authentication_Tag_5_9_4r   r   r   r   ZJWE_IV_5_10_2ZJWE_Encrypted_Key_5_10_3r   ZJWE_Ciphertext_5_10_4ZJWE_Authentication_Tag_5_10_4r   r   ZJWE_IV_5_11_2ZJWE_Encrypted_Key_5_11_3r   ZJWE_Ciphertext_5_11_4ZJWE_Authentication_Tag_5_11_4r   r   r   ZJWE_IV_5_12_2ZJWE_Encrypted_Key_5_12_3ZJWE_Ciphertext_5_12_4ZJWE_Authentication_Tag_5_12_4r   r   r   rq   r9   r9   r9   r:   <module>   sd  )		}	(					D																						




	
		