o
    Žõ±jÝR  ã                   @   sŽ  d dl Z d dlmZ d dlmZmZmZmZ dZdZ	G dd„ de j
ƒZG dd	„ d	e j
ƒZG d
d„ de j
ƒZdZdZdZdZdZi dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“i d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“edM“edN“dOdP“dQdR“¥i dSdT“dUdV“dWdX“dYdZ“d[d\“d]d^“d_d`“dadb“dcdd“dedf“dgdh“edi“djdk“dldm“edn“dodp“dqdr“¥dsdtdudvdwdxdydzd{d|d}d~edd€d�d‚dƒd„d…i
¥Zi ejd†“ejd‡“ejdˆ“ejd‰“ejdŠ“ejd‹“ejdŒ“ejd�“ejdŽ“ejd�“ejd�“ejd‘“ej d’“ej!d““ej"d”“ej#d•“ej$d–“Z%g d—¢Z&G d˜d™„ d™ƒZ'dS )šé    N)ÚSECURITY_DESCRIPTOR)ÚACETypeÚACE_OBJECT_PRESENCEÚACCESS_MASKÚADS_ACCESS_MASKz$0e10c968-78fb-11d2-90d4-00c04f79dc55z$a05b8cc2-17bc-4802-a710-e7c15ab866a2c                   @   s@   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdS )ÚCertificateNameFlagé   é   i  @ i  € i   i   i   i   i   i    i   @l        é   N)Ú__name__Ú
__module__Ú__qualname__ÚENROLLEE_SUPPLIES_SUBJECTÚ"ENROLLEE_SUPPLIES_SUBJECT_ALT_NAMEÚSUBJECT_ALT_REQUIRE_DOMAIN_DNSÚSUBJECT_ALT_REQUIRE_SPNÚ"SUBJECT_ALT_REQUIRE_DIRECTORY_GUIDÚSUBJECT_ALT_REQUIRE_UPNÚSUBJECT_ALT_REQUIRE_EMAILÚSUBJECT_ALT_REQUIRE_DNSÚSUBJECT_REQUIRE_DNS_AS_CNÚSUBJECT_REQUIRE_EMAILÚSUBJECT_REQUIRE_COMMON_NAMEÚSUBJECT_REQUIRE_DIRECTORY_PATHÚ&OLD_CERT_SUPPLIES_SUBJECT_AND_ALT_NAME© r   r   úœ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/msldap/ldap_objects/adcertificatetemplate.pyr   
   s    r   c                   @   sT   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdS )ÚEnrollmentFlagr   é   é   r
   é   é    é@   é   i   i   é   é    i @  i €  r	   i   i   i   N)r   r   r   ÚINCLUDE_SYMMETRIC_ALGORITHMSÚPEND_ALL_REQUESTSÚPUBLISH_TO_KRA_CONTAINERÚPUBLISH_TO_DSÚ)AUTO_ENROLLMENT_CHECK_USER_DS_CERTIFICATEÚAUTO_ENROLLMENTÚ'PREVIOUS_APPROVAL_VALIDATE_REENROLLMENTÚUSER_INTERACTION_REQUIREDÚ.REMOVE_INVALID_CERTIFICATE_FROM_PERSONAL_STOREÚALLOW_ENROLL_ON_BEHALF_OFÚADD_OCSP_NOCHECKÚ0ENABLE_KEY_REUSE_ON_NT_TOKEN_KEYSET_STORAGE_FULLÚNOREVOCATIONINFOINISSUEDCERTSÚ&INCLUDE_BASIC_CONSTRAINTS_FOR_EE_CERTSÚ=ALLOW_PREVIOUS_APPROVAL_KEYBASEDRENEWAL_VALIDATE_REENROLLMENTÚISSUANCE_POLICIES_FROM_REQUESTÚSKIP_AUTO_RENEWALÚNO_SECURITY_EXTENSIONr   r   r   r   r      s&    r   c                   @   s0   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ÚPrivateKeyFlagr   r    r!   r"   é€   r#   r%   r$   i    N)r   r   r   ÚREQUIRE_PRIVATE_KEY_ARCHIVALÚEXPORTABLE_KEYÚSTRONG_KEY_PROTECTION_REQUIREDÚ%REQUIRE_ALTERNATE_SIGNATURE_ALGORITHMÚREQUIRE_SAME_KEY_RENEWALÚUSE_LEGACY_PROVIDERÚATTEST_REQUIREDÚATTEST_PREFERREDÚHELLO_LOGON_KEYr   r   r   r   r8   -   s    r8   z1.3.6.1.5.5.7.3.2z1.3.6.1.5.2.3.4z1.3.6.1.4.1.311.20.2.2z2.5.29.37.0z1.3.6.1.4.1.311.20.2.1z1.3.6.1.4.1.311.2.6.1ÚSpcRelaxedPEMarkerCheckz1.3.6.1.4.1.311.2.6.2ÚSpcEncryptedDigestRetryCountz1.3.6.1.4.1.311.10.3.6z%Windows System Component Verificationz1.3.6.1.4.1.311.10.3.22z$Protected Process Light Verificationz1.3.6.1.4.1.311.10.3.27zPreview Build Signingz1.3.6.1.4.1.311.10.3.1zMicrosoft Trust List Signingz1.3.6.1.4.1.311.10.3.2zMicrosoft Time Stampingz1.3.6.1.4.1.311.10.3.7z)OEM Windows System Component Verificationz1.3.6.1.4.1.311.10.3.13zLifetime Signingz1.3.6.1.4.1.311.10.3.11zKey Recoveryz1.3.6.1.4.1.311.10.3.23zWindows TCB Componentz1.3.6.1.4.1.311.10.3.25z)Windows Third Party Application Componentz1.3.6.1.4.1.311.10.3.26z'Windows Software Extension Verificationz1.3.6.1.4.1.311.10.3.8z.Embedded Windows System Component Verificationz1.3.6.1.4.1.311.10.3.20zWindows Kits Componentz1.3.6.1.4.1.311.10.3.5z$Windows Hardware Driver Verificationz1.3.6.1.4.1.311.10.3.39z-Windows Hardware Driver Extended Verificationz1.3.6.1.4.1.311.10.3.5.1z-Windows Hardware Driver Attested Verificationz1.3.6.1.4.1.311.10.3.4.1zFile Recoveryz1.3.6.1.4.1.311.10.3.30zDisallowed Listz1.3.6.1.4.1.311.10.3.19zRevoked List Signerz1.3.6.1.4.1.311.10.3.21zWindows RT Verificationz1.3.6.1.4.1.311.10.3.10zQualified Subordinationz1.3.6.1.4.1.311.10.3.12zDocument Signingz1.3.6.1.4.1.311.10.3.24zProtected Process Verificationz1.3.6.1.4.1.311.10.3.4zEncrypting File Systemz1.3.6.1.4.1.311.10.3.9zRoot List Signerz1.3.6.1.4.1.311.10.5.1zDigital Rightsz1.3.6.1.4.1.311.10.6.2zLicense Server Verificationz1.3.6.1.4.1.311.10.6.1zKey Pack LicenseszSmart Card LogonzCertificate Request Agentz1.3.6.1.4.1.311.20.1z	CTL Usagez1.3.6.1.4.1.311.21.6zKey Recovery Agentz1.3.6.1.4.1.311.21.19z#Directory Service Email Replicationz1.3.6.1.4.1.311.21.5zPrivate Key Archivalz1.3.6.1.4.1.311.61.1.1zKernel Mode Code Signingz1.3.6.1.4.1.311.61.4.1zEarly Launch Antimalware Driverz1.3.6.1.4.1.311.61.5.1zHAL Extensionz1.3.6.1.4.1.311.64.1.1z%Domain Name System (DNS) Server Trustz1.3.6.1.4.1.311.76.6.1zWindows Updatez1.3.6.1.4.1.311.76.3.1zWindows Storez1.3.6.1.4.1.311.76.5.1zDynamic Code Generatorz1.3.6.1.4.1.311.76.8.1zMicrosoft Publisherz1.3.6.1.4.1.311.80.1zDocument EncryptionzPKINIT Client Authenticationz1.3.6.1.5.2.3.5zKDC Authenticationz1.3.6.1.5.5.7.3.7zIP security userzClient Authenticationz1.3.6.1.5.5.7.3.9zOCSP Signingz1.3.6.1.5.5.7.3.3zCode Signingz1.3.6.1.5.5.7.3.4zSecure Emailz1.3.6.1.5.5.7.3.5zIP security end systemz1.3.6.1.5.5.7.3.6zIP security tunnel terminationz1.3.6.1.5.5.8.2.2zIP security IKE intermediatez1.3.6.1.5.5.7.3.8zTime Stampingz1.3.6.1.5.5.7.3.1zServer AuthenticationzAny Purposez2.23.133.8.1zEndorsement Key Certificatez2.23.133.8.2zPlatform Certificatez2.23.133.8.3z$Attestation Identity Key Certificater&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   )ÚcnÚsnÚdistinguishedNameÚnameúmsPKI-RA-Application-Policiesú$msPKI-Certificate-Application-PolicyúmsPKI-Template-Schema-VersionúmsPKI-Certificate-Name-FlagúmsPKI-Enrollment-FlagúmsPKI-RA-SignatureúmsPKI-Private-Key-FlagÚpKIExtendedKeyUsageÚnTSecurityDescriptorc                   @   s¾   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zd)dd„Zd)dd„Zd)dd„Zdd„ Zed d!„ ƒZed"d#„ ƒZd$d%„ Zd&d'„ Zd(d%„ ZdS )*ÚMSADCertificateTemplatec                 C   sœ   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d | _d | _g | _tƒ | _tƒ | _tƒ | _tƒ | _tƒ | _tƒ | _tƒ | _d | _g | _d S ©N)rF   rE   rG   rH   ÚRA_Application_PoliciesÚCertificate_Application_PolicyÚTemplate_Schema_VersionÚCertificate_Name_FlagÚEnrollment_FlagÚRA_SignatureÚPrivate_Key_FlagrP   rQ   ÚvulnsÚsetÚenroll_sidsÚautoenroll_sidsÚwrite_owner_sidsÚwrite_dacl_sidsÚwrite_property_sidsÚfullcontrol_sidsÚallextendedrights_sidsÚsid_lookup_tableÚenroll_services©Úselfr   r   r   Ú__init__™   s.   
z MSADCertificateTemplate.__init__c                 C   sü   t ƒ }| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d	¡|_	| d  d
¡|_
| d  d¡|_| d  d¡|_| d  dg ¡|_| d  d¡|_|jd urxt |j¡|_| ¡  |S )NÚ
attributesrF   rE   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   )rR   ÚgetrF   rE   rG   rH   rT   rU   rV   rW   rX   rY   rZ   rP   rQ   r   Ú
from_bytesÚ	calc_aces)ÚentryÚadir   r   r   Ú	from_ldap³   s$   
z!MSADCertificateTemplate.from_ldapc                 C   s>   t |ƒ}|dv r
dS | d¡du r| dd¡d dv rdS dS )N)zS-1-1-0zS-1-5-11Tz	S-1-5-21-ú-r   )Ú513Ú515Ú545F)ÚstrÚ
startswithÚrsplit)rg   Úsidr   r   r   ÚisLowPrivSidÉ   s   "z$MSADCertificateTemplate.isLowPrivSidc                 C   s*   |   ¡ ptttttgƒ t| jƒ¡ƒdkS ©Nr   )Úcan_be_used_for_any_purposeÚlenr\   ÚEKU_CLIENT_AUTHENTICATION_OIDÚEKU_SMART_CARD_LOGON_OIDÚ$EKU_PKINIT_CLIENT_AUTHENTICATION_OIDÚintersectionrP   rf   r   r   r   Úallows_authenticationÑ   s   *z-MSADCertificateTemplate.allows_authenticationc                 C   s   t | jƒdkpt| jv S ry   )r{   rP   ÚEKU_ANY_PURPOSE_OIDrf   r   r   r   rz   Ô   s   z3MSADCertificateTemplate.can_be_used_for_any_purposec                 C   ó   t jt | jƒv S rS   )r   r'   rX   rf   r   r   r   Úrequires_manager_approval×   ó   z1MSADCertificateTemplate.requires_manager_approvalc                 C   s   | j d ko	| j dkS ry   )rY   rf   r   r   r   Úrequires_authorized_signaturesÚ   ó   z6MSADCertificateTemplate.requires_authorized_signaturesc                 C   s   t | jƒt j@ dkS ry   )r   rW   r   rf   r   r   r   Úallows_to_specify_sanÝ   r†   z-MSADCertificateTemplate.allows_to_specify_sanc                 C   s
   t | jv S rS   )Ú!EKU_CERTIFICATE_REQUEST_AGENT_OIDrP   rf   r   r   r   Ú#allows_to_request_agent_certificateà   s   
z;MSADCertificateTemplate.allows_to_request_agent_certificatec                 C   s    t | jv rdS t| jv rdS d S )NT)r�   rP   rˆ   rf   r   r   r   Úallows_to_use_agent_certificateã   s
   

ÿz7MSADCertificateTemplate.allows_to_use_agent_certificatec                 C   r‚   rS   )r   r7   rX   rf   r   r   r   Úno_securty_extensionð   r„   z,MSADCertificateTemplate.no_securty_extensionNc                    sþ  |d u rˆ   tˆ jjƒ¡du rdS n
tˆ jjƒ|v rdS d}|d u rƒt‡ fdd„ˆ jD ƒƒdu r2dS t‡ fdd„ˆ jD ƒƒdu rBd	S t‡ fd
d„ˆ jD ƒƒdu rRdS t‡ fdd„ˆ jD ƒƒdu rbdS t‡ fdd„ˆ j	D ƒƒdu rrd}t‡ fdd„ˆ j
D ƒƒdu r‚d}nRtˆ j	 t|ƒ¡ƒdks›tˆ j
 t|ƒ¡ƒdkr�d}tˆ j t|ƒ¡ƒdkr«dS tˆ j t|ƒ¡ƒdkr¹dS tˆ j t|ƒ¡ƒdkrÇdS tˆ j t|ƒ¡ƒdkrÕdS ˆ  ¡ du rÝdS ˆ  ¡ du rådS ˆ  ¡ rñ|rñˆ  ¡ rñdS |rýˆ  ¡ rýˆ  ¡ rýdS dS )NT)TúOwner is low priv user)Tz'Owner can be controlled by current userFc                 3   ó   � | ]
}ˆ   t|ƒ¡V  qd S rS   ©rx   rt   ©Ú.0rw   rf   r   r   Ú	<genexpr>þ   ó   € z8MSADCertificateTemplate.is_vulnerable.<locals>.<genexpr>)TúLowpriv SID has full controlc                 3   r�   rS   rŽ   r�   rf   r   r   r‘     r’   )TúLowpriv SID can write DACLsc                 3   r�   rS   rŽ   r�   rf   r   r   r‘     r’   )TúLowpriv SID can change Ownerc                 3   r�   rS   rŽ   r�   rf   r   r   r‘     r’   )TúLowpriv SID can write propertyc                 3   r�   rS   rŽ   r�   rf   r   r   r‘   
  r’   c                 3   r�   rS   rŽ   r�   rf   r   r   r‘     r’   r   )TúCurrent user can write DACLs)TúCurrent user can change Owner)TúCurrent user can write property)TúCurrent user has full control)FzNeeds manager approval)FzNeeds authorized signature)TzEnrollee supplies subject)TzCertificate request agent)FzNo match found)rx   rt   rQ   ÚOwnerÚanyrb   r`   r_   ra   r]   rc   r{   r   r\   rƒ   r…   r€   r‡   rŠ   r‰   )rg   ÚtokengroupsÚlowprivcanenrollr   rf   r   Úis_vulnerableó   sP   ÿ€0z%MSADCertificateTemplate.is_vulnerablec                    sz  g }|d u st |ƒdkrjˆ  tˆ jjƒ¡du r| d¡ t‡ fdd„ˆ jD ƒƒdu r/| d¡ t‡ fdd„ˆ jD ƒƒdu rB| d¡ t‡ fd	d„ˆ j	D ƒƒdu rU| d
¡ t‡ fdd„ˆ j
D ƒƒdu rh| d¡ |S t ˆ j t|ƒ¡ƒdkr{| d¡ t ˆ j	 t|ƒ¡ƒdkrŒ| d¡ t ˆ j
 t|ƒ¡ƒdkr�| d¡ t ˆ j t|ƒ¡ƒdkr®| d¡ tˆ jjƒ|v r»| d¡ |S )Nr   TrŒ   c                 3   r�   rS   rŽ   r�   rf   r   r   r‘   4  r’   zFMSADCertificateTemplate.check_dangerous_permissions.<locals>.<genexpr>r“   c                 3   r�   rS   rŽ   r�   rf   r   r   r‘   7  r’   r”   c                 3   r�   rS   rŽ   r�   rf   r   r   r‘   :  r’   r•   c                 3   r�   rS   rŽ   r�   rf   r   r   r‘   =  r’   r–   r—   r˜   r™   rš   z8The current user can control the owner -or is the owner-)r{   rx   rt   rQ   r›   Úappendrœ   rb   r`   r_   ra   r   r\   )rg   r�   Úissuesr   rf   r   Úcheck_dangerous_permissions.  s0   




ñ




z3MSADCertificateTemplate.check_dangerous_permissionsc                 C   sÞ   i }|d u rg }d}t t| jƒ t|ƒ¡ƒdkrd}|r,|  ¡ r,|  ¡ r,| jddœ|d< |r<|  ¡ du r<| jddœ|d< |rJ|  ¡ rJ| jd	dœ|d
< |rX|  ¡ rX| jddœ|d< |  	|¡}t |ƒdkrm|d 
|¡dœ|d< |S )NFr   TzUUsers can enroll, enrollee supplies subject and template allows client authentication)ÚSIDsÚReasonÚESC1z0Users can enroll and template allows any purposeÚESC2z>Users can enroll and template allows certificate request agentÚESC3zAUsers can enroll and template does not require security extensionÚESC9ú, ÚESC4)r{   r\   r]   r   r€   r‡   rz   rŠ   r‹   r¢   Újoin)rg   r�   r[   Úuser_can_enrollÚperm_issuesr   r   r   Úis_vulnerable2R  s8   
þ
þ
þ
þ

þz&MSADCertificateTemplate.is_vulnerable2c                 C   sd  | j d u rd S | j jjD ]£}|jtjkr|jtjkrq|jtjkrZt|jƒt	kr2| j
 t|jƒ¡ n't|jƒtkrC| j t|jƒ¡ ntjt|jƒv rY|jd u rY| j t|jƒ¡ qtjt|jƒv rk| j t|jƒ¡ tjt|jƒv r|| j t|jƒ¡ tjt|jƒv r�| j t|jƒ¡ tjt|jƒv rž| j t|jƒ¡ tjt|jƒv r¯| j t|jƒ¡ qd S rS   )rQ   ÚDaclÚacesÚAceTyper   ÚACCESS_ALLOWED_OBJECT_ACE_TYPEÚACCESS_ALLOWED_ACE_TYPErt   Ú
ObjectTypeÚEX_RIGHT_CERTIFICATE_ENROLLMENTr]   ÚaddÚSidÚ#EX_RIGHT_CERTIFICATE_AUTOENROLLMENTr^   r   ÚCONTROL_ACCESSÚMaskrc   ÚGENERIC_ALLrb   Ú
WRITE_DACLr`   ÚWRITE_OWNERr_   Ú
WRITE_PROPra   )rg   Úacer   r   r   rl   {  s2   
€æz!MSADCertificateTemplate.calc_acesc                 C   s   t | jƒdkS ry   )r{   re   rf   r   r   r   Ú
is_enabledš  s   z"MSADCertificateTemplate.is_enabledc                 C   sP   g }| j D ] }| d¡dkr| dd¡\}}| ||f¡ q| d |f¡ q|S )Nú\éÿÿÿÿr   )re   ÚfindÚsplitr    )rg   ÚresÚesÚhostnameÚservicer   r   r   Úenrollment_servicesž  s   
z+MSADCertificateTemplate.enrollment_servicesc                 C   s*   d}| j D ]}|d|| j | f 7 }q|S )Nú== MSADCertificateTemplate ==
z%s: %s
)Ú__dict__)rg   ÚtÚkr   r   r   Ú__str__ª  s   
zMSADCertificateTemplate.__str__c                    s$  d)‡ fdd„	}d}|dˆ j  7 }|dˆ j 7 }|dˆ j 7 }ˆ jr+|dd	 ˆ j¡ 7 }tˆ jƒd
kr<|dd	 ˆ j¡ 7 }ˆ jd urjtt	ˆ jƒƒ 
dd¡}t|ƒdkr[|d  dd	¡}n	tˆ jƒ dd	¡}|d| 7 }ˆ jd ur˜ttˆ jƒƒ 
dd¡}t|ƒdkr‰|d  dd	¡}n	tˆ jƒ dd	¡}|d| 7 }ˆ jd ur¤|dˆ j 7 }ˆ jd ur¸|dd	 dd„ ˆ jD ƒ¡ 7 }ˆ jd urÌ|dd	 dd„ ˆ jD ƒ¡ 7 }ˆ jd urà|dd	 dd„ ˆ jD ƒ¡ 7 }|d7 }|d7 }tˆ jƒd
krù|d7 }||ˆ jƒ}tˆ jƒd
k�r|d7 }||ˆ jƒ}tˆ jƒd
k�r|d7 }||ˆ jƒ}|d7 }|d 7 }tˆ jjƒ}ˆ jd u�rK|ˆ jv �rK|d!ˆ j| d
 ˆ j| d |f 7 }n|d"| 7 }tˆ jƒd
k�rc|d#7 }||ˆ jƒ}|d$7 }||ˆ jƒ}|d%7 }||ˆ jƒ}|d&7 }||ˆ jƒ}|d'7 }|ˆ j ¡ 7 }|d(7 }|S )*Né   c                    sd   |D ]-}ˆ j d ur%|ˆ j v r%| d|d ˆ j | d ˆ j | d |f 7 } q| d|d |f 7 } q| S )Nz%s%s\%s [%s]
ú r   r   z%s%s
)rd   )ÚbufferÚsidlistÚoffsetrw   rf   r   r   Ú
print_sids²  s
   .z7MSADCertificateTemplate.prettyprint.<locals>.print_sidsrÊ   z
Name: %s
zdistinguishedName: %s
zSchema Version: %s
zEnroll Services: %s
r©   r   zVulnerabilities: %s
Ú.r   r   ú|z!msPKI-Certificate-Name-Flag: %s
zmsPKI-Enrollment-Flag: %s
zmsPKI-RA-Signature: %s
zpKIExtendedKeyUsage: %s
c                 S   ó   g | ]}t  ||¡‘qS r   ©Ú
EKUS_NAMESrj   ©r�   Úoidr   r   r   Ú
<listcomp>Ö  ó    z7MSADCertificateTemplate.prettyprint.<locals>.<listcomp>z*msPKI-Certificate-Application-Policy: %s
c                 S   r×   r   rØ   rÚ   r   r   r   rÜ   Ø  rÝ   z!msPKI-RA-Application-Policy: %s
c                 S   r×   r   rØ   rÚ   r   r   r   rÜ   Ú  rÝ   zPermissions
z  Enrollment Permissions
z    Enrollment Rights
z    AutoEnrollment Rights
z    All Extended Rights
z  Object Control Permissions
z    Owner
z      %s\%s [%s]
z
      %s
z    Full Control
z    Write Owner
z    Write DACL
z    Write Property
z
    SDDL
z
)rÏ   )rH   rG   rV   re   r«   r{   r[   rW   rt   r   rÄ   ÚreplacerX   r   rY   rP   rU   rT   r]   r^   rc   rQ   r›   rd   rb   r_   r`   ra   Úto_sddl)rg   rÔ   rÌ   Úxrw   r   rf   r   Úprettyprint±  sv   





(z#MSADCertificateTemplate.prettyprintc                 C   s   |   ¡ S rS   )rá   rf   r   r   r   rÎ     s   rS   )r   r   r   rh   Ústaticmethodro   rx   r€   rz   rƒ   r…   r‡   r‰   rŠ   r‹   rŸ   r¢   r®   rl   ÚpropertyrÀ   rÉ   rÎ   rá   r   r   r   r   rR   ˜   s0    


;
$)

SrR   )(ÚenumÚwinacl.dtyp.security_descriptorr   Úwinacl.dtyp.acer   r   r   r   rµ   r¸   ÚIntFlagr   r   r8   r|   r~   r}   r�   rˆ   rÙ   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   ÚENROLLMENT_FLAGS_NAMESÚMSADCertificateTemplate_ATTRSrR   r   r   r   r   Ú<module>   sH   ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï2Î3Í4Ã@ÿþýüûúùø	÷
öõôóòñðï