+
    4Ssi–"  ã                   óv   € R t ^ RIHtHtHtHtHt ^ RIt^ RIH	t	 ^ RI
HtHtHt ^ RIHt R t ! R R]4      tR# )	z5Utility methods for security descriptor manipulation.)ÚFLAG_MOD_REPLACEÚ
SCOPE_BASEÚDnÚMessageÚMessageElementN)Úsecurity)Úndr_deepcopyÚndr_packÚ
ndr_unpack)ÚNT_STATUS_OBJECT_NAME_NOT_FOUNDc                ó>   a€ RoRP                  V3R lV  4       4      # )a#  Encode claim attribute names according to [MS-DTYP] 2.5.1 ("attr-char2")

Some characters must be encoded as %hhhh, while others must not be.
Of the optional ones, we encode some control characters.

The   byte is also encoded, which is useful for tests, but it
is forbidden in either form.
z 	
 !"%&()<=>|Ú c              3   óT   <"  € T F  pVS9  d   TMR \        V4      R 2x € K  	  R# 5i)Ú%Ú04xN)Úord)Ú.0ÚcÚescapess   & €Ú0/usr/lib/python3/dist-packages/samba/sd_utils.pyÚ	<genexpr>Ú#escaped_claim_id.<locals>.<genexpr>'   s;   øé € ð &ñ %�qð ˜wÔ&ñ àœC ›F 3˜<Ð(ô)ó %ùs   ƒ%()Újoin)Úclaim_idr   s   &@r   Úescaped_claim_idr      s*   ø€ ð .€GØ�7‰7ô &ñ %ó&ó &ð &ó    c                   ó|   a € ] tR t^-t o RtR tRR ltRR ltR tRR lt	RR lt
R	 tRR
 ltRR ltRR ltRtV tR# )ÚSDUtilszCSome utilities for manipulation of security descriptors on objects.c                óx   € Wn         \        P                  ! V P                   P                  4       4      V n        R # ©N)Úldbr   Údom_sidÚget_domain_sidÚ
domain_sid)ÚselfÚsamdbs   &&r   Ú__init__ÚSDUtils.__init__0   s&   € ØŒÜ"×*Ò*¨4¯8©8×+BÑ+BÓ+DÓEˆŽr   Nc                ó.  € \        4       p\        V\        4      '       d   Wn        M\        V P                  V4      Vn        \        V\
        4      '       g#   \        V\        P                  4      '       g   Q h\        V\
        4      '       d+   \        P                  P                  W P                  4      pM"\        V\        P                  4      '       d   Tp\        \        X4      \        R4      VR&   V P                  P                  WC4       R# )zRModify security descriptor using either SDDL string
or security.descriptor object
ÚnTSecurityDescriptorN)r   Ú
isinstancer   Údnr    Ústrr   Ú
descriptorÚ	from_sddlr#   r   r	   r   Úmodify)r$   Ú	object_dnÚsdÚcontrolsÚmÚtmp_descs   &&&&  r   Úmodify_sd_on_dnÚSDUtils.modify_sd_on_dn4   sÃ   € ô ‹IˆÜ�i¤×$Ò$Ø�Dä�d—h‘h 	Ó*ˆAŒDä˜2œs×#Ò#¤z°"´h×6IÑ6I×'JÒ'JÐKÐJÜ�bœ#×ÒÜ×*Ñ*×4Ñ4°R¿¹ÓI‰HÜ˜œH×/Ñ/×0Ò0ØˆHä$2´8¸HÓ3EÜ3CØ3Ió%KˆÐ
 Ñ!ð 	�‰�‰˜Ö$r   c                ó®   € V P                   P                  V\        R R.VR7      pV^ ,          R,          ^ ,          p\        \        P
                  V4      # )Nr)   ©r2   )r    Úsearchr   r
   r   r-   )r$   r0   r2   ÚresÚdescs   &&&  r   Úread_sd_on_dnÚSDUtils.read_sd_on_dnI   sO   € Ø�h‰h�o‰o˜i¬°TØ5Ð6Àð ó Kˆà�1�vÐ,Õ-¨aÕ0ˆÜœ(×-Ñ-¨tÓ4Ð4r   c                ó–   € V P                   P                  V4      p\        \        P                  V^ ,          R,          ^ ,          4      # )é    Ú	objectSid)r    r9   r
   r   r!   )r$   r0   r:   s   && r   Úget_object_sidÚSDUtils.get_object_sidO   s5   € Ø�h‰h�o‰o˜iÓ(ˆÜœ(×*Ñ*¨C°­F°;Õ,?ÀÕ,BÓCÐCr   c                óÒ  a € Vf   . pVf   . pV 3R lpVfº   Vf   R\         P                  ,          .pS P                  WR7      pVP                  \         P                  ,          '       gd   \        VP                  4      pVP                   F>  p	V	P                  \         P                  ,          '       g   K,   VP                  V	4       K@  	  MuVf   . pS P                  P!                  V\"        R V.VR7      p\%        V^ ,          V,          ^ ,          4      p\         P&                  P)                  VS P*                  4      p^ p. p. p. pV FÄ  p	\-        V	\$        4      '       d	   V! V	4      p	\-        V	\         P.                  4      '       g   Q hV	P                  \         P                  ,          '       d   VP1                  V	4       K}  W—P                  P                  9  d   VP1                  V	4       Kª  VP                  V	4       V^,          pKÆ  	  V Fö  p	Rp\-        V	\2        4      '       d   RV	9   d
   V	R,          pV	R,          p	\-        V	\$        4      '       d	   V! V	4      p	\-        V	\         P.                  4      '       g   Q hV	P                  \         P                  ,          '       d   VP1                  V	4       K®  W—P                  P                  9   d   VP1                  V	4       KÛ  VP5                  V	V4       V^,          pKø  	  V^ 8X  d   WïV3# Vf   S P7                  WVR7       MlVP9                  S P*                  4      p\;        4       pVVn        \?        VPA                  R4      \B        V4      VV&   S P                  PE                  VVR7       WïV3#   \        P                   d+   p
T
P                  ^ ,          \        8w  d   T
h R p
?
EKS  R p
?
ii ; i)Nc                 óì   <€ \         P                  P                  R V ,           SP                  4      p\	        VP
                  P                  4      ^8X  g   Q hVP
                  P                  ^ ,          # )úD:)r   r-   r.   r#   ÚlenÚdaclÚaces)Úace_sddlÚace_sdr$   s   & €r   Úace_from_sddlÚ2SDUtils.update_aces_in_dacl.<locals>.ace_from_sddlZ   sU   ø€ Ü×(Ñ(×2Ñ2°4¸(µ?ÀDÇOÁOÓTˆFÜ�v—{‘{×'Ñ'Ó(¨AÔ-Ð-Ð-Ø—;‘;×#Ñ# AÕ&Ð&r   zsd_flags:1:%dr8   ÚidxÚaceÚasciiéÿÿÿÿ)#r   ÚSECINFO_DACLr<   ÚtypeÚSEC_DESC_DACL_PROTECTEDr   rG   rH   ÚflagsÚSEC_ACE_FLAG_INHERITED_ACEÚdacl_del_aceÚsambaÚNTSTATUSErrorÚargsr   r    r9   r   r,   r-   r.   r#   r*   rN   ÚappendÚdictÚdacl_addr5   Úas_sddlr   r+   r   Úencoder   r/   )r$   r+   Údel_acesÚadd_acesÚ	sddl_attrr2   rK   r1   Ú	dacl_copyrN   Úerrr:   Úold_sddlÚnum_changesÚdel_ignoredÚadd_ignoredÚinherited_ignoredÚadd_idxÚnew_sddlr3   s   f&&&&&              r   Úupdate_aces_in_daclÚSDUtils.update_aces_in_daclS   s@  ø€ àÒØˆHØÒØˆHõ	'ð
 ÒØÒØ+¬h×.CÑ.CÕCÐD�Ø×#Ñ# BÐ#Ó:ˆBØ—7‘7œX×=Ñ=×=Ô=ô )¨¯©Ó1�	Ø$Ÿ>œ>�CØ—y‘y¤8×#FÑ#F×FÖFð!ØŸO™O¨CÖ0ñ *øð ÒØ�Ø—(‘(—/‘/ "¤j°$Ø#, +¸ð "ó BˆCä˜3˜q�6 )Õ,¨QÕ/Ó0ˆHÜ×$Ñ$×.Ñ.¨x¸¿¹ÓIˆBàˆØˆØˆØÐãˆCÜ˜#œs×#Ò#Ù# CÓ(�Ü˜c¤8§<¡<×0Ò0Ð0Ð0à�y‰yœ8×>Ñ>×>Ô>Ø!×(Ñ(¨Ô-ÙàŸ'™'Ÿ,™,Ô&Ø×"Ñ" 3Ô'Ùà�O‰O˜CÔ Ø˜1ÕŠKñ ó  ˆCØˆGÜ˜#œt×$Ò$Ø˜C”<Ø! %�j�GØ˜%•j�Ü˜#œs×#Ò#Ù# CÓ(�Ü˜c¤8§<¡<×0Ò0Ð0Ð0à�y‰yœ8×>Ñ>×>Ô>Ø!×(Ñ(¨Ô-Ùà—g‘g—l‘lÔ"Ø×"Ñ" 3Ô'Ùà�K‰K˜˜WÔ%Ø˜1ÕŠKñ' ð* ˜!ÔØÐ->Ð>Ð>àÒØ× Ñ  °(Ð Õ;à—z‘z $§/¡/Ó2ˆHÜ“	ˆAØˆAŒDÜ)¨(¯/©/¸'Ó*BÜ*:Ø*3ó5ˆAˆi‰Lð �H‰H�O‰O˜A¨ˆOÔ1àÐ):Ð:Ð:øôM  %×2Ñ2ô !Ø"Ÿx™x¨�{Ô.MÔMØ&) 	ö !ûð!ús   Â;N'Î'O&Î<O!Ï!O&c                ó  € \         P                  P                  RV,           V P                  4      p. p^ pVP                  P
                   F!  pVP                  RVRV/4       V^,          pK#  	  V P                  WVR7      w  r‰p
Wš3# )zCPrepend an ACE (or more) to an objects security descriptor
        rE   rM   rN   ©r`   r2   ©r   r-   r.   r#   rG   rH   rZ   rk   )r$   r0   rH   r2   rJ   r`   ri   rN   Ú_ÚaiÚiis   &&&&       r   Údacl_prepend_acesÚSDUtils.dacl_prepend_aces¶   sˆ   € ô ×$Ñ$×.Ñ.¨t°d­{¸D¿O¹OÓLˆØˆØˆØ—;‘;×#Ô#ˆCØ�O‰O˜U G¨U°CÐ8Ô9Ø�q�LŠGñ $ð ×,Ñ,¨YØ6>ð -ó @‰	ˆˆràˆvˆr   c                ó4   € V P                  WR.R7      w   pR# )z?Add an ACE (or more) to an objects security descriptor
        úshow_deleted:1r8   N)rs   )r$   r0   rN   rp   s   &&& r   Údacl_add_aceÚSDUtils.dacl_add_aceÃ   s&   € ð ×%Ñ% iØ0@Ð/Að &ó C‰ˆŠ1r   c                óö   € \         P                  P                  RV,           V P                  4      p. pVP                  P
                   F  pVP                  V4       K  	  V P                  WVR7      w  rxp	W‰3# )zBAppend an ACE (or more) to an objects security descriptor
        rE   rn   ro   )
r$   r0   rH   r2   rJ   r`   rN   rp   rq   rr   s
   &&&&      r   Údacl_append_acesÚSDUtils.dacl_append_acesÉ   so   € ô ×$Ñ$×.Ñ.¨t°d­{¸D¿O¹OÓLˆØˆØ—;‘;×#Ô#ˆCØ�O‰O˜CÖ ñ $à×,Ñ,¨YØ6>ð -ó @‰	ˆˆràˆvˆr   c                óö   € \         P                  P                  RV,           V P                  4      p. pVP                  P
                   F  pVP                  V4       K  	  V P                  WVR7      w  rxp	Wy3# )zBDelete an ACE (or more) to an objects security descriptor
        rE   )r_   r2   ro   )
r$   r0   rH   r2   Údel_sdr_   rN   Údirp   rr   s
   &&&&      r   Údacl_delete_acesÚSDUtils.dacl_delete_acesÔ   so   € ô ×$Ñ$×.Ñ.¨t°d­{¸D¿O¹OÓLˆØˆØ—;‘;×#Ô#ˆCØ�O‰O˜CÖ ñ $à×,Ñ,¨YØ6>ð -ó @‰	ˆˆràˆvˆr   c                óv   € Vf   . pV P                  WR.,           4      pVP                  V P                  4      # )z:Return object nTSecurityDescriptor in SDDL format
        rv   )r<   r]   r#   )r$   r0   r2   r;   s   &&& r   Úget_sd_as_sddlÚSDUtils.get_sd_as_sddlß   s;   € ð ÒØˆHØ×!Ñ! )Ð9IÐ8JÕ-JÓKˆØ�|‰|˜DŸO™OÓ,Ð,r   )r#   r    r   )NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r&   r5   r<   rA   rk   rs   rw   rz   r   r‚   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   -   sD   ø‡ € ÙMòFô%ô*5òDôa;ôFòCô	ô	÷-ò -r   r   )rˆ   r    r   r   r   r   r   rW   Úsamba.dcerpcr   Ú	samba.ndrr   r	   r
   Úsamba.ntstatusr   r   Úobjectr   © r   r   Ú<module>r‘      s2   ðñ& <ç IÕ Iã Ý !ß 8Ñ 8Ý :ò&ô x-ˆfö x-r   