HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //lib64/python3.9/site-packages/gssapi/tests/__pycache__/test_raw.cpython-39.pyc
a

��_��@sHddlZddlZddlZddlZddlZddlZddlmZ	ddl
mmZddl
mZddlZejrvddlmZnddlmZdZe���d�ZedeZGdd�dej�ZGdd	�d	e�ZGd
d�dej�ZGdd
�d
e�Z Gdd�de�Z!Gdd�de�Z"ddd�ddd�ddd�ddd�ddd�d�Z#Gdd�dej�Z$dS) �N)�Setshost�utf-8�/csHeZdZe�fdd��Zedd��Zedd��Ze�fdd��Z�ZS)	�_GSSAPIKerberosTestCasecsjtt|���t�d�}|jj|dgd�|��|jj�	d�d�
d�|_|jj�	d�d�
d�|_
dS)N�UTF-8�-k��flags�@r)�superr�
setUpClass�SERVICE_PRINCIPAL�decode�realm�kinit�	_init_env�
user_princ�split�encode�
USER_PRINCZadmin_princ�ADMIN_PRINC)�cls�	svc_princ��	__class__��;/usr/lib64/python3.9/site-packages/gssapi/tests/test_raw.pyrs
z"_GSSAPIKerberosTestCase.setUpClasscCs2t�tj�|_|jj��D]\}}|tj|<qdS�N)�copy�deepcopy�os�environ�
_saved_envr�env�items)r�k�vrrrr&sz!_GSSAPIKerberosTestCase._init_envcCs@t�tj�D](}||jvr,|j|tj|<qtj|=qd|_dSr)rrr r!r")rr%rrr�_restore_env,s


z$_GSSAPIKerberosTestCase._restore_envcstt|���|��dSr)rr�
tearDownClassr')rrrrr(6sz%_GSSAPIKerberosTestCase.tearDownClass)	�__name__�
__module__�__qualname__�classmethodrrr'r(�
__classcell__rrrrrs

	rc@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	�
d
d�dd��Ze	�
d
d�dd��Ze	�
d
d�e	�
dd�dd���Z
e	�
d
d�e	�dd�dd���Ze	�
d
d�e	�dd�dd���Ze	�
d
d�e	�dd�dd���Zdd �Zd!d"�Zd#d$�Ze	�
d%d&�d'd(��Zd)d*�Zd+d,�Ze	�
d-d.�d/d0��Ze	�
d-d.�d1d2��Ze	�
d-d.�e	�d3d4�d5d6���Ze	�
d7d8�d9d:��Ze	�
d;d<�d=d>��Zd?d@�ZdAdB�ZdCdD�Z dEdF�Z!dGdH�Z"dIdJ�Z#e	�
dKdL�dMdN��Z$e	�
dOdP�dQdR��Z%e	�
dSdT�dUdV��Z&e	�
dSdT�dWdX��Z'e	�
dYdZ�d[d\��Z(e	�
d]d^�d_d`��Z)e	�
dadb�e	�
d-d.�e	�dcdd�dedf����Z*e	�
dadb�dgdh��Z+e	�
dadb�didj��Z,e	�
dadb�e	�
dKdk�dldm���Z-e	�
dadb�e	�
dKdk�dndo���Z.e	�
dpdq�e	�drds�dtdu���Z/e	�
dpdq�dvdw��Z0dxS)y�TestBaseUtilitiescCs|jjt�d�dgd�dS)Nrrr)rrr
r��selfrrr�setUp=szTestBaseUtilities.setUpcCs4t��}|��|�t�|��|�tjj�dSr)	�gb�indicate_mechs�shouldnt_be_none�should_be_a�set�shouldnt_be_empty�should_include�MechType�kerberos)r0�mechsrrr�test_indicate_mechs@s

z%TestBaseUtilities.test_indicate_mechscCs,t�t�}|��|�tj�t�|�dSr)r2�import_name�TARGET_SERVICE_NAMEr4r5�Name�release_name)r0�
imported_namerrr�test_import_nameIs
z"TestBaseUtilities.test_import_namecCs^t�|jtjj�}t�|tjj�}|��|�	tj
�t�|�}|��|�	t�|�
�dSr)r2r=r�NameType�kerberos_principal�canonicalize_namer9r:r4r5r?Zexport_name�bytesr7)r0rAZcanonicalized_name�
exported_namerrr�test_canonicalize_export_nameQs��

z/TestBaseUtilities.test_canonicalize_export_namecCs0t�t�}t�|�}|��t�||���dSr)r2r=r>Zduplicate_namer4�compare_name�should_be_true)r0Z	orig_name�new_namerrr�test_duplicate_nameas

z%TestBaseUtilities.test_duplicate_namecCs`t�ttjj�}t�|�}|��|\}}|��|�t�|�	t�|��|�	tjj�dSr)
r2r=r>rC�hostbased_serviceZdisplay_namer4r5rF�	should_be)r0rAZ
displ_respZdisplayed_nameZout_typerrr�test_display_namehs�


z#TestBaseUtilities.test_display_nameZrfc6680zRFC 6680cCs:t�ttjj�}t�|�}|��|j��|j	�
�dSr)r2r=r>rCrM�inquire_namer4�is_mech_name�should_be_false�mech�should_be_none)r0�	base_name�inquire_resrrr�test_inquire_name_not_mech_name{s�

z1TestBaseUtilities.test_inquire_name_not_mech_namecCs^t�ttjj�}t�|tjj�}t�|�}|�	�|j
��|j�
tj�|j�tjj�dSr)r2r=r>rCrMrEr9r:rPr4rQrJrSr5�OIDrN)r0rU�	mech_namerVrrr�test_inquire_name_mech_name�s�

z-TestBaseUtilities.test_inquire_name_mech_nameZrfc6680_comp_oidzRFC 6680 (COMPOSITE_EXPORT OID)cCsTt�ttjj�}t�|tjj�}t�|�}|�	t
�t�|tjj�}|�	tj�dSr)
r2r=r>rCrMrEr9r:�export_name_compositer5rFZcomposite_exportr?)r0rU�
canon_namerGrArrr�*test_import_export_name_composite_no_attrs�s��

�z<TestBaseUtilities.test_import_export_name_composite_no_attrsZauthdataZgreet_clientcCs`t�ttjj�}t�|tjj�}t�|ddg�t�	|�}|�
�|j�t
�|j�dg�dS)N�urn:greet:greetings
some greeting)r2r=r>rCrMrEr9r:�set_name_attributerPr4�attrsr5�listrN)r0rUr\rVrrr�test_inquire_name_with_attrs�s��
z.TestBaseUtilities.test_inquire_name_with_attrscCs�t�ttjj�}t�|tjj�}tj|ddgdd�t�	|d�}|�
�|j�t
�|j�dg�|j�t
�|j�|j�|j��|j��t�|d�dS)Nr^ssome other valT)�complete)r2r=r>rCrMrEr9r:r_�get_name_attributer4�valuesr5rarNZdisplay_valuesrcrJZ
authenticatedrRZdelete_name_attribute)r0rUr\�get_resrrr�1test_basic_get_set_delete_name_attributes_no_auth�s ��

zCTestBaseUtilities.test_basic_get_set_delete_name_attributes_no_authcCs~t�ttjj�}t�|tjj�}t�|ddg�t�	|�}|�
t�t�|tjj�}|�
tj
�t�|d�}|j�dg�dS)Nr^ssome val)r2r=r>rCrMrEr9r:r_r[r5rFZexportr?rdrerN)r0rUr\rGrArfrrr�!test_import_export_name_composite�s�

z3TestBaseUtilities.test_import_export_name_compositecCsxt�t�}t�t�}t�|jtjj�}t�||���t�||���t�||���t�	|�t�	|�t�	|�dSr)
r2r=r>rrCrDrIrJrRr@)r0Z
service_name1Z
service_name2Z	init_namerrr�test_compare_name�s

�

z#TestBaseUtilities.test_compare_namecCsNt�dd�}|��|\}}}|�t�|��|��|�t�|��dS)NrF)	�gbmiscZ_display_statusr4r5rFr7�should_be_an_integer�boolrR)r0Zstatus_resp�status�ctxZcontrrr�test_display_statuss


z%TestBaseUtilities.test_display_statuscCsvt�ttjj�}t�|�}|��|\}}}|��|�tj�|�	�|�
tjj�|�
�t�|�t�|�dSr)r2r=r
rCrD�acquire_credr4r5�Credsr7r8r9r:rkr@�release_cred)r0�nameZ	cred_resp�creds�actual_mechs�ttlrrr�test_acquire_credss�


z$TestBaseUtilities.test_acquire_credsZcred_imp_expzcredentials import-exportcCsTt�d�j}t�|�}t�|�}tj|dd�}tj|dd�}t�|j|j���dS)NT)rs)	r2rprtZexport_credZimport_cred�inquire_credrIrsrJ)r0rt�tokenZimported_credsZinquire_origZinquire_imprrr�test_cred_import_export#s

z)TestBaseUtilities.test_cred_import_exportcCs�t�ttjj�}t�|�}|d}|d}t�ttjj�}t�|�d}tj	||d�}|d}tj|||d�}	|	d}
t�
|
�}|��|�d�dS�N�r��acceptor_creds��contextZinput_token)
r2r=r>rCrM�init_sec_contextr
rDrp�accept_sec_contextZcontext_timerk�should_be_greater_than)r0�target_name�ctx_resp�
client_token1�
client_ctx�server_name�server_creds�server_resp�
server_tok�client_resp2rnrvrrr�test_context_time.s,�
���
z#TestBaseUtilities.test_context_timecCs"t�ttjj�}t�|�}|d}|d}t�ttjj�}t�|�d}tj	||d�}|d}tj|||d�}	|	d}
t�
|
�}|��|\}}}
}}}}|��|�tj
�|��|�tj
�|
��|��|�tjj�|��|�t�|��|�t�|��|�t�|��dSr{)r2r=r>rCrMr�r
rDrpr�Zinquire_contextr4r5r?rkrNr9r:rr7rlrJ)r0r�r�r�r�r�r�r�r�r�rn�inq_respZsrc_namerv�	mech_typer	Z	local_estZis_openrrr�test_inquire_contextFsL�
���
�



z&TestBaseUtilities.test_inquire_contextZs4uZS4Uc
Cs�t�ttjj�}t�|�}|d}~t�ttjj�}tj|dd�d}tj	||d�}t�
�}t�|||dtjj
�}|��|\}	}
}}|
��|
�tjj
�|�t�|�t�|	�tj
�dS�Nr|�both��usagerr}�)r2r=r>rCrMr�r
rDrpr�rqZadd_cred_impersonate_namer9r:r4r7r8r5�int�
r0r��client_ctx_resp�client_tokenr�r��server_ctx_resp�input_creds�imp_resp�	new_credsru�output_init_ttl�output_accept_ttlrrr�test_add_cred_impersonate_namews4�
���

z0TestBaseUtilities.test_add_cred_impersonate_namecCs�t�ttjj�}t�|�}|d}~t�ttjj�}tj|dd�d}tj	||d�}t�
||d�}|��|\}}	}
|��|�tj
�|	��|	�tjj�|
�t�dSr�)r2r=r>rCrMr�r
rDrpr�Zacquire_cred_impersonate_namer4r5rqr7r8r9r:r�)r0r�r�r�r�r�r�r��	imp_credsru�
output_ttlrrr�#test_acquire_creds_impersonate_name�s.�
���
z5TestBaseUtilities.test_acquire_creds_impersonate_namez1.11z)returning delegated S4U2Proxy credentialscCs|t�d�}|jj|ddgd�t�ttjj�}t�	|�j
}tjddd�j}tj
||d�}|��|j��|j�tj�dS)Nrr�-frr�r�r})r
rrrr2r=r>rCrMr�ryrprtr�r4�delegated_credsr5rq)r0rr�r�r�r�rrr�test_always_get_delegated_creds�s
��
z1TestBaseUtilities.test_always_get_delegated_credsZrfc5588zRFC 5588cCs�t�d�}|jj|ddgd�t�ttjj�}tj	ddd�j
}tj||tjj
d�}|d}tj	dd	d�j
}tj||d
�}|j}|��tj|dddd�}	|	��|	j�d�|	j�tjj�t�|�j}
tj	|
dd�}|��dS)
Nrrr�r�initiater�)rtr	r|�acceptr}T)r�Zset_default�	overwrite)r
rrrr2r=r>rCrMrprtr��RequirementFlagZdelegate_to_peerr�r�r4Z
store_credr�rNr;r8r9r:rxrs)r0rr�Zclient_credsr�r�r�r�Zdeleg_creds�	store_resZ
deleg_nameZacq_resprrr�test_store_cred_acquire_cred�s4
����z.TestBaseUtilities.test_store_cred_acquire_credZ
cred_storezcredentials storec	Csdj|jjd�}dj|jjd�}|�d�|�d�d�}d|jj}|j�|�|j�||�|j�|ddd|g�tjdd	d
�j	}tj
||dd�}|j��|j
�d	�t�|�d��}t�||�}|��|j	��|j	�tj�|j��|j�tjj�|j��dS)
NzFILE:{tmpdir}/other_ccache)�tmpdirz{tmpdir}/other_keytabr)sccacheskeytabzservice/cs@rz-tr�r�T)r�)�formatrr�rZaddprincZextract_keytabrr2rprtZstore_cred_intor;r4r�rNr=Zacquire_cred_fromr5rqr7r8r9r:�lifetimerk)	r0ZCCACHE�KT�storeZ
princ_nameZ
initial_credsr�rsZretrieve_resrrr�!test_store_cred_into_acquire_cred�s*�


z3TestBaseUtilities.test_store_cred_into_acquire_credc
Cs�t�ttjj�}t�|�}|d}~t�ttjj�}tj|dd�d}tj	||d�}t�
�}t�||dtjj
�}|��|\}	}
}}|
��|
�tjj
�|�t�|�t�|	�tj
�dSr�)r2r=r>rCrMr�r
rDrpr�rqZadd_credr9r:r4r7r8r5r�r�rrr�
test_add_cred
s2�
���

zTestBaseUtilities.test_add_credcCs�t�ttjj�}t�|�j}t�|�}|��|j	�
tj�t�||j	�sNJ�|j
��|j�d�|j��|j�tjj�dS)Nr�)r2r=r
rCrDrprtrxr4rsr5r?rIr�rkr�rNr;r7r8r9r:)r0rs�credr�rrr�test_inquire_creds.s�


z$TestBaseUtilities.test_inquire_credscCs,tjj��}tj|d�}|�tjj�~dS)N��elements)r2r9r:�	__bytes__rXrN)r0Zkerberos_bytesZnew_oidrrr�test_create_oid_from_bytesAsz,TestBaseUtilities.test_create_oid_from_bytescCs@tjj}tjj}t�||Bd�}|�tj�|j�	||B�dS)Nr)
r2ZParameterReadErrorZCALLING_CODEZBadNameErrorZROUTINE_CODE�GSSErrorr5Z
NameReadErrorZmaj_coderN)r0Z	err_code1Z	err_code2�errrrr�test_error_dispatchIs
z%TestBaseUtilities.test_error_dispatchcCs(t�tjj�}|��|�tjj�dSr)r2Zinquire_names_for_mechr9r:r4r8rCrD)r0�resrrr�test_inquire_names_for_mechQsz-TestBaseUtilities.test_inquire_names_for_mechcCs6t�|jtjj�}t�|�}|��|�tjj	�dSr)
r2r=rrCrDZinquire_mechs_for_namer4r8r9r:)r0rsr�rrr�test_inquire_mechs_for_nameWs�
z-TestBaseUtilities.test_inquire_mechs_for_name�passwordZPasswordcCs�|j�d�}|jj|jj|d�t�dtjj�}t�||�	d��}|�
�|\}}}|�
�|�tj�|�
�|�tjj�|�t�dS�N�user)r��userr)rr�rrr2r=rCrD�acquire_cred_with_passwordrr4r5rqr7r8r9r:r�)r0r�rsr�r�rur�rrr�test_acquire_cred_with_password`s�
z1TestBaseUtilities.test_acquire_cred_with_passwordZpassword_addzPassword (add)c	Cs�|j�d�}|jj|jj|d�t�dtjj�}t��}t�	||tj
j|�d��}|�
�|\}}}}|��|�tj
j�|�t�|�t�|�tj�dSr�)rr�rrr2r=rCrDrqZadd_cred_with_passwordr9r:rr4r7r8r5r�)	r0r�rsr�r�r�rur�r�rrr�test_add_cred_with_passwordus�

z-TestBaseUtilities.test_add_cred_with_passwordZrfc5587zRFC 5587cCs,t�ddd�}|�t�|��i}i}|D�]X}|��|�tj�t�|�}|j}|j	}|�t�|�t�|D]�}|��|�tj�t�
|�}	|	j��|	j��|	j
��|	j�t�|	j�t�|	j
�t�||vr�t�||<||�|�qt|D]�}|��|�tj�t�
|�}	|	j��|	j��|	j
��|	j�t�|	j�t�|	j
�t�||v�rvt�||<||�|�q�q,|��D]X\}
}t|
g�}t�|dd�}|��|�|�t�d|d�}|D]}
|�|
��qԐq�|��D]4\}
}t|
g�}t�dd|�}|��|�|��q�dSr)r2Zindicate_mechs_by_attrsr5r6r7r4rXZinquire_attrs_for_mech�
mech_attrs�known_mech_attrs�display_mech_attrrs�
short_desc�	long_descrF�addr$rN�shouldnt_include)r0r;Z
attrs_dictZknown_attrs_dictrSZinquire_outr�r�Z	mech_attr�display_out�attrZexpected_mechsr`Z
expected_mechrrr�test_rfc5587�sh


















zTestBaseUtilities.test_rfc5587cCsttj�d�dddgtj�d�dddgg}|D]B}t�|d	�}|j�|d
�|j�|d�|j�|d�q,dS)
Nz1.3.6.1.5.5.13.24sGSS_C_MA_CBINDINGSschannel-bindingss$Mechanism supports channel bindings.z1.3.6.1.5.5.13.1sGSS_C_MA_MECH_CONCRETEs
concrete-mechsBMechanism is neither a pseudo-mechanism nor a composite mechanism.rr��r|)r2rX�from_int_seqr�rsrNr�r�)r0Z
test_attrsr�r�rrr�test_display_mech_attr�s�
��z(TestBaseUtilities.test_display_mech_attrZrfc5801z
SASL NamescCs�t��}|D]z}t�|�}|j}|��|�t�|��|j}|��|�t�|j	}|��|�t�t�
|�}|��|�|�qdSr)r2r3Zinquire_saslname_for_mechZsasl_mech_namer4r5rFr7rYZmech_descriptionZinquire_mech_for_saslnamerN)r0r;rS�outZout_smnZout_mnZout_mdZcmp_mechrrr�test_sasl_names�s 




z!TestBaseUtilities.test_sasl_namesZrfc4178zNegotiation MechanismcCs�t��}tj�d�}tj�d�}tj�d�}t�ttjj�}tjdtjjd�}tj	dd||gd�j
}ztj|d||gd	�j
}Wntjy�|�
d
�Yn0tj	|d|d�j
}	t�|	|g�}
|
��tj|||d�}|j}tj||	d
�}
|
��tj|||d�}|j}tjjtj||	d
�t�|	|g�}
|
��tj|||d�}|j}tj||	d
�}
|
��tj|||d�}|j}tjjtj||	d
�dS)N�
1.3.6.1.5.5.2�1.2.840.113554.1.2.2�1.3.6.1.4.1.311.2.2.10r��rsZ	name_typer�)r�r;�password�rsr�r;�5You do not have the GSSAPI gss-ntlmssp mech installedr��rtrSr})r2r3rXr�r=r>rCrMr�rprtr�r��skipTestZ
set_neg_mechsrTr�ryr�r4�should_raise)r0Z	all_mechsZspnego_mechZ	krb5_mech�	ntlm_mechr��usernameZkrb5_client_credsZntlm_client_credsr�Zneg_respr�r�r�rrr�test_set_neg_mechss~�������������z$TestBaseUtilities.test_set_neg_mechsZggfzGlobal Grid Forumz1.16z^querying impersonator name of krb5 GSS Credential using the GSS_KRB5_GET_CRED_IMPERSONATOR OIDcCs�t�d�}|jj|ddgd�t�ttjj�}t�	|�j
}tjddd�j}tj
||d�}|��|j��|j�tj�tj�d�}t�|j|�}|�t�|��|d	�t�|d	�d
t|jj�d�f�dS)Nrrr�rr�r�r}z1.2.840.113554.1.2.2.5.14rs%s@%sr)r
rrrr2r=r>rCrMr�ryrprtr�r4r�r5rqrXr�Zinquire_cred_by_oidrar7rFrNr)r0rr�r�r�r��oid�inforrr�%test_inquire_cred_by_oid_impersonatorJs*
��

�z7TestBaseUtilities.test_inquire_cred_by_oid_impersonatorc
Cs�t�ttjj�}t�|�}t�ttjj�}t�|�d}tj	|d|d�}|d}|d}tj||d|d�}|d}	tj
�d�}
t�|	|
�}t�||
�}|�
t�|��|�
t�|��|�|�dS)Nrr|r}rz1.2.840.113554.1.2.2.5.5)r2r=r>rCrMr�r
rDrpr�rXr��inquire_sec_context_by_oidr5rar7�should_have_same_items_as)
r0r��	ctx_resp1r�r�r��
server_ctxr�r�r�Zsession_key_oidZ
client_keyZ
server_keyrrr�test_inquire_sec_context_by_oidms4�
�
��

z1TestBaseUtilities.test_inquire_sec_context_by_oidc	Cs�t�ttjj�}t�|�}t�ttjj�}t�|�d}tj	|d|d�}tj||d|dd�}|d}tj
�d�}tj�
tj||�dS)Nrr|r}r�1.2.3.4.5.6.7.8.9)r2r=r>rCrMr�r
rDrpr�rXr�r�r�r�)	r0r�r�r�r�r�r�r��invalid_oidrrr�2test_inquire_sec_context_by_oid_should_raise_error�s(�
�
���zDTestBaseUtilities.test_inquire_sec_context_by_oid_should_raise_errorzAdd Credential with PasswordcCs�tj�d�}tjdtjjd�}ztj|d|gd�}WntjyR|�d�Yn0tjdtjj	d�}tj
||j|d�d	}tj�d
�}tj||dd�}|�
tj�dS)
Nr�r�r�r�r�r��serverr�r�1.3.6.1.4.1.7165.655.1.3s)r��value)r2rXr�r=rCr�r�r�r�rMr�rt�set_sec_context_optionr5�SecurityContext)r0r�r�r��serverZorig_context�
reset_mechZout_contextrrr�test_set_sec_context_option�s2��
�
���z-TestBaseUtilities.test_set_sec_context_optioncCs�tj�d�}tjdtjjd�}ztj|d|gd�}WntjyR|�d�Yn0tjdtjj	d�}tj
||j|d�d	}tj�d
�}tj�
tj||�dS)Nr�r�r�r�r�r�r�r�rr�)r2rXr�r=rCr�r�r�r�rMr�rtr�r�)r0r�r�r�r�r�r�rrr� test_set_sec_context_option_fail�s.��
�
���z2TestBaseUtilities.test_set_sec_context_option_failZset_cred_optzKitten Set Credential Optionz1.14z6GSS_KRB5_CRED_NO_CI_FLAGS_X was added in MIT krb5 1.14cCsFt�ttjj�}tj�d�}t�|�j}tj	||d�}|�
tj�dS)Nz1.2.752.43.13.29)rt)r2r=r
rCrDrXr�rprt�set_cred_optionr5rq)r0rsZ
no_ci_flags_x�	orig_credZoutput_credrrr�test_set_cred_option�s�z&TestBaseUtilities.test_set_cred_optioncCs@t�ttjj�}t�|�j}tj�d�}tj	�
tj||d�dS)Nr��)r2r=r
rCrDrprtrXr�r�r�r�)r0rsr�r�rrr�'test_set_cred_option_should_raise_error�s��z9TestBaseUtilities.test_set_cred_option_should_raise_errorN)1r)r*r+r1r<rBrHrLrO�ktu�gssapi_extension_testrWrZr]Zkrb_plugin_testrbrgrhrirorwrzr�r�r�r�Zkrb_minversion_testr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr.<s�	





�








1




�

 

!	





O





B

�








�
r.c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�TestIntEnumFlagSetcCs0tjjtjjB}t�tj|�}t|��|�dSr)r2r��	integrity�confidentiality�IntEnumFlagSetr�rN)r0�int_val�fsetrrr�test_create_from_int�s
�z'TestIntEnumFlagSet.test_create_from_intcCs:tjjtjjB}t�tj|�}t�tj|�}|�|�dSr)r2r�r�rrrN)r0r�fset1�fset2rrr�test_create_from_other_set�s�z-TestIntEnumFlagSet.test_create_from_other_setcCs0tjjtjjg}t�tj|�}t|��|�dSr)r2r�r�rrrar�)r0�lstrrrr�test_create_from_lists
�z(TestIntEnumFlagSet.test_create_from_listcCst�tj�}|��dSr)r2rr�Zshould_be_empty�r0rrrr�test_create_emptysz$TestIntEnumFlagSet.test_create_emptycCstjjtjjg}t�tj|�Sr)r2r�r�rr)r0rrrr�_create_fsets�zTestIntEnumFlagSet._create_fsetcCs(|��}|�tjj�|�tjj�dSr)rr8r2r�r�r��protection_readyr
rrr�
test_containssz TestIntEnumFlagSet.test_containscCs|���d�dS�Nr�)r�should_have_lengthr/rrr�test_lenszTestIntEnumFlagSet.test_lencCs<|��}|�d�|�tjj�|�d�|�tjj�dS)Nr�r|)rrr�r2r�r
r8r
rrr�test_adds


zTestIntEnumFlagSet.test_addcCsT|��}|�d�|�tjj�|�d�|�tjj�|�d�|�tjj�dS)Nr�r�)rr�discardr2r�r
r�r�r
rrr�test_discard!s


zTestIntEnumFlagSet.test_discardcCs,|��}|tjj@��|tjj@��dSr)rr2r�r�rJr
rRr
rrr�
test_and_enum,sz TestIntEnumFlagSet.test_and_enumcCs&|��}ttjj�}||@�|�dSr�rr�r2r�r�rN�r0rrrrr�test_and_int1szTestIntEnumFlagSet.test_and_intcCsF|��}|��}|��}|�tjj�|�tjj�||@�|�dSr�rr�r2r�r
�out_of_sequence_detectionrN�r0rrZfset3rrr�test_and_set7szTestIntEnumFlagSet.test_and_setcCs2|��}|tjjB}||k��|�tjj�dSr)rr2r�r
rJr8)r0rrrrr�test_or_enumAszTestIntEnumFlagSet.test_or_enumcCs*|��}ttjj�}||B�t|��dSrrrrrr�test_or_intHszTestIntEnumFlagSet.test_or_intcCsb|��}|��}|��}|�tjj�|�tjj�|�tjj�|�tjj�||B�|�dSrrrrrr�test_or_setNszTestIntEnumFlagSet.test_or_setcCsT|��}|tjjA}|tjjA}|�d�|�tjj�|�d�|�tjj�dS)Nr|r�)rr2r�r
r�rr8r�rrrr�
test_xor_enumZs

z TestIntEnumFlagSet.test_xor_enumcCsP|��}|ttjj�A�t|�tjjA�|ttjj�A�t|�tjjA�dSr)rr�r2r�r
rNr�r
rrr�test_xor_intfs��zTestIntEnumFlagSet.test_xor_intcCsz|��}|��}|�tjj�|�tjj�||A}|�d�|�tjj�|�tjj	�|�
tjj�|�
tjj�dSr)rr�r2r�r
rrr�r�rr8rrrr�test_xor_setos
zTestIntEnumFlagSet.test_xor_setN)r)r*r+rrr	rrrrrrrrrrrrr r!r"rrrrr��s$
	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestInitContextcCst�ttjj�|_dSr)r2r=r>rCrMr�r/rrrr1s�zTestInitContext.setUpcCst�|j�dSr)r2r@r�r/rrr�tearDown�szTestInitContext.tearDowncCs�t�|j�}|��|\}}}}}}|��|�tj�|�tjj�|�t	�|�
d�|��|�d�|�t
�t�|�dS�Nr�r)r2r�r�r4r5r�rNr9r:r�should_be_at_least_lengthr7r�rl�delete_sec_context)r0r�rnZ
out_mech_type�
out_req_flags�	out_token�out_ttl�cont_neededrrr�test_basic_init_default_ctx�s�



z+TestInitContext.test_basic_init_default_ctxN)r)r*r+r1r$r,rrrrr#~sr#c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestAcceptContextcCsjt�ttjj�|_t�|j�}|d|_|d|_|j�	�t�t
tjj�|_t�
|j�d|_d|_dS)Nr|r)r2r=r>rCrMr�r�r�r�r4r
rDr�rpr�r�)r0r�rrrr1�s�


�zTestAcceptContext.setUpcCsJt�|j�t�|j�t�|j�t�|j�|jdurFt�|j�dSr�	r2r@r�r�rrr�r'r�r�r/rrrr$�s
zTestAcceptContext.tearDownc		Cs�t�|j�}|��|\|_}}}}}}}|j��|j�tj�|��|�tj�|�tj	j
�|��|�t�|�
d�|�d�|dur�|�tj�|�t�dSr%)r2r�r�r4r�r5r�r?rNr9r:r7rr&r�rqrl�	r0r�rsr�r)r(r*Zdelegated_credr+rrr�+test_basic_accept_context_no_acceptor_creds�s"�



z=TestAcceptContext.test_basic_accept_context_no_acceptor_credsc		Cs�tj|j|jd�}|��|\|_}}}}}}}|j��|j�tj�|��|�tj�|�	tj
j�|��|�t
�|�d�|�d�|dur�|�tj�|�t�dS)Nr}r�r)r2r�r�r�r4r�r5r�r?rNr9r:r7rr&r�rqrlr/rrr�test_basic_accept_context�s&��



z+TestAcceptContext.test_basic_accept_contextcCs�tjdtjjdtjjdd�}t�ttjj�|_tj	|j|d�}|d|_
|d|_|j��t�t
tjj�|_t�|j�d|_tj|j
|j|d�}|j|j|_dS)N�abcxyz�	127.0.0.1�Zapplication_dataZinitiator_address_typeZinitiator_addressZacceptor_address_type�acceptor_address��channel_bindingsr|r�r~r7)r2�ChannelBindings�AddressType�ipr=r>rCrMr�r�r�r�r4r
rDr�rpr�r�r�r�)r0�bdgsr�r�rrr�test_channel_bindings�s2���


��z'TestAcceptContext.test_channel_bindingscCs�tjdtjjdtjjdd�}t�ttjj�|_tj	|j|d�}|d|_
|d|_|j��t�t
tjj�|_t�|j�d|_d|_tjjtj|j
|j|d�dS)	Nr2r3r4r6r|rs	127.0.1.0r8)r2r9r:r;r=r>rCrMr�r�r�r�r4r
rDr�rpr�r5r�r�r�)r0r<r�rrr�%test_bad_channel_binding_raises_errors0���


��z7TestAcceptContext.test_bad_channel_binding_raises_errorN)	r)r*r+r1r$r0r1r=r>rrrrr-�s	r-c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
�dd�dd��Ze
�dd�dd��Z
e
�dd�dd��Ze
�dd�dd��Ze
�dd�dd��Ze
�dd�dd��Ze
�dd�dd ��Ze
�dd�d!d"��Ze
�dd�d#d$��Zd%S)&�TestWrapUnwrapcCs�t�ttjj�|_t�|j�}|d|_|d|_t�t	tjj
�|_t�|j�d|_
tj|j|j
d�}|d|_|d|_tj|j|j|jd�}|d|_|d|_dSr{)r2r=r>rCrMr�r�r�r�r
rDr�rpr�r�r�r�Z
client_token2)r0r�r�r�rrrr1"s*�

��

�
zTestWrapUnwrap.setUpcCs@t�|j�t�|j�t�|j�t�|j�t�|j�dSrr.r/rrrr$7s
zTestWrapUnwrap.tearDowncCsNt�|j�}|��|�t�|��t�|�}|��|�tj�||_dSr)	r2Zexport_sec_contextr�r4r5rFr7Zimport_sec_contextr�)r0�tokZimported_ctxrrr�test_import_export_sec_context>s

z-TestWrapUnwrap.test_import_export_sec_contextcCs,t�|jd�}|��|�t�|��dS)N�some message)r2�get_micr�r4r5rFr7)r0�	mic_tokenrrr�test_get_micKs
zTestWrapUnwrap.test_get_miccCs@t�|jd�}t�|jd|�}|��tj�tj|jdd�dS)NrBssome other messagessome invalid mic)r2rCr�Z
verify_micr�rkr�r�)r0rD�qop_usedrrr�test_basic_verify_micRs�z$TestWrapUnwrap.test_basic_verify_miccCsHt�|jd�}tj|jddd�}|��|��|�d�|�d�dS)N�dF)Zconfidential)r2Zwrap_size_limitr�rkZshould_be_less_than)r0Z	with_confZwithout_confrrr�test_wrap_size_limit]s
�
z#TestWrapUnwrap.test_wrap_size_limitcCs�t�|jd�\}}|�t�|��|�t�|��|�d�t�	|j
|�\}}}|�t�|��|��|�d�|�t�|��|�
d�dS�N�test message�test messager)r2�wrapr�r5rlrJrFr7�should_be_longer_than�unwrapr�rk�should_be_at_leastrN�r0�wrapped_message�conf�unwrapped_message�qoprrr�test_basic_wrap_unwraphs 


�



z%TestWrapUnwrap.test_basic_wrap_unwrapZdcezDCE (IOV/AEAD)cCsLd}d}d}tjtjj|f||dd�}|dj��|dj��|dj��t�|j|�}|�t	�|�
�|d�d	�|d�d	�t�|j|�}|�t	�|�
�|�
d�|�
d�|�
d�|d
j�d�|dj�d�t�|j|�\}}|�t	�|�
�|�t�|d	j�
|�|d
j�
|�|dj�
|�dS)N�some encrypted data�some other encrypted data�
some sig dataF)�
auto_allocr��r�r�r|)r2�IOV�
IOVBufferType�	sign_only�allocaterRZwrap_iov_lengthr�r5rlrJZshould_be_at_least_size�wrap_iovrNr��shouldnt_be�
unwrap_iovr�r��r0Z	init_dataZinit_other_dataZinit_signed_info�init_messagerSrUrrr�#test_basic_iov_wrap_unwrap_prealloc~s:�






z2TestWrapUnwrap.test_basic_iov_wrap_unwrap_prealloccCs�d}d}d}t�tjj|f||�}t�|j|�}|�t�|��|�	d�|�	d�|�	d�|dj
�d�|dj
�d�t�|j
|�\}}|�t�|��|�t�|dj
�	|�|dj
�	|�|dj
�	|�dS)NrWrXrYr�r|r�)r2r]r^r_rar�r5rlrJrNr�rbrcr�r�rdrrr�$test_basic_iov_wrap_unwrap_autoalloc�s*�





z3TestWrapUnwrap.test_basic_iov_wrap_unwrap_autoalloccCs�d}t�|jd|�\}}|�t�|��|�t�|��|�d�t�	|j
||�\}}}|�t�|��|��|�d�|�t�|��|�
d�dS)NrYrKrLr�r2�	wrap_aeadr�r5rlrJrFr7rN�unwrap_aeadr�rkrPrN)r0�
assoc_datarRrSrTrUrrr�test_basic_aead_wrap_unwrap�s(�


�



z*TestWrapUnwrap.test_basic_aead_wrap_unwrapcCs�t�|jd�\}}|�t�|��|�t�|��|�d�t�	|j
|�\}}}|�t�|��|��|�d�|�t�|��|�
d�dSrJrhrQrrr�$test_basic_aead_wrap_unwrap_no_assoc�s$�


�



z3TestWrapUnwrap.test_basic_aead_wrap_unwrap_no_assoccCs`d}t�|jd|�\}}|�t�|��|�t�|��|�d�tj	�
tj|j|d�dS)NrYrKrLssome other sig data)
r2rir�r5rlrJrFr7rNrjr�ZBadMICErrorr�)r0rkrRrSrrr�2test_basic_aead_wrap_unwrap_bad_assoc_raises_error�s�


�zATestWrapUnwrap.test_basic_aead_wrap_unwrap_bad_assoc_raises_errorZiov_miczIOV MICcCsRtjdtjjdftjjdd�}t�|j|�|dj�tjj�|dj	�
�dS�N�	some datarYF��
std_layoutr�)r2r]r^r_rD�get_mic_iovr��typerNr�r7�r0rerrr�test_get_mic_iovs
�zTestWrapUnwrap.test_get_mic_iovcCshtjdtjjdftjjdd�}t�|j|�|dj�tjj�|dj	�
�t�|j|�}|�
�dSro)r2r]r^r_rDrsr�rtrNr�r7�verify_mic_iovr�rk)r0rerFrrr�test_basic_verify_mic_iovs
�z(TestWrapUnwrap.test_basic_verify_mic_iovcCs:tjdtjjdftjjdfdd�}tj�tj|j|�dS)NrprYZabaavaFrq)	r2r]r^r_rDrwr�r�r�rurrr�(test_verify_mic_iov_bad_mic_raises_error&s

��z7TestWrapUnwrap.test_verify_mic_iov_bad_mic_raises_errorcCsTtjdtjjdftjjddd�}t�|j|�|dj�tjj�|dj	�
�dS)NrprYF)rrrZr�)r2r]r^r_rDZget_mic_iov_lengthr�rtrNr�r7rurrr�test_get_mic_iov_length1s
�z&TestWrapUnwrap.test_get_mic_iov_lengthN)r)r*r+r1r$rArErGrIrVr�r�rfrgrlrmrnrvrxryrzrrrrr?!s2


+
















r?s+r�)rF�strings	*�H��r�s+z1.3.5.1.5.2s	*�H��z1.2.840.48018.1.2.2s+z
1.3.6.1.5.2.5)�SPNEGO�KRB5ZKRB5_OLDZ
KRB5_WRONGZIAKERBc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestOIDTransformscCs>t��D]0}tj|dd�}t|�}|�d�|d��qdS)NrFr�z	<OID {0}>r{)�	TEST_OIDSrer2rX�reprrNr�)r0r��o�textrrr�test_decode_from_bytesKsz(TestOIDTransforms.test_decode_from_bytescCs4t��D]&}tj�|d�}|���|d�qdS)Nr{rF)rrer2rXr�r�rN)r0r�r�rrr�test_encode_from_stringQsz)TestOIDTransforms.test_encode_from_stringcCs>t��D]0}|d�d�}tj�|�}|���|d�qdS)Nr{�.rF)rrerr2rXr�r�rN)r0r�Zint_seqr�rrr�test_encode_from_int_seqVsz*TestOIDTransforms.test_encode_from_int_seqcCsxtj�tdd�}tj�tdd�}tj�tdd�}||k�d�||k�d�||k�d�||k�d�dS)Nr}r{r|TF)r2rXr�rrN)r0Zkrb5Z
krb5_otherZspnegorrr�test_comparisons\sz"TestOIDTransforms.test_comparisonsN)r)r*r+r�r�r�r�rrrrr~Jsr~)%rr ZsocketZunittestZsixZ
should_be.allrNZ
gssapi.raw�rawr2Zgssapi.raw.miscZmiscrjZk5test.unitZunitr�Zk5testZktZPY2�collectionsr�collections.abcr>ZgetfqdnrZFQDNr
ZKerberosTestCaserr.ZTestCaser�r#r-r?rr~rrrr�<module>sb#< ������