@@ -210,6 +210,15 @@ def _get_xmlsec_cryptobackend(path=None, search_paths=None):
210
210
ENC_NODE_NAME = 'urn:oasis:names:tc:SAML:2.0:assertion:EncryptedAssertion'
211
211
ENC_KEY_CLASS = 'EncryptedKey'
212
212
213
+ def get_environ_delete_tmpfiles ():
214
+ xmlsec_delete_tmpfiles = os .environ .get ('PYSAML2_DELETE_XMLSEC_TMP' , "True" )
215
+ if xmlsec_delete_tmpfiles .upper () == 'FALSE' :
216
+ xmlsec_delete_tmpfiles = False
217
+ logger .warn ('PYSAML2_DELETE_XMLSEC_TMP set to False, '
218
+ 'temporary xml files will not be deleted.' )
219
+ else :
220
+ xmlsec_delete_tmpfiles = True
221
+ return xmlsec_delete_tmpfiles
213
222
214
223
def _make_vals (val , klass , seccont , klass_inst = None , prop = None , part = False ,
215
224
base64encode = False , elements_to_sign = None ):
@@ -679,9 +688,7 @@ def __init__(self, xmlsec_binary, **kwargs):
679
688
CryptoBackend .__init__ (self , ** kwargs )
680
689
assert (isinstance (xmlsec_binary , six .string_types ))
681
690
self .xmlsec = xmlsec_binary
682
- self ._xmlsec_delete_tmpfiles = os .environ .get (
683
- 'PYSAML2_KEEP_XMLSEC_TMP' , False
684
- )
691
+ self ._xmlsec_delete_tmpfiles = get_environ_delete_tmpfiles ()
685
692
686
693
try :
687
694
self .non_xml_crypto = RSACrypto (kwargs ['rsa_key' ])
@@ -710,8 +717,7 @@ def encrypt(self, text, recv_key, template, session_key_type, xpath=''):
710
717
:return:
711
718
"""
712
719
logger .debug ('Encryption input len: %d' , len (text ))
713
- _ , fil = make_temp (text , decode = False )
714
-
720
+ f , fil = make_temp (text , decode = False )
715
721
com_list = [
716
722
self .xmlsec ,
717
723
'--encrypt' ,
@@ -748,10 +754,9 @@ def encrypt_assertion(self, statement, enc_key, template, key_type='des-192', no
748
754
if isinstance (statement , SamlBase ):
749
755
statement = pre_encrypt_assertion (statement )
750
756
751
- _ , fil = make_temp (
752
- _str (statement ), decode = False , delete = self ._xmlsec_delete_tmpfiles
753
- )
754
- _ , tmpl = make_temp (_str (template ), decode = False )
757
+ f , fil = make_temp (
758
+ _str (statement ), decode = False )
759
+ t , tmpl = make_temp (_str (template ), decode = False )
755
760
756
761
if not node_xpath :
757
762
node_xpath = ASSERT_XPATH
@@ -1307,10 +1312,7 @@ def __init__(
1307
1312
1308
1313
self .encrypt_key_type = encrypt_key_type
1309
1314
# keep certificate files to debug xmlsec invocations
1310
- if os .environ .get ('PYSAML2_KEEP_XMLSEC_TMP' , None ):
1311
- self ._xmlsec_delete_tmpfiles = False
1312
- else :
1313
- self ._xmlsec_delete_tmpfiles = True
1315
+ self ._xmlsec_delete_tmpfiles = get_environ_delete_tmpfiles ()
1314
1316
1315
1317
def correctly_signed (self , xml , must = False ):
1316
1318
logger .debug ('verify correct signature' )
@@ -1366,18 +1368,15 @@ def decrypt_keys(self, enctext, keys=None, id_attr=''):
1366
1368
for key in keys :
1367
1369
if not isinstance (key , six .binary_type ):
1368
1370
key = key .encode ("ascii" )
1369
- _ , key_file = make_temp (key , decode = False , delete = False )
1371
+ key_file , _ = make_temp (key , decode = False )
1370
1372
key_files .append (key_file )
1371
1373
1372
1374
try :
1373
- dectext = self .decrypt (enctext , key_file = key_files , id_attr = id_attr )
1375
+ dectext = self .decrypt (enctext , key_file = [ x . name for x in key_files ] , id_attr = id_attr )
1374
1376
except DecryptError as e :
1375
1377
raise
1376
1378
else :
1377
1379
return dectext
1378
- finally :
1379
- for key_file in key_files :
1380
- os .unlink (key_file )
1381
1380
1382
1381
def decrypt (self , enctext , key_file = None , id_attr = '' ):
1383
1382
""" Decrypting an encrypted text by the use of a private key.
0 commit comments