+
    4Ssi8  ã                   ó¨  € ^ RI Ht ^ RIHt ^ RIHtHtHtH	t	 ^ RI
Ht ^ RIHtHt ^ RIHt ^ RIHtHtHtHt R tR$R	 ltR%R
 ltR tR tR tR]R]R]P8                  R]P8                  R]R]P8                  R]R]R]/	tR t. R&Ot RR.t!. R'Ot" ! R R]4      t# ! R R]#4      t$ ! R R]#4      t% ! R R]#4      t& ! R  R!]#4      t' ! R" R#]	4      t(R# )(é    N)ÚSCOPE_SUBTREE)ÚCommandÚCommandErrorÚOptionÚSuperCommand)Úmisc)ÚMessageElementÚLdbError)Ústring_is_guid)Ústring_from_nt_timeÚnt_time_from_stringÚnt_nowÚtimedelta_from_nt_time_deltac                 óH   € V P                  4       pVP                  R 4       V# )zACN=Master Root Keys,CN=Group Key Distribution Service,CN=Services)Úget_config_basednÚ	add_child)ÚldbÚbase_dns   & ÚB/usr/lib/python3/dist-packages/samba/netcmd/domain/kds/root_key.pyÚroot_key_base_dnr   #   s'   € Ø×#Ñ#Ó%€GØ×ÑØKôMà€Nó    c                 ó2  € \        \        V4      4      '       d   R pMRpVf   R.p\        V 4      pRV RV R2pV P                  V\        VVR7      p\        V4      ^ 8X  d   \        RV 24      h\        V4      ^8w  d   \        RV 24      hV^ ,          # )	ÚnameÚdnÚ*z$(&(objectClass = msKds-ProvRootKey)(z = z)))ÚscopeÚ
expressionÚattrszno such root key: zduplicate root keys matching )r   Ústrr   Úsearchr   Úlenr   )r   r   r   Úkeyr   r   Úress   &&&    r   Úget_root_key_by_name_or_dnr$   *   s±   € Ü”c˜$“i× Ò Ø‰àˆà‚}Ø�ˆä˜sÓ#€GðØ�U˜#˜d˜V 2ð'€Jð �*‰*�WÜ(Ø *Ø ð ó "€Cô
 ˆ3ƒx�1„}ÜÐ/°¨vÐ6Ó7Ð7Ü
ˆ3ƒx�1„}äÐ:¸4¸&ÐAÓBÐBàˆq�6€Mr   c                 ó`   € Vf   R.p\        V 4      pV P                  V\        RVR.R7      pV# )Nr   z!(objectClass = msKds-ProvRootKey)z"server_sort:1:1:msKds-UseStartTime)r   r   r   Úcontrols)r   r    r   )r   r   Únr   r#   s   &&&  r   Úget_sorted_root_keysr(   F   sD   € Ø‚}Ø�ˆä˜sÓ#€Gà
�*‰*�WÜ(Ø CØ ØCÐDð	 ó F€Cð €Jr   c                ó   € \        V 4      pVP                  4       p\        V4      pV^8  d   R# RpV^x8  d   V\        V4       R2,          pMdVR8  d   V\        V^<,          4       R2,          pM@VR8  d   V\        VR,          4       R2,          pMV\        VR,          4       R2,          pV^ 8:  d   VR	,          pV# VR
,          pV# )z5Turn a datetime.timedelta into an approximate string.z	about nowzabout z secondsi   z minutesi  z hoursz daysz agoz in the FUTUREi £ i€Q )r   Útotal_secondsÚabsÚint)ÚdÚtdÚsecsÚabsoluteÚss   &    r   Údelta_stringr2   U   sØ   € ä	% aÓ	(€BØ×ÑÓ€DÜ�4‹y€HØ�!„|ÙØ€AØ�#„~Ø	”�H“ˆ˜hÐ'Õ'‰Ø	�DŒØ	”�H˜r•MÓ"Ð# 8Ð,Õ,‰Ø	�IÔ	Ø	”�H˜t•OÓ$Ð% VÐ,Õ,‰à	”�H 	Õ*Ó+Ð,¨EÐ2Õ2ˆàˆq„yØ	ˆV�ˆð €Hð 	
ÐÕˆà€Hr   c                 ó@   € \        \        P                  ! V 4      4      # ©N)r   r   ÚGUID)Úvs   &r   Úguid_to_stringr7   q   s   € ÜŒt�yŠy˜‹|ÓÐr   c                 ó.   € \        V 4      p \        V 4      # r4   )r,   r   )Únt_times   &r   Ústring_from_nt_time_stringr:   u   s   € Ü�'‹l€GÜ˜wÓ'Ð'r   úmsKds-UseStartTimeúmsKds-CreateTimezmsKds-RootKeyDatazmsKds-SecretAgreementParamÚ
objectGUIDúmsKds-KDFParamúmsKds-PublicKeyLengthúmsKds-PrivateKeyLengthúmsKds-Versionc                óâ   € \         P                  V R 4      p\        V\        4      '       g	   V! V4      # \	        V4      ^8X  d   V! V^ ,          4      # V Uu. uF
  q2! V4      NK  	  up# u upi )z^Convert an attribute into a printable form, using the attribute
name to guess the best format.c                 ó   € \        V 4      # r4   )r   )Úxs   &r   Ú<lambda>Úencode_by_key.<locals>.<lambda>�   s   € ¤3 q¤6r   )ÚENCODERSÚgetÚ
isinstancer	   r!   )Úkr6   ÚfnrD   s   &&  r   Úencode_by_keyrL   Š   s_   € ô 
�‰�aÑ)Ó	*€Bä�aœ×(Ò(Ù�!‹uˆä
ˆ1ƒv�„{Ù�!�A•$‹xˆáÓ™1�aˆBˆqŽE™1ÑÐùÒs   ÁA,c                   ó.   a € ] tR t^³t o RtRR ltRtV tR# )ÚRootKeyCommandz=Base class with a common method for presenting root key data.Nc                óâ  € VR 8X  dY   / pVe   WFR&   VP                  4        F'  w  rxV'       g   V\        9   d   K  \        Wx4      Wg&   K)  	  V P                  V4       R# Vf   \	        4       p\        VR,          ^ ,          4      p	\        VR,          ^ ,          4      p
\        W•,
          4      p\        W¥,
          4      pVe   V P                  V4       V P                  RVR,           24       V P                  R\        V	4       RV R	24       V P                  R
\        V
4       RV R	24       V'       dC   \         F8  pW,          ^ ,          P                  4       pV P                  RVR RV 24       K:  	  V Uu. uF  qw\        \        ,           9  g   K  VNK  	  ppV F-  p\        WqV,          4      pV P                  RVR RV 24       K/  	  V P                  R4       R# u upi )ÚjsonNÚmessagezmsKds-createTimer;   zname r   z   created        ú (Ú)z   usable from    z   Ú14Ú Ú )ÚitemsÚSECRET_ATTRSrL   Ú
print_jsonr   r,   r2   rQ   r   ÚhexÚ
BASE_ATTRS)ÚselfÚmsgÚoutput_formatÚshow_secretsÚpreambleÚnowÚoutrJ   r6   Úcreate_timeÚ
start_timeÚcreate_delta_stringÚstart_delta_stringÚremaining_keyss   &&&&&&        r   Úshow_root_key_messageÚ$RootKeyCommand.show_root_key_messageµ   sÃ  € ð
 ˜FÔ"ØˆCØÒ#Ø!)�I‘ØŸ	™	ž‘�ß#¨¬\Ô(9ÙÜ& qÓ,�“ñ $ð �O‰O˜CÔ ÙàŠ;Ü“(ˆCÜ˜#Ð0Õ1°!Õ4Ó5ˆÜ˜Ð1Õ2°1Õ5Ó6ˆ
Ü*¨;Õ+<Ó=ÐÜ)¨*Õ*:Ó;ÐàÒØ�L‰L˜Ô"à�‰�u˜S �[˜MÐ*Ô+Ø�‰Ð)Ô*=¸kÓ*JÐ)KÈ2ÐNaÐMbÐbcÐdÔeØ�‰Ð)Ô*=¸jÓ*IÐ)JÈ"ÐM_ÐL`Ð`aÐbÔcçß!�Ø•F˜1•I—M‘M“O�Ø—‘˜s 1 R &¨¨!¨Ð-Ö.ñ "ñ &)ÓO¡S ´ZÄ,Õ5NÑ,NŸ!˜!¡SˆÐOãˆAÜ˜a Q¥Ó(ˆAØ�L‰L˜3˜q ˜f A a SÐ)Ö*ñ  ð 	�‰�RÖùò Ps   ÆG,ÆG,© )NFNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rh   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   rN   rN   ³   s   ø‡ € ÙG÷)ò )r   rN   c            	       óÂ   a € ] tR t^át o RtRtR]P                  R]P                  R]P                  /t
]! RRRR	R
R7      ]! RRR7      ]! RRRRR7      .tRR ltRtV tR# )Úcmd_domain_kds_root_key_createzCreate a KDS root key object.ú%prog [-H <URL>] [options]Ú	sambaoptsÚcredoptsÚhostoptsú--jsonúOutput results in JSON format.r^   Ústore_constrP   ©ÚhelpÚdestÚactionÚconstz--use-start-timez#Use of the key begins at this time.©r~   ú-vú	--verboseú
Be verboseÚ
store_true©r~   r€   Nc           	     ó¼  € / pVe    \        V4      pW‡R&   V P                  WV4      p
V
P                  ! R/ VB pVP                  4       p\        R,          pV'       d   V\        ,          p\        W¬VR7      p\        VR,          ^ ,          4      pR\        V4       R\        V\        4       ,
          4       R2pRV R	V 2pV'       d   V P                  VVV R
2R7       R # VR8X  d;   V Uu/ uF  pVVV,          bK  	  ppV P                  ! RRVR\        V4      /VB  R # V P!                  V4       R #   \         d   p	\        T	4      R hR p	?	ii ; iu upi )NÚuse_start_timeºNNN)r   r;   zusable from rR   rS   zcreated root key z, Ú
)r`   rP   rQ   r   rj   )r   Ú
ValueErrorr   Úldb_connectÚnew_gkdi_root_keyÚget_rdn_valuer[   ÚVERBOSE_ATTRSr$   r,   r   r2   r   rh   Úprint_json_statusr   rQ   )r\   ry   rw   rx   r^   r‰   ÚverboseÚkwargsÚnt_useÚer   r   Úguidr   r]   rd   Úused_from_stringrQ   rJ   s   &&&&&&&            r   ÚrunÚ"cmd_domain_kds_root_key_create.runó   sp  € àˆØÒ%ð0Ü,¨^Ó<�Ø+1Ð'Ñ(ð ×Ñ˜x°HÓ=ˆØ×"Ò"Ñ, VÑ,ˆØ×ÑÓ!ˆä˜1•ˆßØ”]Õ"ˆEä(¨¸%Ô@ˆÜ˜Ð1Õ2°1Õ5Ó6ˆ
Ø*Ô+>¸zÓ+JÐ*Kð L Ü ,¨Z¼&»(Õ-BÓ CÐDÀAðGÐð & d V¨2Ð.>Ð-?Ð@ˆçØ×&Ñ& sØ'4Ø3:°)¸2°ð 'ö @ð ˜fÔ$Ù).Ó/© A�a˜˜Q�’i©ˆFÐ/Ø×"Ò"ÑI¨7ÐI´s¸2³wÐIÀ&ÔIà�L‰L˜Ö!øô7 ô 0Ü" 1“o¨4Ð/ûð0üò0 0s   ˆD: Ã1EÄ:EÅEÅErj   ©NNNNNN©rk   rl   rm   rn   ro   ÚsynopsisÚoptionsÚSambaOptionsÚCredentialsOptionsÚHostOptionsÚtakes_optiongroupsr   Útakes_optionsr˜   rp   rq   rr   s   @r   ru   ru   á   sz   ø‡ € Ù'à+€Hð 	�W×)Ñ)Ø�G×.Ñ.Ø�G×'Ñ'ðÐñ 	ˆxÐ>Ø#¨MÀô	IáÐ!Ð(MÔNÙˆt�[ |¸LÔIð	€M÷""ò ""r   ru   c            	       ó¬   a € ] tR tRt o RtRtR]P                  R]P                  R]P                  /t
]! RRR	7      ]! R
RRRRR7      .tRR ltRtV tR# )Úcmd_domain_kds_root_key_deletei  zDelete a KDS root key.rv   rw   rx   ry   ú--namezThe key to deleter‚   rz   r{   r^   r|   rP   r}   Nc                óH  € V P                  WV4      p \        Wd4      pTP	                  TP
                  4       TP
                  P                  4       p	RT	 2p
TR8X  d   T P                  T
4       R # T P                  T
4       R #   \         d   p\        T4      hR p?ii ; i)Nzdeleted root key rP   )	r�   r$   r
   r   Údeleter   r�   r‘   rQ   )r\   ry   rw   rx   r   r^   r   Úroot_keyr•   r–   rQ   s   &&&&&&     r   r˜   Ú"cmd_domain_kds_root_key_delete.run)  s‘   € Ø×Ñ˜x°HÓ=ˆð	"Ü1°#Ó<ˆHð 	�
‰
�8—;‘;Ôà�{‰{×(Ñ(Ó*ˆØ% d VÐ,ˆà˜FÔ"Ø×"Ñ" 7Ö+à�L‰L˜Ö!øô ô 	"Ü˜q“/Ð!ûð	"ús   ”B ÂB!ÂBÂB!rj   )NNNNNr›   rr   s   @r   r¤   r¤     sk   ø‡ € Ù à+€Hð 	�W×)Ñ)Ø�G×.Ñ.Ø�G×'Ñ'ðÐñ 	ˆxÐ1Ô2ÙˆxÐ>Ø#¨MÀô	Ið€M÷"ò "r   r¤   c            
       óÄ   a € ] tR tRt o RtRtR]P                  R]P                  R]P                  /t
]! RRR	R
R7      ]! RRR
R7      ]! RRRRRR7      .tRR ltRtV tR# )Úcmd_domain_kds_root_key_listi;  zList KDS root keys.rv   rw   rx   ry   rƒ   r„   r…   r†   r‡   ú--show-secretsúShow root key hashrz   r{   r^   r|   rP   r}   Nc                óš  € V P                  WV4      p\        R ,          pV'       d   V\        ,          pV'       d   V\        ,          p\	        Wx4      p	VR8X  db   . p
V	P
                   F<  p/ pV
P                  V4       VP                  4        F  w  rÞ\        WÞ4      WÍ&   K  	  K>  	  V P                  V
4       R# \        V	4      ^ 8X  d   V P                  R4       R# T P                  \        V	4       R\        V	4      ^8”  d   RMR R24       \        4       pV	 F)  pV P                  VVVVR7       V P                  R4       K+  	  R# )	rŠ   rP   Nzno root keys found.z	 root keyr1   rV   z found.
)r_   ra   )r�   r[   rX   r�   r(   ÚmsgsÚappendrW   rL   rY   r!   rQ   r   rh   )r\   ry   rw   rx   r’   r_   r^   r   r   r#   rb   r]   ÚmrJ   r6   ra   s   &&&&&&&         r   r˜   Ú cmd_domain_kds_root_key_list.runM  s  € à×Ñ˜x°HÓ=ˆä˜1•ˆçØ”\Õ!ˆEçØ”]Õ"ˆEä" 3Ó.ˆà˜FÔ"ØˆCØ—x”x�Ø�Ø—
‘
˜1”ØŸI™IžK‘D�AÜ(¨Ó.�A“Dó (ñ  ð �O‰O˜CÔ Ùäˆs‹8�qŒ=Ø�L‰LÐ.Ô/Ùà�‰œ˜C›�z ´#°c³(¸Q´,©3ÀBÐ*GÀyÐQÔRä‹hˆÛˆCØ×&Ñ& sØ'4Ø4@Ø+.ð 'ô 0ð �L‰L˜Öó r   rj   rš   r›   rr   s   @r   r«   r«   ;  s|   ø‡ € Ùà+€Hð 	�W×)Ñ)Ø�G×.Ñ.Ø�G×'Ñ'ðÐñ 	ˆt�[ |¸LÔIÙÐÐ&:À<ÔPÙˆxÐ>Ø#¨MÀô	Ið€M÷%ò %r   r«   c                   óê   a € ] tR tRt o RtRtR]P                  R]P                  R]P                  /t
]! RRR	7      ]! R
RRR7      ]! RRRRR7      ]! RRRR7      ]! RRRRRR7      .tRR ltRtV tR# )Úcmd_domain_kds_root_key_viewiu  zView a root key object.rv   rw   rx   ry   r¥   z!Choose thhe key to view (by GUID)r‚   z--latestzView the latest keyr†   r‡   rƒ   r„   r…   r¬   r­   rz   r{   r^   r|   rP   r}   Nc	                óˆ  € V P                  WV4      p	\        \        ,           p
V'       d   V
\        ,          p
V'       d   V
R .,          p
V'       d@   Ve   \	        R4      h\        Wš4      p\        V4      ^ 8X  d   \	        R4      hV^ ,          pMVe   \        W”V
4      pM\	        R4      hV P                  VVVR7       R# )r   Nz0It makes no sense to combine --name and --latestzno root keys foundzPPLease use '--name <GUID>' or '--latest'  (try the 'list' command to find names))r_   )	r�   r[   r�   rX   r   r(   r!   r$   rh   )r\   ry   rw   rx   r   r^   r_   r’   Úlatestr   r   r#   r]   s   &&&&&&&&&    r   r˜   Ú cmd_domain_kds_root_key_view.run‰  sÀ   € ð ×Ñ˜x°HÓ=ˆô œ]Õ*ˆßØ”\Õ!ˆEßØ�c�U�NˆEçØÒÜ"Ð#UÓVÐVÜ& sÓ2ˆCÜ�3‹x˜1Œ}Ü"Ð#7Ó8Ð8Ø�a•&‰CàÒÜ,¨S¸Ó>‰Cäð  Ió Jð Jð 	×"Ñ" 3Ø#0Ø0<ð 	#ö 	>r   rj   )NNNNNNNNr›   rr   s   @r   r´   r´   u  s”   ø‡ € Ù!à+€Hð 	�W×)Ñ)Ø�G×.Ñ.Ø�G×'Ñ'ðÐñ 	ˆxÐAÔBÙˆzÐ 5¸lÔKÙˆt�[ |¸LÔIÙÐÐ&:À<ÔPÙˆxÐ>Ø#¨MÀô	Ið€M÷$>ò $>r   r´   c            	       óV   € ] tR tRtRtR]! 4       R]! 4       R]! 4       R]! 4       /t	Rt
R# )	Úcmd_domain_kds_root_keyi°  z*Manage key distribution service root keys.Úcreater§   ÚlistÚviewrj   N)rk   rl   rm   rn   ro   ru   r¤   r«   r´   Úsubcommandsrp   rj   r   r   r¹   r¹   °  s2   † Ù4ð 	Ñ0Ó2ØÑ0Ó2ØÑ,Ó.ØÑ,Ó.ð	„Kr   r¹   r4   )NN)r   r;   r<   )ÚwhenCreatedÚwhenChangedr=   zmsKds-KDFAlgorithmIDr>   z msKds-SecretAgreementAlgorithmIDr?   r@   rA   zmsKds-DomainIDÚcn))Úsamba.getoptÚgetoptr�   r   r   Úsamba.netcmdr   r   r   r   Úsamba.dcerpcr   r	   r
   Úsambar   Úsamba.nt_timer   r   r   r   r   r$   r(   r2   r7   r:   ÚbytesrZ   r,   rG   rL   r[   rX   r�   rN   ru   r¤   r«   r´   r¹   rj   r   r   Ú<module>rÈ      s÷   ðõ* Ý ß DÓ DÝ ß (Ý  ÷9ó 9òôô8òò8ò(ð Ð4ØÐ2Ø˜Ÿ™Ø  %§)¡)Ø�.Ø�e—i‘iØ˜SØ˜cØ�Sð
€òò €
ð $Ø,ð.€ò€ô+�Wô +ô\4" ^ô 4"ôn " ^ô  "ôF7 >ô 7ôt8> >ô 8>ôv˜lö r   