
    i<                         S SK r S SKrS SKrS\R                  S   S\R                  \   S\4S jrS\S\S\R                  \\4   4S	 jr	 " S
 S\ R                  5      r " S S5      rg)    N	addr_typeAddressTypebreturnc                     U(       d  SnU b  [         R                  " SU 5      OS[         R                  " S[        U5      5      -   U-   $ )z:Packs an type/data entry into the byte structure required.    <I)structpacklen)r   r   s     Q/home/james-whalen/.local/lib/python3.13/site-packages/spnego/channel_bindings.py_pack_valuer   	   s@    ,5,AFKKi(sfkkZ^`cde`fNggjkkkr   b_memoffsetc                     [         R                  " SXUS-    R                  5       5      S   nX-   S-   nSnU(       a  XS-   US-   U-    R                  5       nXC4$ )z.Unpacks a raw C struct value to a byte string.r	      r   r   )r
   unpacktobytes)r   r   length
new_offsetdatas        r   _unpack_valuer      sf    ]]4
!;!C!C!EFqIF1$JDaZ&1*v"56>>@r   c                   p    \ rS rSrSrSrSrSrSrSr	Sr
S	rS	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrg)r      r            r            	   
                                        N)__name__
__module____qualname____firstlineno__unspecifiedlocalinetimplinkpupchaosnsnbsecmadatakitccittsnadecnetdlilathylink	appletalkbscdssosix25inet6nulladdr__static_attributes__r/   r   r   r   r      su    KEDG
CE	
B
CDGE
CF
C
CFI
C
C
C
CEHr   c                      \ rS rSrSr\R                  S\R                  SS4S\S\R                  \	   S\S\R                  \	   S\R                  \	   S	S4S
 jjr
S	\4S jrS	\4S jrS\S	\4S jrS	\	4S jr\S\	S	S 4S j5       rSrg)GssChannelBindings7   a;  Python representation of a GSSAPI Channel Binding data structure.

A common representation for a GSSAPI Channel Binding data structure that can be passed into a context to bind
against that security context. Channel bindings are tags that identify the particular data channel that is used.
Because these tags are specific to the originator and recipient applications, they offer more proof of a valid
identity. Most HTTPS based authentications just set the application data to b'tls-server-end-point:<cert hash>'.

Args:
    initiator_addrtype: The address type of the initiator address.
    initiator_address: The initiator's address.
    acceptor_addrtype: The address type of the acceptor address.
    acceptor_address: The acceptor's address.
    application_data: Any extra application data to set on the bindings struct.
Ninitiator_addrtypeinitiator_addressacceptor_addrtypeacceptor_addressapplication_datar   c                 h    [        U5      U l        X l        [        U5      U l        X@l        XPl        g )N)r   rO   rP   rQ   rR   rS   )selfrO   rP   rQ   rR   rS   s         r   __init__GssChannelBindings.__init__G   s2     #..@"A!2!,->!? 0 0r   c                 :   SR                  [        U 5      R                  [        U 5      R                  [	        U R
                  5      [	        U R                  5      [	        U R                  5      [	        U R                  5      [	        U R                  5      5      $ )Nzt{0}.{1} initiator_addrtype={2}|initiator_address={3}|acceptor_addrtype={4}|acceptor_address={5}|application_data={6})
formattyper1   r0   reprrO   rP   rQ   rR   rS   rU   s    r   __repr__GssChannelBindings.__repr__U   sv    ##)6T
%%T
##T,,-T++,T++,T**+T**+$	
r   c           
      X   SR                  [        U 5      R                  [        U R                  5      R                  U R                  R                  U R
                  [        U R                  5      R                  U R                  R                  U R                  U R                  5      $ )NzZ{0} initiator_addr({1}.{2}|{3!r}) | acceptor_addr({4}.{5}|{6!r}) | application_data({7!r}))	rY   rZ   r0   rO   namerP   rQ   rR   rS   r\   s    r   __str__GssChannelBindings.__str__c   s    krrJ(()22##((""''(11""''!!!!	
 		
r   otherc                     [        U[        [        45      (       d  g[        U[        5      (       a  UR                  5       nU R                  5       U:H  $ )NF)
isinstancebytesrM   r   )rU   rc   s     r   __eq__GssChannelBindings.__eq__o   sB    %%);!<==e/00JJLEyy{e##r   c                     SR                  [        U R                  U R                  5      [        U R                  U R
                  5      [        SU R                  5      /5      $ )zPack struct into a byte string.r   N)joinr   rO   rP   rQ   rR   rS   r\   s    r   r   GssChannelBindings.packx   sT    xxD33T5K5KLD22D4I4IJD$"7"78
 	
r   b_datac                 :   [        U 5      n[        R                  " SUS S R                  5       5      S   n[	        US5      u  p4[        R                  " SXUS-    R                  5       5      S   n[	        XS-   5      u  pd[	        X5      S   n[        UUUUUS9$ )Nr	   r   r   )rO   rP   rQ   rR   rS   )
memoryviewr
   r   r   r   rM   )rl   r   rO   rP   r   rQ   rR   rS   s           r   r   GssChannelBindings.unpack   s    6"#]]4r1B1B1DEaH$1%$;!"MM$vz0J0R0R0TUVWX#0
#C (7:!1//--
 	
r   )rR   rQ   rS   rP   rO   )r0   r1   r2   r3   __doc__r   r4   typingOptionalrf   rV   strr]   ra   objectboolrg   r   staticmethodr   rK   r/   r   r   rM   rM   7   s    " +6*A*A48)4)@)@37371'1 "??511 '	1
 !//%01 !//%01 
1
# 


 

$F $t $
e 
 
u 
!5 
 
r   rM   )enumr
   rq   rr   rf   r   rn   intTupler   IntEnumr   rM   r/   r   r   <module>r{      s      l6??=9 lfooe>T lY^ l	 	S 	V\\%*5M 	$,, 4]
 ]
r   