
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
."d.              '   @   s   d Z ddlZddlmZ dZdZdZdZdZdZ	dZ
dZdZe
e e Zeeee	eeed}Zd~d Zdd Zdd Zdd Zdd Zdd 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                                 