+
    $iG:  c                   s^    ^ RI t ^ RIHtHt ^RIHt RtRt ! R R]4      t ! R R	]4      t	R# )
i    N)CalledProcessErrorcheck_output)ConfigGeneratorz]
[openssl_init]
alg_section = evp_properties

[evp_properties]
rh-allow-sha1-signatures = {}
z2
[fips_sect]
tls1-prf-ems-check = {}
activate = 1
c                   s\  a  ] tR t^t o Rt/ RRbRRbRRbRRbR	R
bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbtR0 ERmRR R!0R"RR0/tR#R$R%R&R'R(R)R*R+R,R-RR.R/R0R1R2R3/	tR4RR5RR6RR#R7R%R8R+R9R-R:R'R;R)R<R.R=R0R>/tR?R@RARB/t	RCRDR0RERF0RGRHRI0/RJRDR0RERK0RGRHRI0/RLRDR0RERK0RGRHRI0/RMRDR 0RERK0RGRHRI0/RNRDR0RERK0RORP0RGRHRI0/RQRDR0RERF0RORR0RGRHRI0//t
RSRTRURVRWRXRYRZRHR[R\R]R^R_R`Ra/t/ RbRcbRdRebRfRgbRhRibRjRkbRlRmbRnRobRpRqbRrRsbRtRubRvRwbRxRybRzR{bR|R}bR~RbRRbRRb/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbCtRRRRRRRRRRRRRRRRRRRRRR/tRRER ERERERERERERERERERERER	ER
ERERERERERERERERERERERERER/t]ER 4       t]ER 4       t]ER 4       t]ER 4       tERtV tER# (  OpenSSLGeneratorZ
opensslcnfzAES-256-CTR zAES-128-CTRzAES-256-GCMz-AES256zAES-128-GCMz-AES128AES-256-CBCz-SHA256AES-128-CBCzCHACHA20-POLY1305z	-CHACHA20SEED-CBCz-SEEDIDEA-CBCz!IDEADES-CBCz!DESzRC4-40z	DES40-CBC3DES-CBCz-3DESzRC4-128z!RC4RC2-CBCz!RC2ZNULLz!eNULL:!aNULLz-CBCz-AESCCMzAES-128-CCMzAES-256-CCMz-AESGCMZRSAZkRSAZECDHEZkEECDHZPSKZkPSKzDHE-PSKZkDHEPSKzDHE-RSAZkEDHzDHE-DSSz	ECDHE-PSKZ	kECDHEPSKzRSA-PSKZkRSAPSKzVKO-GOST-2012ZkGOSTZANONZDHZECDHz-kRSAz-kEECDHz-aRSAz-aDSSz-kPSKz-kDHEPSKz
-kECDHEPSKz-kRSAPSKzHMAC-MD5z!MD5z	HMAC-SHA1z-SHA1ZTLS_AES_256_GCM_SHA384cipherZhashzSHA2-384ZprotocolzTLS1.3zDTLS1.3ZTLS_AES_128_GCM_SHA256zSHA2-256ZTLS_CHACHA20_POLY1305_SHA256ZTLS_AES_128_CCM_SHA256ZTLS_SHA256_SHA256maczHMAC-SHA2-256ZTLS_SHA384_SHA384zHMAC-SHA2-384zSSL3.0ZSSLv3zTLS1.0ZTLSv1zTLS1.1zTLSv1.1zTLS1.2zTLSv1.2zTLSv1.3zDTLS0.9zDTLSv0.9zDTLS1.0ZDTLSv1zDTLS1.2zDTLSv1.2zRSA-SHA1zRSA+SHA1zDSA-SHA1zDSA+SHA1z
ECDSA-SHA1z
ECDSA+SHA1zRSA-SHA2-224z
RSA+SHA224zDSA-SHA2-224z
DSA+SHA224zECDSA-SHA2-224zECDSA+SHA224zRSA-SHA2-256z
RSA+SHA256zDSA-SHA2-256z
DSA+SHA256zECDSA-SHA2-256zECDSA+SHA256zRSA-SHA2-384z
RSA+SHA384zDSA-SHA2-384z
DSA+SHA384zECDSA-SHA2-384zECDSA+SHA384zRSA-SHA2-512z
RSA+SHA512zDSA-SHA2-512z
DSA+SHA512zECDSA-SHA2-512zECDSA+SHA512zRSA-PSS-SHA2-256Zrsa_pss_pss_sha256zRSA-PSS-SHA2-384Zrsa_pss_pss_sha384zRSA-PSS-SHA2-512Zrsa_pss_pss_sha512zRSA-PSS-RSAE-SHA2-256Zrsa_pss_rsae_sha256zRSA-PSS-RSAE-SHA2-384Zrsa_pss_rsae_sha384zRSA-PSS-RSAE-SHA2-512Zrsa_pss_rsae_sha512zEDDSA-ED25519Zed25519zEDDSA-ED448Zed448zECDSA-BRAINPOOLP256-SHA2-256z?ecdsa_brainpoolP256r1_sha256zECDSA-BRAINPOOLP384-SHA2-384z?ecdsa_brainpoolP384r1_sha384zECDSA-BRAINPOOLP512-SHA2-512z?ecdsa_brainpoolP512r1_sha512ZMLDSA44z?mldsa44zP256-MLDSA44z?p256_mldsa44zRSA3072-MLDSA44z?rsa3072_mldsa44zMLDSA44-PSS2048z?mldsa44_pss2048zMLDSA44-RSA2048z?mldsa44_rsa2048zMLDSA44-ED25519z?mldsa44_ed25519zMLDSA44-P256z?mldsa44_p256zMLDSA44-BP256z?mldsa44_bp256ZMLDSA65z?mldsa65zP384-MLDSA65z?p384_mldsa65zMLDSA65-PSS3072z?mldsa65_pss3072zMLDSA65-RSA3072z?mldsa65_rsa3072zMLDSA65-P256z?mldsa65_p256zMLDSA65-BP256z?mldsa65_bp256zMLDSA65-ED25519z?mldsa65_ed25519ZMLDSA87z?mldsa87zP521-MLDSA87z?p521_mldsa87zMLDSA87-P384z?mldsa87_p384zMLDSA87-BP384z?mldsa87_bp384zMLDSA87-ED448z?mldsa87_ed448Z	FALCON512z
?falcon512zP256-FALCON512z?p256_falcon512zRSA3072-FALCON512z?rsa3072_falcon512ZFALCONPADDED512z?falconpadded512zP256-FALCONPADDED512z?p256_falconpadded512zRSA3072-FALCONPADDED512z?rsa3072_falconpadded512Z
FALCON1024z?falcon1024zP521-FALCON1024z?p521_falcon1024ZFALCONPADDED1024z?falconpadded1024zP521-FALCONPADDED1024z?p521_falconpadded1024ZSPHINCSSHA2128FSIMPLEz?sphincssha2128fsimplezP256-SPHINCSSHA2128FSIMPLEz?p256_sphincssha2128fsimplezRSA3072-SPHINCSSHA2128FSIMPLEz?rsa3072_sphincssha2128fsimpleZSPHINCSSHA2128SSIMPLEz?sphincssha2128ssimplezP256-SPHINCSSHA2128SSIMPLEz?p256_sphincssha2128ssimplezRSA3072-SPHINCSSHA2128SSIMPLEz?rsa3072_sphincssha2128ssimpleZSPHINCSSHA2192FSIMPLEz?sphincssha2192fsimplezP384-SPHINCSSHA2192FSIMPLEz?p384_sphincssha2192fsimpleZSPHINCSSHAKE128FSIMPLEz?sphincsshake128fsimplezP256-SPHINCSSHAKE128FSIMPLEz?p256_sphincsshake128fsimplezRSA3072-SPHINCSSHAKE128FSIMPLEz?rsa3072_sphincsshake128fsimpleZMLKEM512z	?mlkem512zP256-MLKEM512z?p256_mlkem512zX25519-MLKEM512z?x25519_mlkem512ZMLKEM768z	?mlkem768zP384-MLKEM768z?p384_mlkem768zX448-MLKEM768z?x448_mlkem768zMLKEM768-X25519z ?X25519MLKEM768:?x25519_mlkem768zP256-MLKEM768z!?SecP256r1MLKEM768:?p256_mlkem768Z	MLKEM1024z
?mlkem1024zP521-MLKEM1024z?p521_mlkem1024zP384-MLKEM1024z#?SecP384r1MLKEM1024:?p384_mlkem1024Z	SECP224R1Z	secp224r1Z	SECP256R1Z	secp256r1Z	SECP384R1Z	secp384r1Z	SECP521R1Z	secp521r1ZX25519ZX448z
FFDHE-2048Z	ffdhe2048z
FFDHE-3072Z	ffdhe3072z
FFDHE-4096Z	ffdhe4096z
FFDHE-6144Z	ffdhe6144z
FFDHE-8192Z	ffdhe8192zBRAINPOOL-P256R1z%brainpoolP256r1:?brainpoolP256r1tls13zBRAINPOOL-P384R1z%brainpoolP384r1:?brainpoolP384r1tls13zBRAINPOOL-P512R1z%brainpoolP512r1:?brainpoolP512r1tls13c                s  a
 R pVP                   pVP                  o
VP                  R,          pVP                  R,          pVR8  g   VR8  d   V P                  VR4      pMTVR8  g   VR8  d   V P                  VR4      pM3VR8  g   VR8  d   V P                  VR4      pMV P                  VR	4      pVR
,           F&  p V P                  W P                  V,          4      pK(  	  S
R
,           F&  p V P                  W P                  V,          4      pK(  	  S
R,           F&  p V P                  W P                  V,          4      pK(  	  V P                  P                  4        FX  w  rx\        ;QJ d    V
3R lV 4       F  '       d   K   RM	  RM! V
3R lV 4       4      '       g   KG  V P                  W'4      pKZ  	  S
R,           F&  p V P                  W P                  V,          4      pK(  	  R F  p	V P                  W)4      pK  	  V#   \
         d     EKd  i ; i  \
         d     EKD  i ; i  \
         d     EK$  i ; i  \
         d     K  i ; i)r   min_dh_sizemin_rsa_sizei  z@SECLEVEL=0   z@SECLEVEL=1i   z@SECLEVEL=2z@SECLEVEL=3Zkey_exchanger   c              3   s:   <"   T F  qSR ,          9   x  K  	  R# 5i)r   N ).0cip   & =/usr/share/crypto-policies/python/policygenerators/openssl.py	<genexpr>Z4OpenSSLGenerator.generate_ciphers.<locals>.<genexpr>  s     8i8$is   FTr   )z-SHA384z	-CAMELLIAz-ARIAz-AESCCM8)enabledZdisabledintegersappendkey_exchange_mapZKeyErrorkey_exchange_not_mapcipher_not_mapcipher_notany_multimapitemsallmac_not_map)clspolicyspr   r   iZkeywordZ	ciphersetr   r   s   &&        @r   generate_ciphersZ!OpenSSLGenerator.generate_ciphers   s   NN__oom4~6!4

1m,A4<$#6

1m,A4<$#6

1m,A

1m,A>""AJJq"6"6q"9: # N##AJJq":":1"=> $ HAJJq"4"4Q"78 
 #&"<"<"B"B"DGs8i8sss8i888JJq* #E EAJJq//!"45  ?A

1 A ? =        sH   "H7"H(*"H;"IH%$H%(H87H8;I
IIIc                s  a	 R pVP                   o	S	R,           F  pV P                  P                  4        UUu/ uF  w  rEVR,          V08X  g   K  WEbK  	  pppVP                  4        Ft  w  rx\        ;QJ d-    V	3R lVP                  4        4       F  '       d   K   RM"	  RM! V	3R lVP                  4        4       4      '       g   Kc  V P	                  W'4      pKv  	  K  	  V# u uppi )r   r   c              3   s   <a"   T FP  w  po\         ;QJ d&    V3R  lSV,           4       F  '       g   K   RM	  RM! V3R  lSV,           4       4      x  KR  	  R# 5i)c              3   s,   <"   T F	  qS9   x  K  	  R # 5i)Nr   )r   Zval	algvaluesr   r   r   ZCOpenSSLGenerator.generate_ciphersuites.<locals>.<genexpr>.<genexpr>5  s     C{)+{s   TFN)Zany)r   Zalgclassr(   r%   s   & @r   r   Z9OpenSSLGenerator.generate_ciphersuites.<locals>.<genexpr>5  sD      L2J.8Y sCq{CsssCq{CCC2Js   AA'AFT)r   ciphersuite_mapr   r    r   )
r"   r#   r$   r   ZnameZspecZcipher_submapZciphersuite_nameZciphersuite_specr%   s
   &&       @r   generate_ciphersuitesZ&OpenSSLGenerator.generate_ciphersuites*  s    NN 8A # 3 3 9 9 ;7 ; -7D $X1# 5 (TZ ;  7 7D6I6I6K2 3 L2B2H2H2JL333 L2B2H2H2JL L L

17A 7L	  7s   C(C(c                s~   VP                  0 Rm4      pVP                  pRV P                  V4       R2pVRV P                  V4       R2,          pVP                  '       d2   VR,          pVRV P
                  VP                  ,           R2,          pVP                  '       d2   VR,          pVRV P
                  VP                  ,           R2,          pVP                  '       d2   VR,          pVRV P
                  VP                  ,           R2,          pVP                  '       d2   VR,          pVRV P
                  VP                  ,           R2,          pVR	,           Uu. uF(  qUV P                  9   g   K  V P                  V,          NK*  	  ppVR
RP                  V4      ,           R,           ,          pVR,           Uu. uF(  pWPP                  9   g   K  V P                  V,          NK*  	  ppVR,           Uu. uF(  pWPP                  9   g   K  V P                  V,          NK*  	  ppV'       d   RRP                  V4      ,           .M. V'       d   RRP                  V4      ,           .M. ,           p	VRRP                  V	4      ,           R,           ,          pVP                  R,          R8X  d
   VR,          p\        VP                  R,          R4      p
VRV
 R2,          pVP                  R,          '       * pT\         P#                  V'       d   RMR4      ,          pV# u upi u upi u upi )tlszCipherString = Z
zCiphersuites = zTLS.MinProtocol =Z zTLS.MaxProtocol =zDTLS.MinProtocol =zDTLS.MaxProtocol =ZsignzSignatureAlgorithms = Z:ZgroupZ*z	Groups = Z/__emsRELAXzOptions = RHNoEnforceEMSinFIPS
r   r   z
[req]
default_bits = Z__openssl_block_sha1_signaturesZyesZno   Zsslr+   openssl)scopedr   r'   r*   Zmin_tls_versionprotocol_mapZmax_tls_versionZmin_dtls_versionZmax_dtls_versionsign_mapZjoingroup_pq_mapgroup_classic_mapenumsZmaxr   RH_SHA1_SECTIONformat)r"   unscoped_policyr#   r%   r$   r&   Zsig_algsZ	groups_pqZgroups_classicZgroup_classesZdefault_rsa_sizeZsha1_sigs   &&          r   generate_configZ OpenSSLGenerator.generate_config:  s    ''(ABNNc226:;2>	s88@ADD!!!$$A1S%%f&<&<=>bAAA!!!$$A1S%%f&<&<=>bAAA"""%%A1S%%f&=&=>?rBBA"""%%A1S%%f&=&=>?rBBA-.vYLYs||:KOCLLOOYL	%(::TAA 34G* /*Q--- )S%%a((*	 /<=gJ 9Jq"7"77 3#//22J 9 -6cCHHY''(23Achh~../rK 	 	
[388M22T99<< G+33A v~>E	'(8'9<<
 'HII	_##XE4@@A M/9s$   (L0?L0	L5 L5L:L:c                s\   R p\         P                  ! RV\         P                  4      w  p \        RRV.4      pRT9   d(   T P                  R	4       T P                  RT 24       R# R#   \         d*    T P                  R4       T P                  RT 24        R# \         d     R# i ; i)
    z^CipherString = (.*)$r/   ciphersz-There is an error in openssl generated policyzPolicy:
FTs   ADHz(There is ADH in openssl generated policy)reZfindallZ	MULTILINEr   r    ZeprintZOSError)r"   configZoutputr;   s   &&  r   test_configZOpenSSLGenerator.test_configq  s    ::6M		!9#,g#7 8F VJJABJJ6(+, " 	JJFGJJ6(+, 		s   A* *0B+B+&B+*B+r   N>	   r	   r   r
   r   r   r   r   zCAMELLIA-128-CBCzCAMELLIA-256-CBC)__name__
__module____qualname____firstlineno__CONFIG_NAMEr   r   r   r   r!   r)   r1   r2   r3   r4   classmethodr'   r*   r9   r>   __static_attributes____classdictcell__Z__classdict__   @r   r   r      sj    Krr 	y 	y	
 	y 	r 	[ 	G 	G 	6 	" 	R 	G 	6 	6  	!N, 	 E 	M=1M=1	 	vv962[9
 	bw77w:\: 	FWK 	!}oZL9-#

 	!}oZL9-#

 	'*+ZL9-)

 	!}oZL9-#
 	vhZLO$9-	
 	vhZLO$9-	
C'OV 	''))):8:	LFJFJF 	lF 		F
 	F 	.F 	F 	F 	.F 	F 	F 	.F 	F 	F 	.F  	0!F" 	0#F$ 	0%F& 	 !6'F( 	 !6)F* 	 !6+F, 	-F. 	w/F2 	'(G3F4 	'(G5F6 	'(G7F: 	:;F< 	=F> 	-?F@ 	-AFB 	-CFD 	-EFF 	GFH 	)IFJ 	:KFL 	MFN 	-OFP 	-QFR 	SFT 	)UFV 	-WFX 	:YFZ 	[F\ 	]F^ 	)_F` 	)aFb 	\cFd 	+eFf 	1gFh 	-iFj 	 7kFl 	"#=mFn 	moFp 	-qFr 	/sFt 	 !9uFv 	 !9wFx 	%&CyFz 	()I{F| 	 !9}F~ 	%&CF@ 	()IAFB 	 !9CFD 	%&CEFF 	!";GFH 	&'EIFJ 	)*KKFHT 	K)-K))=<\+?L  	[[[[(kkkkkCCC" 1 1f   4 4l   r:   r   c                   sD   a  ] tR tRt o Rt]R 4       t]R 4       tRtV t	R# )OpenSSLFIPSGeneratori  Zopenssl_fipsc                s    VP                  0 Rm4      p\        P                  \        VP                  R,          R8g  4      4      # )r+   r,   r-   r.   )r0   FIPS_MODULE_CONFIGr7   Zintr5   )r"   r8   r#   s   && r   r9   Z$OpenSSLFIPSGenerator.generate_config  s9     ''(AB "((V\\'-Bg-M)NOOr:   c                s    R # )Tr   )r"   r=   s   &&r   r>   Z OpenSSLFIPSGenerator.test_config  s    r:   r   N)
r?   r@   rA   rB   rC   rD   r9   r>   rE   rF   rG   rH   r   rI   rI     s2      KP P  r:   rI   )
r<   Z
subprocessr    r   Zconfiggeneratorr   r6   rJ   r   rI   r   r:   r   <module>rK      s:    
 7 , j jZ? r:   