a
    ifG"                     @   s0   d dl mZ G dd deZG dd deZdS )   )ConfigGeneratorc                   @   s8  e Zd ZdZh dZddddddd	d
ddddddZdddddddddddddddddddddddZdddZdd d!d"dd#d$d%d&d'dddd(d)Z	d*d+d,d-d.d/d0d1d2d3d4d5d6d7Z
g d8Zd9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPZdQdRdSdTdUdVddWZddXdYdZd[d\d]Zed^d_ Zed`da ZdbS )cJavaGeneratorjava   ZsslZtlszjava-tlsMD2MD5SHA1ZSHA224ZSHA256ZSHA384ZSHA512ZSHA3_256ZSHA3_384ZSHA3_512 )r   r   r   zSHA2-224zSHA2-256zSHA2-384zSHA2-512zSHA3-256zSHA3-384zSHA3-512z	SHAKE-128z	SHAKE-256ZGOSTR94zChaCha20-Poly1305ZAES_256_CBCZAES_128_CBCZAES_256_GCMZAES_128_GCMZAES_256_CCMZAES_128_CCMZRC4_128ZRC4_40ZRC2ZDES_CBCZ	DES40_CBCZ3DES_EDE_CBCz
anon, NULL)zAES-256-CTRzAES-128-CTRzCHACHA20-POLY1305zCAMELLIA-256-GCMzCAMELLIA-128-GCMzCAMELLIA-256-CBCzCAMELLIA-128-CBCzAES-256-CBCzAES-128-CBCzAES-256-GCMzAES-128-GCMzAES-256-CCMzAES-128-CCMRC4-128zRC4-40zRC2-CBCzDES-CBCz	DES40-CBC3DES-CBCzSEED-CBCzIDEA-CBCZNULL)r
   r   , )Z
RSA_EXPORTZDHE_DSS_EXPORTZDHE_RSA_EXPORTZDH_DSS_EXPORTZDH_RSA_EXPORTzDH_RSA, DH_DSSzDH_anon, ECDH_anon)ZTLS_RSA_WITH_AES_256_CBC_SHA256ZTLS_RSA_WITH_AES_256_CBC_SHAZTLS_RSA_WITH_AES_128_CBC_SHA256ZTLS_RSA_WITH_AES_128_CBC_SHAZTLS_RSA_WITH_AES_256_GCM_SHA384ZTLS_RSA_WITH_AES_128_GCM_SHA256ZDHE_RSAZDHE_DSSECDHEECDHZRSAPSK)ZEXPORTDHZANONRSAzDHE-RSAzDHE-DSSr   r   ZPSKzDHE-PSKz	ECDHE-PSKzRSA-PSKZx25519Z	secp256r1Z	secp384r1Z	secp521r1Zx448Z	ffdhe2048Z	ffdhe3072Z	ffdhe4096Z	ffdhe6144Z	ffdhe8192ZbrainpoolP256r1ZbrainpoolP384r1ZbrainpoolP512r1)ZX25519Z	SECP256R1Z	SECP384R1Z	SECP521R1ZX448z
FFDHE-2048z
FFDHE-3072z
FFDHE-4096z
FFDHE-6144z
FFDHE-8192zBRAINPOOL-P256R1zBRAINPOOL-P384R1zBRAINPOOL-P512R1),Z	secp112r1Z	secp112r2Z	secp128r1Z	secp128r2Z	secp160k1Z	secp160r1Z	secp160r2Z	secp192k1Z	secp192r1Z	secp224k1Z	secp224r1Z	secp256k1Z	sect113r1Z	sect113r2Z	sect131r1Z	sect131r2Z	sect163k1Z	sect163r1Z	sect163r2Z	sect193r1Z	sect193r2Z	sect233k1Z	sect233r1Z	sect239k1Z	sect283k1Z	sect283r1Z	sect409k1Z	sect409r1Z	sect571k1Z	sect571r1Z
c2tnb191v1Z
c2tnb191v2Z
c2tnb191v3Z
c2tnb239v1Z
c2tnb239v2Z
c2tnb239v3Z
c2tnb359v1Z
c2tnb431r1Z
prime192v2Z
prime192v3Z
prime239v1Z
prime239v2Z
prime239v3ZbrainpoolP320r1Z
MD5withRSAZSHA1withRSAZSHA1withDSAZSHA1withECDSAZSHA224withRSAZSHA224withDSAZSHA224withECDSAZSHA256withRSAZSHA256withDSAZSHA256withECDSAZSHA384withRSAZSHA384withDSAZSHA384withECDSAZSHA512withRSAZSHA512withDSAZSHA512withECDSAZEd25519ZEd448ZSHA1withRSAandMGF1ZSHA224withRSAandMGF1ZSHA256withRSAandMGF1ZSHA384withRSAandMGF1ZSHA512withRSAandMGF1)z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RSA-SHA2-384zDSA-SHA2-384zECDSA-SHA2-384zRSA-SHA2-512zDSA-SHA2-512zECDSA-SHA2-512zEDDSA-ED25519zEDDSA-ED448zRSA-PSS-SHA1zRSA-PSS-SHA2-224zRSA-PSS-SHA2-256zRSA-PSS-SHA2-384zRSA-PSS-SHA2-512ZSSLv2ZSSLv3ZTLSv1zTLSv1.1zTLSv1.2zDTLSv1.0)zSSL2.0zSSL3.0zTLS1.0zTLS1.1zTLS1.2zDTLS1.0zDTLS1.2ZHmacMD5ZHmacSHA1Z
HmacSHA256Z
HmacSHA384Z
HmacSHA512)ZAEADzHMAC-MD5z	HMAC-SHA1zHMAC-SHA2-256zHMAC-SHA2-384zHMAC-SHA2-512c              	   C   s  |j }|j}d}g d}|d D ],}z|| j|  W q  tyJ   Y q 0 q dd }||d|jd  ||d|jd	  ||d
|jd  ||d|jd  dd| }|d D ]0}z| || j| |}W q ty   Y q0 q|dd| 7 }| |d|}|d D ]4}z| || j| |}W n tyR   Y n0 q"|d D ]4}z| || j	| |}W n ty   Y n0 q`|d D ]4}z| || j
| |}W n ty   Y n0 q|d D ]4}z| || j| |}W n ty   Y n0 q|d7 }d}	|d D ]4}z| |	| j| |}	W n tyV   Y n0 q&| jD ]}
| |	|
|}	qb|d|	 d7 }d}	|d D ]4}z| |	| j| |}	W n ty   Y n0 q|d|	 d7 }|S )Nr   )r   Z
MD5withDSAZMD5withECDSARIPEMD160withRSAZRIPEMD160withECDSAZRIPEMD160withRSAandMGF1signc                 S   s   |r|  d| S | S )Nz keySize <  )keywordsizer   r   :/usr/share/crypto-policies/python/policygenerators/java.pykeysize   s    z.JavaGenerator.generate_config.<locals>.keysizer   Zmin_rsa_sizeZDSAZmin_dsa_sizer   min_dh_sizeZECZmin_ec_sizez jdk.certpath.disabledAlgorithms=hashz
jdk.tls.disabledAlgorithms=z include jdk.disabled.namedCurvesZprotocolZkey_exchangeZcipherZmac
r	   groupzjdk.disabled.namedCurves=zjdk.tls.legacyAlgorithms=)enabledZdisabledappendsign_not_mapKeyErrorintegersjoinhash_not_mapprotocol_not_mapkey_exchange_not_mapcipher_not_mapmac_not_mapgroup_not_mapgroup_always_disabledcipher_legacy_map)clspolicypZipsepZsharedir   cfgsgr   r   r   generate_config   sx    






zJavaGenerator.generate_configc                 C   s   dS NTr   r)   Zconfigr   r   r   test_config  s    zJavaGenerator.test_configN)__name__
__module____qualname__CONFIG_NAMESCOPESr!   r$   r(   r    r#   r&   r'   r   r"   r%   classmethodr1   r4   r   r   r   r   r   	   s   	
Tr   c                   @   s6   e Zd ZdZh dZejZedd Z	edd Z
dS )JavaSystemGeneratorZ
javasystemr   c              	   C   sv   |j }d}d}|d|jd  d7 }d}|d D ]0}z| || j| |}W q0 ty^   Y q00 q0|d| d7 }|S )Nr   r	   zjdk.tls.ephemeralDHKeySize=r   r   r   zjdk.tls.namedGroups=)r   r   r   	group_mapr   )r)   r*   r+   r,   r.   r/   r-   r   r   r   r1     s    z#JavaSystemGenerator.generate_configc                 C   s   dS r2   r   r3   r   r   r   r4      s    zJavaSystemGenerator.test_configN)r5   r6   r7   r8   r9   r   r&   r<   r:   r1   r4   r   r   r   r   r;     s   
r;   N)Zconfiggeneratorr   r   r;   r   r   r   r   <module>   s      