+
    4Ssi>1                       a  R t(0 t R t^ RIHt ^ RIHt ^ RIHtHt ^ RI	H
t
 ^ RIHt ^ RIHtHt ^ RIHtHt ^ RIHtHt Rt] ^ k ]P.                  t] ^k ]P2                  t] ^k ]P6                  t] ^k ]P:                  t] ^k ^@t ! R	 R
]4      t  ! R R]4      t! ! R R]"4      t# ! R R]"4      t$] ! R R4      4       t% ! R R4      t& ! R R4      t'R# )z%Group Key Distribution Service module)Enum)total_ordering)OptionalTuple)hashes)_glue)gkdimisc)ndr_pack
ndr_unpack)NtTimeNtTimeDeltac                   p   a  ] tR t^+t o RtRtRtRtV 3R lR ltV 3R lR lt	]
V 3R	 lR
 l4       tRtV tR# )	AlgorithmSHA1SHA256SHA384SHA512c                4   < V ^8  d   QhRS[ P                  /#    return)r   HashAlgorithm)format__classdict__s   ",/usr/lib/python3/dist-packages/samba/gkdi.py__annotate__Algorithm.__annotate__1   s     < <6// <    c                `   V \         P                  J d   \        P                  ! 4       # V \         P                  J d   \        P                  ! 4       # V \         P                  J d   \        P                  ! 4       # V \         P
                  J d   \        P
                  ! 4       # \        R 4      h)zunknown hash algorithm {self})r   r   r   r   r   r   RuntimeErrorselfs   &r   	algorithmAlgorithm.algorithm1   st    9>>!;;= 9###==?"9###==?"9###==?":;;r   c                    < V ^8  d   QhRS[ /# r   str)r   r   s   "r   r   r   @   s      # r   c                    \        V 4      # Nr&   r!   s   &r   __repr__Algorithm.__repr__@   s    4yr   c                4   < V ^8  d   QhRS[ S[,          RR/# )r   	kdf_paramr   r   )r   bytes)r   r   s   "r   r   r   D   s     8 8x 8; 8r   c                    V '       g   \         P                  # \        \        P                  V 4      p\        VP
                  4      # r)   )r   r   r   r   KdfParametershash_algorithm)r-   kdf_parameterss   & r   from_kdf_parametersAlgorithm.from_kdf_parametersC   s4    ####D$6$6	B6677r    N)__name__
__module____qualname____firstlineno__r   r   r   r   r#   r*   staticmethodr3   __static_attributes____classdictcell__r   s   @r   r   r   +   sA     DFFF< <  8 8r   r   c                   j   a  ] tR t^Lt o ]! 4       t]! 4       t]! 4       t]! 4       tV 3R lR lt	Rt
V tR# )GkidTypec                    < V ^8  d   QhRS[ /# r   r&   )r   r   s   "r   r   GkidType.__annotate__R   s     7 7S 7r   c                    V \         P                  J d   R # V \         P                  J d   R# V \         P                  J d   R# V \         P                  J d   R# \        R4      h)za default GKIDzan L0 seed keyzan L1 seed keyzan L2 seed keyzunknown GKID type {self})r?   DEFAULTL0_SEED_KEYL1_SEED_KEYL2_SEED_KEYr    r!   s   &r   descriptionGkidType.descriptionR   sR    8####8'''#8'''#8'''#566r   r5   N)r6   r7   r8   r9   objectrC   rD   rE   rF   rG   r;   r<   r=   s   @r   r?   r?   L   s+     hG(K(K(K7 7r   r?   c                       ] tR t^btRtR# )InvalidDerivationr5   Nr6   r7   r8   r9   r;   r5   r   r   rK   rK   b       r   rK   c                       ] tR t^ftRtR# )UndefinedStartTimer5   NrL   r5   r   r   rO   rO   f   rM   r   rO   c                     a  ] tR t^jt o . R.OtRtV 3R lR lt]V 3R lR l4       t]V 3R lR l4       t	]V 3R lR	 l4       t
V 3R
 lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR lt]V 3R lR l4       t]V 3R  lR! l4       t]V 3R" lR# l4       t]V 3R$ lR% l4       tV 3R& lR' ltV 3R( lR) ltV 3R* lR+ lt]V 3R, lR- l4       tR.tV tR/# )0Gkidic                0   < V ^8  d   QhRS[ RS[ RS[ RR/# )r   l0_idxl1_idxl2_idxr   Nint)r   r   s   "r   r   Gkid.__annotate__t   s)      s C   r   c                z   RTu;8:  d   \         P                  8:  g   M \        RV R24      hRTu;8:  d   \        8  g   M \        RV R24      hRTu;8:  d   \        8  g   M \        RV R24      hVR8X  d   VR8w  d   \        R4      hVR8X  d   VR8w  d   \        R4      hWn        W n        W0n        R# )   z	L0 index  out of rangez	L1 index z	L2 index u:   invalid combination of negative and non‐negative indicesN)rQ   
max_l0_idx
ValueErrorL1_KEY_ITERATIONL2_KEY_ITERATION_l0_idx_l1_idx_l2_idx)r"   rS   rT   rU   s   &&&&r   __init__Gkid.__init__t   s    V.t.y>??V...y>??V...y>??R<FbLYZZR<FbLYZZr   c                    < V ^8  d   QhRS[ /# r   rV   )r   r   s   "r   r   rX             r   c                    V P                   # r)   )ra   r!   s   &r   rS   Gkid.l0_idx       ||r   c                    < V ^8  d   QhRS[ /# r   rV   )r   r   s   "r   r   rX      rg   r   c                    V P                   # r)   )rb   r!   s   &r   rT   Gkid.l1_idx   rj   r   c                    < V ^8  d   QhRS[ /# r   rV   )r   r   s   "r   r   rX      rg   r   c                    V P                   # r)   )rc   r!   s   &r   rU   Gkid.l2_idx   rj   r   c                    < V ^8  d   QhRS[ /# r   )r?   )r   r   s   "r   r   rX      s     
$ 
$8 
$r   c                    V P                   R8X  d   \        P                  # V P                  R8X  d   \        P                  # V P
                  R8X  d   \        P                  # \        P                  # rZ   r\   )rS   r?   rC   rT   rD   rU   rE   rF   r!   s   &r   	gkid_typeGkid.gkid_type   sV    ;;"###;;"''';;"'''###r   c                    < V ^8  d   QhRS[ /# r   rV   )r   r   s   "r   r   rX             r   c                H    V P                   R8X  d   \        # V P                   # rs   )rT   r_   r!   s   &r   wrapped_l1_idxGkid.wrapped_l1_idx       ;;"##{{r   c                    < V ^8  d   QhRS[ /# r   rV   )r   r   s   "r   r   rX      rw   r   c                H    V P                   R8X  d   \        # V P                   # rs   )rU   r`   r!   s   &r   wrapped_l2_idxGkid.wrapped_l2_idx   r{   r   c                   < V ^8  d   QhRR/# r   r   rQ   r5   )r   r   s   "r   r   rX      s     I IF Ir   c                N   V P                  4       pV\        P                  Jd1   V\        P                  Jd   \	        R VP                  4        24      hV P                  ^ 8X  d   \	        R4      h\        V P                  V P                  4       ^,
          V P                  4      # )z.Invalid attempt to derive an L1 seed key from z1No further derivation of L1 seed keys is possible)rt   r?   rD   rE   rK   rG   rT   rQ   rS   ry   rU   r"   rt   s   & r   derive_l1_seed_keyGkid.derive_l1_seed_key   s    NN$	X111!5!55#))+,. 
 ;;!#$WXXDKK!4!4!6!:DKKHHr   c                   < V ^8  d   QhRR/# r   r5   )r   r   s   "r   r   rX      s     I IF Ir   c                N   V P                  4       pV\        P                  Jd1   V\        P                  Jd   \	        R VP                  4        24      hV P                  ^ 8X  d   \	        R4      h\        V P                  V P                  V P                  4       ^,
          4      # )z&Attempt to derive an L2 seed key from z1No further derivation of L2 seed keys is possible)rt   r?   rE   rF   rK   rG   rU   rQ   rS   rT   r~   r   s   & r   derive_l2_seed_keyGkid.derive_l2_seed_key   s    NN$	X111!5!55#89N9N9P8QR  ;;!#$WXXDKKd.A.A.Ca.GHHr   c                    < V ^8  d   QhRS[ /# r   r&   )r   r   s   "r   r   rX      s     D D Dr   c                V    R V P                    RV P                   RV P                   R2# )zGkid(, ))rS   rT   rU   r!   s   &r   __str__Gkid.__str__   s)    t{{m2dkk]"T[[MCCr   c                    < V ^8  d   QhRS[ /# r   r&   )r   r   s   "r   r   rX           
 
# 
r   c           	         \        V 4      pVP                   R \        V P                  4       R\        V P                  4       R\        V P
                  4       R2# (r   r   )typer8   reprrS   rT   rU   r"   clss   & r   r*   Gkid.__repr__   sX    4j $t{{"3!4BtDKK7H6I JT[[!"!%	
r   c                &   < V ^8  d   QhRS[ RS[/# r   otherr   rI   bool)r   r   s   "r   r   rX      s     
 
F 
t 
r   c                    \        V\        4      '       g   \        # V P                  V P                  V P
                  3VP                  VP                  VP
                  38H  # r)   )
isinstancerQ   NotImplementedrS   rT   rU   r"   r   s   &&r   __eq__Gkid.__eq__   sO    %&&!!T[[$++6LLLLLL;
 
 	
r   c                &   < V ^8  d   QhRS[ RS[/# r   r   )r   r   s   "r   r   rX      s     0 0F 0t 0r   c                h    \        V\        4      '       g   \        # R  R lpV! V 4      V! V4      8  # )c                \    V ^8  d   QhR\         R\        \        \        \        3,          /# )r   gkidr   )rQ   r   rW   )r   s   "r   r   !Gkid.__lt__.<locals>.__annotate__   s%     	* 	*4 	*E#sC-$8 	*r   c                     V P                   V P                  V P                  r2pV P                  4       \        P
                  Jd!   V P                  4       pV P                  4       pWV3# r)   )rS   rT   rU   rt   r?   rC   ry   r~   )r   rS   rT   rU   s   &   r   as_tupleGkid.__lt__.<locals>.as_tuple   sY    %)[[$++t{{FF
 ~~x'7'77 ,,.,,.6))r   )r   rQ   r   )r"   r   r   s   && r   __lt__Gkid.__lt__   s/    %&&!!	* ~//r   c                    < V ^8  d   QhRS[ /# r   rV   )r   r   s   "r   r   rX      s     = =# =r   c                Z    \        V P                  V P                  V P                  34      # r)   )hashrS   rT   rU   r!   s   &r   __hash__Gkid.__hash__   s     T[[$++t{{;<<r   c                   < V ^8  d   QhRR/# r   r5   )r   r   s   "r   r   rX      s        V  r   c                     \        RRR4      # rs   rQ   r5   r   r   defaultGkid.default   s    BBr   c                $   < V ^8  d   QhRS[ RR/# )r   rS   r   rQ   rV   )r   r   s   "r   r   rX      s     $ $C $F $r   c                    \        V RR4      # rs   r   )rS   s   &r   l0_seed_keyGkid.l0_seed_key   s    FB##r   c                *   < V ^8  d   QhRS[ RS[ RR/# )r   rS   rT   r   rQ   rV   )r   r   s   "r   r   rX      s"     ( (C ( ( (r   c                    \        WR4      # rs   r   )rS   rT   s   &&r   l1_seed_keyGkid.l1_seed_key   s    FB''r   c                $   < V ^8  d   QhRS[ RR/# )r   nt_timer   rQ   r   )r   r   s   "r   r   rX     s     	  	 f 	  	 r   c                   V \         \        ,          \        ,          ,          pV \         \        ,          \        ,          ,          \        \        ,          ,          pV \        \        ,          ,          \        ,          p\        WV4      # r)   )r_   r`   KEY_CYCLE_DURATIONrQ   )r   l0l1l2s   &   r   from_nt_timeGkid.from_nt_time  sj    ),<<?QQR"225GGI #557 	
 (+==>BTTBBr   c                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   rX     s      v r   c                   V P                  4       pV\        P                  Jd   \        VP	                  4        R 24      h\        V P                  \        ,          \        ,          V P                  \        ,          ,           V P                  ,           \        ,          4      p^ Tu;8:  d   \        8:  g   M \        RV R24      hV# )z has no defined start timezstart time r[   )rt   r?   rF   rO   rG   r   rS   r_   r`   rT   rU   r   
uint64_maxOverflowError)r"   rt   
start_times   &  r   start_nt_timeGkid.start_nt_time  s    NN$	H000$((*++EF  ..1AA++ 001++ !!

 J,*,+j\ GHHr   c                   < V ^8  d   QhRR/# r   r5   )r   r   s   "r   r   rX   $  s     T T& Tr   c                p    \         P                  \        V P                  4       \        ,
          4      4      # r)   rQ   r   r   r   r   r!   s   &r   previousGkid.previous$  '      (:(:(<?Q(Q!RSSr   c                   < V ^8  d   QhRR/# r   r5   )r   r   s   "r   r   rX   '  s     T Tf Tr   c                p    \         P                  \        V P                  4       \        ,           4      4      # r)   r   r!   s   &r   next	Gkid.next'  r   r   c                8   < V ^8  d   QhRS[ P                  RR/# )r   envr   rQ   )r   KeyEnvelope)r   r   s   "r   r   rX   +  s!     > >t// >F >r   c                X    \        V P                  V P                  V P                  4      # r)   )rQ   l0_indexl1_indexl2_index)r   s   &r   from_key_envelopeGkid.from_key_envelope*  s    CLL#,,==r   )ra   rb   rc   N) r6   r7   r8   r9   	__slots__r]   rd   propertyrS   rT   rU   rt   ry   r~   r   r   r   r*   r   r   r   r:   r   r   r   r   r   r   r   r   r;   r<   r=   s   @r   rQ   rQ   j   sG     2IJ (      
$ 
$  I I I ID D
 

 
0 0*= =     $ $ ( ( 	  	  *T TT T > >r   rQ   c                      a  ] tR tRt o . ROtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )SeedKeyPairi/  c                p   < V ^8  d   QhRS[ S[,          RS[ S[,          RS[RS[RS[P
                  RR/# )r   l1_keyl2_keyr   r1   root_key_idr   N)r   r.   rQ   r   r	   GUID)r   r   s   "r   r   SeedKeyPair.__annotate__2  sS     ' '' ' 	'
 "' YY' 
'r   c                   Ve4   \        V4      \        8w  d    \        R\        V4       R\         R24      hVe4   \        V4      \        8w  d    \        R\        V4       R\         R24      hWn        W n        W0n        W@n        WPn        R # )NzL1 key (
) must be  byteszL2 key ()	lenKEY_LEN_BYTESr^   r   r   r   r   r1   r   )r"   r   r   r   r1   r   s   &&&&&&r   rd   SeedKeyPair.__init__2  s}     #f+">xV~ZfUVV#f+">xV~ZfUVV	,&r   c                    < V ^8  d   QhRS[ /# r   r&   )r   r   s   "r   r   r   E  s     
 
 
r   c                
   V P                   f   R MV P                   P                  4       pV P                  f   R MV P                  P                  4       pRV RV RV P                   RV P                   RV P
                   R2# )NzSeedKeyPair(L1Key(z	), L2Key(), r   r   )r   hexr   r   r   r1   )r"   
l1_key_hex
l2_key_hexs   &  r   r   SeedKeyPair.__str__E  s|    ![[0Tdkkoo6G
![[0Tdkkoo6G
 !Ij\TYYK P  !D$7$7#8;	
r   c                    < V ^8  d   QhRS[ /# r   r&   )r   r   s   "r   r   r   N  s     
 
# 
r   c                   \        V 4      pVP                   R \        V P                  4       R\        V P                  4       R\        V P
                  4       R\        V P                  4       R\        V P                  4       R2# r   )r   r8   r   r   r   r   r1   r   r   s   & r   r*   SeedKeyPair.__repr__N  s    4j $t{{"3!4BtDKK7H6I JTYY 4(;(;#<"= >T%%&'q*	
r   c                &   < V ^8  d   QhRS[ RS[/# r   r   )r   r   s   "r   r   r   V  s     
 
F 
t 
r   c                    \        V\        4      '       g   \        # V P                  V P                  V P
                  V P                  V P                  3VP                  VP                  VP
                  VP                  VP                  38H  # r)   )r   r   r   r   r   r   r1   r   r   s   &&r   r   SeedKeyPair.__eq__V  s{    %--!! KKKKII
 LLLLJJ  

 	
r   c                    < V ^8  d   QhRS[ /# r   rV   )r   r   s   "r   r   r   h  s     	
 	
# 	
r   c           	         \        V P                  V P                  V P                  V P                  \        V P                  4      34      # r)   )r   r   r   r   r1   r
   r   r!   s   &r   r   SeedKeyPair.__hash__h  s@    		##))*
 	
r   )r   r1   r   r   r   N)r   r   r   r1   r   r6   r7   r8   r9   r   rd   r   r*   r   r   r;   r<   r=   s   @r   r   r   /  s<     MI' '&
 

 

 
$	
 	
r   r   c                      a  ] tR tRt o . ROtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )GroupKeyit  c          
      J   < V ^8  d   QhRS[ RS[RS[RS[P                  RR/# )r   keyr   r1   r   r   N)r.   rQ   r   r	   r   )r   r   s   "r   r   GroupKey.__annotate__w  s9     	' 	'	' $	'6?	'NRii	'		'r   c                    Ve4   \        V4      \        8w  d    \        R\        V4       R\         R24      hWn        W n        W0n        W@n        R # )NzKey (r   r   )r   r   r^   r   r	  r   r1   r   )r"   r	  r   r1   r   s   &&&&&r   rd   GroupKey.__init__w  sH     ?s3x=8uT#YKz-OPP	,&r   c                    < V ^8  d   QhRS[ /# r   r&   )r   r   s   "r   r   r
    s     
 
 
r   c           	         R V P                   P                  4        RV P                   RV P                   RV P                   R2	# )zGroupKey(Key(r   r   r   )r	  r   r   r1   r   r!   s   &r   r   GroupKey.__str__  sI    DHHLLN+3tyykD<O<O;P Q  !$	
r   c                    < V ^8  d   QhRS[ /# r   r&   )r   r   s   "r   r   r
    r   r   c                    \        V 4      pVP                   R \        V P                  4       R\        V P                  4       R\        V P
                  4       R\        V P                  4       R2
# r   )r   r8   r   r	  r   r1   r   r   s   & r   r*   GroupKey.__repr__  sk    4j $txx.!1DO3D ET(()*"T$2B2B-C,DAG	
r   c                &   < V ^8  d   QhRS[ RS[/# r   r   )r   r   s   "r   r   r
    s     	
 	
F 	
t 	
r   c                    \        V\        4      '       g   \        # V P                  V P                  V P
                  V P                  3VP                  VP                  VP
                  VP                  38H  # r)   )r   r  r   r	  r   r1   r   r   s   &&r   r   GroupKey.__eq__  se    %**!!$))T%8%8$:J:JKIIJJ  	P
 
 	
r   c                    < V ^8  d   QhRS[ /# r   rV   )r   r   s   "r   r   r
    s     
 
# 
r   c                    \        V P                  V P                  V P                  \	        V P
                  4      34      # r)   )r   r	  r   r1   r
   r   r!   s   &r   r   GroupKey.__hash__  s4    XXtyy$"5"5x@P@P7QR
 	
r   )r   r1   r	  r   N)r   r	  r1   r   r  r=   s   @r   r  r  t  s<     @I	' 	'
 

 
	
 	

 
r   r  c                    V ^8  d   Qh/ ^ \         9   d
   \        ;R&   ^\         9   d
   \        ;R&   ^\         9   d
   \        ;R&   ^\         9   d
   \        ;R&   ^\         9   d
   \        ;R&   # )r   r   r_   r`   r   MAX_CLOCK_SKEW)__conditional_annotations__rW   r   )r   s   "r   r   r      sc     + +  C  ,  4 3# 3! ," 4 3# 3# ,$ @ ?K ?% ,& 8 7 7' ,r   Nl    ))r  __doc__enumr   	functoolsr   typingr   r   cryptography.hazmat.primitivesr   sambar   samba.dcerpcr   r	   	samba.ndrr
   r   samba.nt_timer   r   r   GKDI_L1_KEY_ITERATIONr_   GKDI_L2_KEY_ITERATIONr`   GKDI_KEY_CYCLE_DURATIONr   GKDI_MAX_CLOCK_SKEWr  r   r   r?   	ExceptionrK   rO   rQ   r   r  r   )r  s   @r   <module>r*     s   & ,  $ " 1  # * - 
 33  333  3"'"?"?  ?#77 78 8B7t 7,		 		 	 A> A> A>HB
 B
J)
 )
r   