+
    $i!  c                   s    ^ RI t ^ RIt^ RIHt  ^ RIt]P                  t^RIHt  ! R R]4      t ! R R]4      tR#   ] d    ^ RIt]P                  P                  t LAi ; i)    N)mkstemp)ConfigGeneratorc                   s@  a  ] tR t^t o RtRRRRRRRR	R
RRRRRRRRR/	tRRRRRRRRRRRRRRR RR!R"R#R$R%R&/tR'R(R)R*R+R,R-R.R/R.R0R1R2R3R4R5/tR6R7R8R7R9R:R;R<R=R>/tRRt	R?R@RA0RBRCRD0RERFRG0/t
RHRSRIRTRJRURKRV/t]RL 4       t]RM 4       t]RN 4       t]RWRO l4       t]RP 4       tRQtV tR# )XSequoiaGeneratorsequoiaZmd5ZMD5Zsha1ZSHA1Z	ripemd160NZsha224zSHA2-224Zsha256zSHA2-256Zsha384zSHA2-384Zsha512zSHA2-512sha3-256zSHA3-256sha3-512zSHA3-512ZideazIDEA-CFBZ	tripledesz3DES-CFBZcast5ZblowfishZaes128zAES-128-CFBZaes192zAES-192-CFBZaes256zAES-256-CFBZtwofishZcamellia128zCAMELLIA-128-CFBZcamellia192zCAMELLIA-192-CFBZcamellia256zCAMELLIA-256-CFBZnistp256Z	SECP256R1Znistp384Z	SECP384R1Znistp521Z	SECP521R1Zcv25519ZX25519x25519x448ZX448mlkem768-x25519zMLKEM768-X25519mlkem1024-x448zMLKEM1024-X448ed25519zEDDSA-ED25519eddsaed448zEDDSA-ED448mldsa65-ed25519zMLDSA65-ED25519mldsa87-ed448zMLDSA87-ED448ZeaxzAES-256-EAXzAES-128-EAXZocbzAES-256-OCBzAES-128-OCBgcmzAES-256-GCMzAES-128-GCMhashgroupsignaeadc                s    V UUu. uF&  q P                   P                  V. 4       F  q3NK  	  K(  	  pppV'       d   R P                  R V 4       4      pRV R2# R# u uppi )z, c              3   s.   "   T F  pR V R 2x  K  	  R# 5i)Z"N ).0v   & =/usr/share/crypto-policies/python/policygenerators/sequoia.py	<genexpr>Z<SequoiaGenerator._generate_ignore_invalid.<locals>.<genexpr>j   s     8A1#Qxs   zignore_invalid = [ z ]
 )ignore_invalidZgetjoin)clsZkindsZkr   Zvaluess   &*   r   _generate_ignore_invalidZ)SequoiaGenerator._generate_ignore_invalidf   s_    "JU,>,>,B,B1b,Iq!,I!UJYY888F(55	 Ks   ,Ac                sD    V P                  VP                  R 04      4      # )r   _generate_configZscopedr   Zunscoped_policy   &&r   generate_configZ SequoiaGenerator.generate_confign   s     ##O$:$:I;$GHH    c                sh   VP                   pR pW0P                  R4      ,          pV P                  P                  4        F2  w  rEWRR,          9   d   RMRpW4 RV R2,          pW4 RV R2,          pK4  	  VR,          pVR,          pW0P                  R	4      ,          pV P                  P                  4        F$  w  rEWRR	,          9   d   RMRpW4 R
V R2,          pK&  	  VR,          pVR,          pW0P                  RR4      ,          p\
        ;QJ d#    R VR,           4       F  '       g   K   RM	  RM! R VR,           4       4      p\
        ;QJ d#    R VR,           4       F  '       g   K   RM	  RM! R VR,           4       4      pVP                  R,          p	R F%  p
W8  d   V'       d   RMRpVRV
 R
V R2,          pK'  	  VP                  R,          pR F%  p
W8  d   V'       d   RMRpVRV
 R
V R2,          pK'  	  V P                  P                  4        F$  w  rWR,          9   d   RMRpW< R
V R2,          pK&  	  V P                  P                  4        F$  w  rWR,          9   d   RMRpW< R
V R2,          pK&  	  V P                   F  pW< R2,          pK  	  VR,          pVR,          pVR,          pW0P                  R4      ,          pV P                  P                  4        F5  w  rVP                  VR	,          4      '       d   RMRpW< R
V R2,          pK7  	  V# )z[hash_algorithms]
r   ZalwaysZneverz.collision_resistance = "z"
z.second_preimage_resistance = "zdefault_disposition = "never"

z[symmetric_algorithms]
Zcipherz = "z[asymmetric_algorithms]
r   r   c              3   B   "   T F  qP                  R 4      x  K  	  R# 5i)zRSA-NZ
startswithr   Zsr   r   r   4SequoiaGenerator._generate_config.<locals>.<genexpr>        >Iqll6**I   TFc              3   r&   )zDSA-Nr'   r(   r   r   r   r)      r*   r+   Zmin_rsa_sizeZrsaZmin_dsa_sizeZdsaz = "never"
zdefault_disposition = "never"
z
[aead_algorithms]
r   )i   i   i   i   )Zenabledr   hash_backwards_mapZitemssymmetric_backwards_mapZanyZintegersasymmetric_group_backwards_mapasymmetric_sign_backwards_mapasymmetric_always_disabledaead_backwards_mapZintersection)r   ZpolicyZpZcfgZseqoia_nameZc_p_namer   Zany_rsaZany_dsaZmin_rsalZmin_dsaZseq_namer   r   Z	c_p_namess   &&              r   r!   Z!SequoiaGenerator._generate_configr   s   NN#++F33%(%;%;%A%A%C!K$&	1wA]";A3cBBC]"A!CHHC &D 	22))++H55%(%@%@%F%F%H!K$(3A]$qc--C &I 	22**++GV<<#>AfI>###>AfI>>#>AfI>###>AfI>>//.1'ALW'AS4s#&&C ( //.1'ALW'AS4s#&&C (  #AAGGIOH!wZ/WAZtA3c**C  J "??EEGNH fI-7AZtA3c**C H 66HZ|,,C 700 	&&00++F33#&#9#9#?#?#AH%221X;??WAZtA3c**C $B 
r%   c                s   R pV'       d2   RP                  R VP                  R4       4       4      pW&8w  d   TpRp\        4       w  rx \        P                  ! VR4      ;_uu_ 4       p	V	P                  V4       RRR4       \        P                  ! W.RR\        P                  \        P                  R7      p
T P                  V R	V
P                   R
V 2V
P                  '       d   RV
P                   R2MR,           4       V
P                  V
P                  3R8X  d    \        P                  ! V4       R# V P                  RV 24       \        P                  ! V4       R#   + '       g   i     L; i  \         dM    T'       d.   T P                  T R24        \        P                  ! T4       R# T P                  T R24        Li ; i  \        P                  ! T4       i ; i)zthe generated sequoia policyZ
c              3   sX   "   T F   pVP                  R 4      '       d   K  Vx  K"  	  R# 5i)zignore_invalid = Nr'   )r   r2   r   r   r   Z0SequoiaGenerator._lint_config.<locals>.<genexpr>   s&      (-a||$78 -s   *
*za tightened sequoia policyZwNFzutf-8)ZcheckZencodingstdoutZstderrz	 returns z for z: `Z`r   TzThere is an error in z not found, skipping...z not found!)r    r   )r   splitr   osZfdopenZwrite
subprocessZrunZPIPEZSTDOUTeprintZ
returncoder3   ZunlinkZFileNotFoundError)r   linterconfigstricterlinter_missing_okZpolicy_descrZstricter_configZfdZpathZfZrs   &&&&&      r   _lint_configZSequoiaGenerator._lint_config   s    6"ii (!<<-( O ((;9	2s##q $~UW&0oo&0&7&79A JJ&1<<.l^L/0xxxCz+RA Bahh'72 IIdO JJ.|n=> IIdO# $# ! 	/ 

fX%<=> IIdO JJ&-.		/ IIdOsU   	E; (E(:B)E; <E; (E8	3E; ;GG"G ;GG GG G-c                s   \         P                  ! V4        \         P                  ! V4       V P                  R 4       \
        P                  ! R4      R8X  d   R	# \
        P                  ! R
4      p\
        P                  ! R4      pTf   Tf   T P                  RTR	R	R7      # TP                  4        F  pT P                  YQRR7      '       d   K   R# 	  TP                  4        F  pT P                  YQR	R7      '       d   K   R# 	  R	#   \         dQ   pT P                  R4       T P                  R\	        T4       RT 24       T P                  RT 24        Rp?R# Rp?ii ; i)z*the generated sequoia policy is valid TOMLz3There is a syntax error in generated sequoia policyzInvalid TOML: Z zPolicy:
NFZOLD_SEQUOIAZ1TZ!SEQUOIA_POLICY_CONFIG_CHECK_LOOSEZ"SEQUOIA_POLICY_CONFIG_CHECK_STRICTzsequoia-policy-config-check)r:   r;   )r:   )	tomlZloadsr7   
toml_errorZtyper5   Zgetenvr<   r4   )r   r9   ZexZlooseZstrictr8   s   &&    r   test_configZSequoiaGenerator.test_config   s:    	

6	JJvJJCD 99]#s*		=>?@=V^##$A6-1T $ K KkkmF##FU#CC $ llnF##FT#BB % )  	JJLMJJRz2$78JJ6(+,		s   'D E(AE##E(r   )Zelgamal1024Zelgamal2048Zelgamal3072Zelgamal4096Zbrainpoolp256Zbrainpoolp512)r   r   )r   r   r	   r
   )r   r   r   r   r   )r   )FF)__name__
__module____qualname____firstlineno__CONFIG_NAMEr,   r-   r.   r/   r0   r1   r   classmethodr   r$   r!   r<   r?   __static_attributes____classdictcell__Z__classdict__   @r   r   r      s     K 	uT****JJ
 	
ZD---4)))  	KKK8(,*	&" 	?,%!" 	}-}-}- 	(H 5N   I I 4 4l  @  r%   r   c                   s4   a  ] tR t^t o Rt]R 4       tRtV tR# )RPMSequoiaGeneratorrpm-sequoiac                sF    V P                  VP                  R R04      4      # )ZrpmrK   r    r"   r#   r   r$   Z#RPMSequoiaGenerator.generate_config   s0    ##O$:$:E<I<K %L M 	Mr%   r   N)	r@   rA   rB   rC   rD   rE   r$   rF   rG   rH   rI   r   rJ   rJ      s     KM Mr%   rJ   )r5   r6   Ztempfiler   Ztomllibr=   ZTOMLDecodeErrorr>   ZModuleNotFoundErrorZdecoderZTomlDecodeErrorZconfiggeneratorr   r   rJ   r   r%   r   <module>rL      sj    
  .%%J
 -Q QhM* Mw  .--J.s   > !A"!A"