+
    $i  c                   s   R t ^ RIt^ RIt^RIHt RLtRMtRNtROt. RPO]O5t	RQt
. RNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>N]
O5tRRtRStRTtRUt]],           ],           tR?]R@]	RA]RB]RC]RD]RE]/tR@]RE]
/tRF tRG tRH tRI tRJ tRK tR# )Vz,Lists of algorithms and globbing among them.N)
validationZMLDSA44ZMLDSA65ZMLDSA87zMLDSA65-ED25519zMLDSA87-ED448zRSA-MD5zRSA-SHA1zDSA-SHA1z
ECDSA-SHA1zRSA-SHA2-224zDSA-SHA2-224zECDSA-SHA2-224zRSA-SHA2-256zDSA-SHA2-256zECDSA-SHA2-256zECDSA-SHA2-256-FIDOzRSA-SHA2-384zDSA-SHA2-384zECDSA-SHA2-384zRSA-SHA2-512zDSA-SHA2-512zECDSA-SHA2-512zRSA-SHA3-224zDSA-SHA3-224zECDSA-SHA3-224zRSA-SHA3-256zDSA-SHA3-256zECDSA-SHA3-256zRSA-SHA3-384zDSA-SHA3-384zECDSA-SHA3-384zRSA-SHA3-512zDSA-SHA3-512zECDSA-SHA3-512zEDDSA-ED25519zEDDSA-ED25519-FIDOzEDDSA-ED448zRSA-PSS-SHA1zRSA-PSS-SHA2-224zRSA-PSS-SHA2-256zRSA-PSS-SHA2-384zRSA-PSS-SHA2-512zRSA-PSS-RSAE-SHA1zRSA-PSS-RSAE-SHA2-224zRSA-PSS-RSAE-SHA2-256zRSA-PSS-RSAE-SHA2-384zRSA-PSS-RSAE-SHA2-512zRSA-PSS-SHA3-224zRSA-PSS-SHA3-256zRSA-PSS-SHA3-384zRSA-PSS-SHA3-512zRSA-PSS-RSAE-SHA3-256zRSA-PSS-RSAE-SHA3-384zRSA-PSS-RSAE-SHA3-512zECDSA-BRAINPOOLP256-SHA2-256zECDSA-BRAINPOOLP384-SHA2-384zECDSA-BRAINPOOLP512-SHA2-512zGOSTR341012-512zGOSTR341012-256ZGOSTR341001ZcipherZgroupZhashZkey_exchangeZmacZprotocolZsignc                s   V\         9  d    \        P                  P                  V4      h\        P
                  ! \         V,          V 4      pV\        9   d`   V Uu. uF  q3\        V,          9   g   K  VNK  	  ppV'       d4   \        P                  ! \        P                  P                  W4      4       V'       g    \        P                  P                  W4      hV# u upi )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fnmatchZfilterEXPERIMENTALwarningsZwarnZExperimentalValueWarningZAlgorithmEmptyMatchError)ZpatternZ	alg_classZrZvZexperimental_valuess   &&   =/usr/share/crypto-policies/python/cryptopolicies/alg_lists.pyglobr      s     ""==iHHs9~w/AL *+L!QL4K/Kqq!LMM*..GG  "";;GOOH Ms   C 4C c                s   a V  Uu. uF  q"S9   g   K  VNK  	  ppV'       g   R# V3R lV 4       pS\        V4      ,          # u upi )zC
>>> earliest_occurrence('test', 'abcdefghijklmnopqrstuvwxyz')
'e'
Nc              3   sF   <"   T F  pSP                  V4      x  K  	  R # 5i)N)Zindex)Z.0nordered_haystacks   & r   Z	<genexpr>Z&earliest_occurrence.<locals>.<genexpr>   s      ?,Q%%a((,s   !)Zmin)Zneedlesr   r   ZintersectionZindicess   &f   r   earliest_occurrencer	      sF    
  '@w!/?*?AAwL@?,?GCL))	 As
   AAc                6    \        V \        RRR1,          4      # )z4
>>> min_tls_version(['SSL3.0', 'TLS1.2'])
'SSL3.0'
Nr	   TLS_PROTOCOLSZversions   &r   min_tls_versionr      s    
 xtt)<==    c                r
   )z8
>>> min_dtls_version(['DTLS1.2', 'DTLS1.0'])
'DTLS1.0'
Nr   r	   DTLS_PROTOCOLSr   r   r   min_dtls_versionr      s    
 x")=>>r   c                "    \        V \        4      # )z4
>>> max_tls_version(['SSL3.0', 'TLS1.2'])
'TLS1.2'
r   r   r   r   max_tls_versionr      s    
 x77r   c                r   )z8
>>> max_dtls_version(['DTLS1.2', 'DTLS1.0'])
'DTLS1.2'
r   r   r   r   max_dtls_versionr      s    
 x88r   )1zAES-256-GCMzAES-256-CCMzAES-192-GCMzAES-192-CCMzAES-128-GCMzAES-128-CCMzCHACHA20-POLY1305zCAMELLIA-256-GCMzCAMELLIA-128-GCMzAES-256-CTRzAES-256-CBCzAES-192-CTRzAES-192-CBCzAES-128-CTRzAES-128-CBCzAES-256-OCBzAES-256-EAXzAES-192-OCBzAES-192-EAXzAES-128-OCBzAES-128-EAXzCAMELLIA-256-CBCzCAMELLIA-192-CBCzCAMELLIA-128-CBCz3DES-CBCzDES-CBCzRC4-40zRC4-128z	DES40-CBCzRC2-CBCzIDEA-CBCzSEED-CBCzAES-256-CFBzAES-192-CFBzAES-128-CFBzCAMELLIA-256-CFBzCAMELLIA-192-CFBzCAMELLIA-128-CFBz3DES-CFBzIDEA-CFBzGOST28147-TC26Z-CFBzGOST28147-CPA-CFBzGOST28147-CPB-CFBzGOST28147-CPC-CFBzGOST28147-CPD-CFBzGOST28147-TC26Z-CNTzMAGMA-CTR-ACPKMzKUZNYECHIK-CTR-ACPKMZNULL)ZAEADzUMAC-128z	HMAC-SHA1zHMAC-SHA2-256zHMAC-SHA2-384zHMAC-SHA2-512zUMAC-64zHMAC-MD5zHMAC-STREEBOG-256zHMAC-STREEBOG-512zGOST28147-CPA-IMITzGOST28147-TC26Z-IMITz
MAGMA-OMACzKUZNYECHIK-OMACzMAGMA-OMAC-ACPKMzKUZNYECHIK-OMAC-ACPKM)zSHA2-256zSHA2-384zSHA2-512zSHA3-256zSHA3-384zSHA3-512zSHA2-224zSHA3-224z	SHAKE-256z	SHAKE-128ZSHA1ZMD5zSTREEBOG-256zSTREEBOG-512ZGOSTR94)ZMLKEM512zX25519-MLKEM512ZMLKEM768zX448-MLKEM768zP256-MLKEM512Z	MLKEM1024zP384-MLKEM768zP521-MLKEM1024)zMLKEM768-X25519zP256-MLKEM768zP384-MLKEM1024zMLKEM1024-X448ZX25519Z	SECP256R1Z	SECP384R1Z	SECP521R1ZX448z
FFDHE-1536z
FFDHE-2048z
FFDHE-3072z
FFDHE-4096z
FFDHE-6144z
FFDHE-8192z
FFDHE-1024zGOST-GC256AzGOST-GC256BzGOST-GC256CzGOST-GC256DzGOST-GC512AzGOST-GC512BzGOST-GC512CzBRAINPOOL-P256R1zBRAINPOOL-P384R1zBRAINPOOL-P512R1)$zP256-MLDSA44zRSA3072-MLDSA44zMLDSA44-PSS2048zMLDSA44-RSA2048zMLDSA44-ED25519zMLDSA44-P256zMLDSA44-BP256zP384-MLDSA65zMLDSA65-PSS3072zMLDSA65-RSA3072zMLDSA65-P256zMLDSA65-BP256zP521-MLDSA87zMLDSA87-P384zMLDSA87-BP384Z	FALCON512zP256-FALCON512zRSA3072-FALCON512ZFALCONPADDED512zP256-FALCONPADDED512zRSA3072-FALCONPADDED512Z
FALCON1024zP521-FALCON1024ZFALCONPADDED1024zP521-FALCONPADDED1024ZSPHINCSSHA2128FSIMPLEzP256-SPHINCSSHA2128FSIMPLEzRSA3072-SPHINCSSHA2128FSIMPLEZSPHINCSSHA2128SSIMPLEzP256-SPHINCSSHA2128SSIMPLEzRSA3072-SPHINCSSHA2128SSIMPLEZSPHINCSSHA2192FSIMPLEzP384-SPHINCSSHA2192FSIMPLEZSPHINCSSHAKE128FSIMPLEzP256-SPHINCSSHAKE128FSIMPLEzRSA3072-SPHINCSSHAKE128FSIMPLE)ZPSKzDHE-PSKz	ECDHE-PSKzRSA-PSKZECDHEZRSAZDHEzDHE-RSAzDHE-DSSZEXPORTZANONZDHZECDHzVKO-GOST-2001zVKO-GOST-2012zVKO-GOST-KDFzDHE-GSSz	ECDHE-GSSzKEM-ECDHZSNTRUP)zTLS1.3zTLS1.2zTLS1.1zTLS1.0zSSL3.0zSSL2.0)zDTLS1.2zDTLS1.0zDTLS0.9)ZIKEv2ZIKEv1)Z__doc__r   r   Z r    ZALL_CIPHERSZALL_MACSZ
ALL_HASHESZEXPERIMENTAL_GROUPSZ
ALL_GROUPSZEXPERIMENTAL_SIGNZALL_SIGNZALL_KEY_EXCHANGESr   r   ZIKE_PROTOCOLSZALL_PROTOCOLSr   r   r   r	   r   r   r   r   ) r   r   <module>r      s*   3   2
 	 	
 .#%68G%'3  # %5 	 #	 %5	
   # %5  # %5  # %5  # %5  # %5  # %5  * ,9  ' );  + -@  5  !  5!" #" +#$ %$ +%& '& 5'( )* #+, #-. #/0 10 )10 +812 38  M2".> kZ
J%	8
H  
0	*>?89r   