
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
."Éd.  ã            '   @   s�   d Z ddlZddlmZ dŠZd‹ZdŒZd�ZdŽZd�Z	d�Z
d‘Zd’Ze
e e Zeeee	eeed}œZd~d„ Zd€d�„ Zd‚dƒ„ Zd„d…„ Zd†d‡„ Zdˆd‰„ ZdS )“z.
Lists of algorithms and globbing among them.
é    Né   )Ú
validationúAES-256-GCMúAES-256-CCMúAES-192-GCMúAES-192-CCMúAES-128-GCMúAES-128-CCMúCHACHA20-POLY1305úCAMELLIA-256-GCMúCAMELLIA-128-GCMúAES-256-CTRúAES-256-CBCúAES-192-CTRúAES-192-CBCúAES-128-CTRúAES-128-CBCúCAMELLIA-256-CBCúCAMELLIA-128-CBCú3DES-CBCúDES-CBCúRC4-40úRC4-128ú	DES40-CBCúRC2-CBCúIDEA-CBCúSEED-CBCÚNULLÚAEADúUMAC-128ú	HMAC-SHA1úHMAC-SHA2-256úHMAC-SHA2-384úHMAC-SHA2-512úUMAC-64úHMAC-MD5úSHA2-256úSHA2-384úSHA2-512úSHA3-256úSHA3-384úSHA3-512úSHA2-224ÚSHA1ÚMD5ÚGOSTÚX25519Ú	SECP256R1Ú	SECP384R1Ú	SECP521R1ÚX448ú
FFDHE-1536ú
FFDHE-2048ú
FFDHE-3072ú
FFDHE-4096ú
FFDHE-6144ú
FFDHE-8192ú
FFDHE-1024úRSA-MD5úRSA-SHA1úDSA-SHA1ú
ECDSA-SHA1úRSA-SHA2-224úDSA-SHA2-224úECDSA-SHA2-224úRSA-SHA2-256úDSA-SHA2-256úECDSA-SHA2-256úECDSA-SHA2-256-FIDOúRSA-SHA2-384úDSA-SHA2-384úECDSA-SHA2-384úRSA-SHA2-512úDSA-SHA2-512úECDSA-SHA2-512úRSA-SHA3-256úDSA-SHA3-256úECDSA-SHA3-256úRSA-SHA3-384úDSA-SHA3-384úECDSA-SHA3-384úRSA-SHA3-512úDSA-SHA3-512úECDSA-SHA3-512úEDDSA-ED25519úEDDSA-ED25519-FIDOúEDDSA-ED448úRSA-PSS-SHA1úRSA-PSS-SHA2-224úRSA-PSS-SHA2-256úRSA-PSS-SHA2-384úRSA-PSS-SHA2-512úRSA-PSS-RSAE-SHA1úRSA-PSS-RSAE-SHA2-224úRSA-PSS-RSAE-SHA2-256úRSA-PSS-RSAE-SHA2-384úRSA-PSS-RSAE-SHA2-512ÚPSKúDHE-PSKú	ECDHE-PSKÚECDHEÚRSAÚDHEúDHE-RSAúDHE-DSSÚEXPORTÚANONÚDHÚECDHúDHE-GSSú	ECDHE-GSSúTLS1.3úTLS1.2úTLS1.1úTLS1.0úSSL3.0úSSL2.0úDTLS1.2úDTLS1.0úDTLS0.9ÚIKEv2ÚIKEv1)ZcipherÚgroupÚhashZkey_exchangeZmacZprotocolZsignc             C   s:   |t krtjj|ƒ‚tjt | | ƒ}|s6tjj| |ƒ‚|S )zÔ
    Lists algorithms matching a glob, in order of appearance in ALL[alg_class].
    For more examples, refer to tests/unit/parsing/test_alg_lists.py
    >>> glob('RC4-*', 'cipher')
    ['RC4-40', 'RC4-128']
    )ÚALLr   Z	alg_listsZAlgorithmClassUnknownErrorÚfnmatchÚfilterZAlgorithmEmptyMatchError)ÚpatternZ	alg_classÚr© rƒ   ú>./usr/share/crypto-policies/python/cryptopolicies/alg_lists.pyÚglobY   s    r…   c                s8   ‡ fdd„| D ƒ}|sdS ‡ fdd„|D ƒ}ˆ t |ƒ S )zO
    >>> earliest_occurrence('test', 'abcdefghijklmnopqrstuvwxyz')
    'e'
    c                s   g | ]}|ˆ kr|‘qS rƒ   rƒ   )Ú.0Ún)Úordered_haystackrƒ   r„   ú
<listcomp>n   s    z'earliest_occurrence.<locals>.<listcomp>Nc             3   s   | ]}ˆ j |ƒV  qd S )N)Úindex)r†   r‡   )rˆ   rƒ   r„   ú	<genexpr>q   s    z&earliest_occurrence.<locals>.<genexpr>)Úmin)Zneedlesrˆ   ÚintersectionÚindicesrƒ   )rˆ   r„   Úearliest_occurrencei   s
    r�   c             C   s   t | tddd… ƒS )z@
    >>> min_tls_version(['SSL3.0', 'TLS1.2'])
    'SSL3.0'
    Nr   éÿÿÿÿ)r�   ÚTLS_PROTOCOLS)Úversionsrƒ   rƒ   r„   Úmin_tls_versionu   s    r“   c             C   s   t | tddd… ƒS )zD
    >>> min_dtls_version(['DTLS1.2', 'DTLS1.0'])
    'DTLS1.0'
    Nr   r�   )r�   ÚDTLS_PROTOCOLS)r’   rƒ   rƒ   r„   Úmin_dtls_version}   s    r•   c             C   s
   t | tƒS )z@
    >>> max_tls_version(['SSL3.0', 'TLS1.2'])
    'TLS1.2'
    )r�   r‘   )r’   rƒ   rƒ   r„   Úmax_tls_version…   s    r–   c             C   s
   t | tƒS )zD
    >>> max_dtls_version(['DTLS1.2', 'DTLS1.0'])
    'DTLS1.2'
    )r�   r”   )r’   rƒ   rƒ   r„   Úmax_dtls_version�   s    r—   )r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r    r!   r"   r#   r$   r%   )
r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   )r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   )'r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   )rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   )rq   rr   rs   rt   ru   rv   )rw   rx   ry   )rz   r{   )Ú__doc__r   Ú r   ZALL_CIPHERSZALL_MACSZ
ALL_HASHESZ
ALL_GROUPSZALL_SIGNZALL_KEY_EXCHANGESr‘   r”   ZIKE_PROTOCOLSZALL_PROTOCOLSr~   r…   r�   r“   r•   r–   r—   rƒ   rƒ   rƒ   r„   Ú<module>   sn                                 