Changeset 706


Ignore:
Timestamp:
24/03/06 17:18:27 (14 years ago)
Author:
pjkersha
Message:

ndgSessionClient.py: added check for session manager WSDL URI arg set.

XMLMsg.py:
XMLMsg.init - if decrypt fails with xmlTxt input, try parsing as clear test.

XMLSecDoc.py:

  • Added metaclass XMLSecDocMetaClass so that xmlsec initialisation is only done once per

session rather than every time an object is instiated.

  • commented out xmlsec.shutdown() to get rid of errors - a fudge!

SessionClient?.py: initialise smSrv attribute to None

Location:
TI12-security/trunk/python
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/NDG/SessionClient.py

    r701 r706  
    6565                                 give extra WS debug information""" 
    6666 
     67        self.__smSrv = None 
    6768        self.__smWSDL = None 
    6869        self.__smPubKeyFilePath = None 
     
    210211            raise SessionClientError("Initialising WSDL Service Proxy: " + \ 
    211212                                     str(e)) 
     213 
    212214                                     
    213215    #_________________________________________________________________________ 
  • TI12-security/trunk/python/NDG/XMLMsg.py

    r701 r706  
    127127                # Input XML text set - parse tags into dictionary  
    128128                # self.__xmlTags 
     129                if encrPriKeyFilePath: 
     130                    # decrypt if a private key was set 
     131                    try: 
     132                        self.decrypt(encrPriKeyPwd, xmlTxt) 
     133                    except: 
     134                        # Try parse without encryption 
     135                        self.__xmlTxt = xmlTxt 
     136                else: 
     137                    self.__xmlTxt = xmlTxt 
     138                             
    129139                try: 
    130                     if encrPriKeyFilePath: 
    131                         # decrypt if a private key was set 
    132                         self.decrypt(encrPriKeyPwd, xmlTxt) 
    133                          
    134140                    self.parseXML() 
    135141                except Exception, e: 
  • TI12-security/trunk/python/NDG/XMLSecDoc.py

    r701 r706  
    1818import os 
    1919 
     20# Fudge for re-directing error output from xmlsec.shutdown() 
     21import sys 
     22 
    2023# For asString() - enables XML header to be stripped if required 
    2124import re 
     
    3134 
    3235 
     36 
     37class XMLSecDocMetaClass(type): 
     38    def __init__(cls, name, bases, dict): 
     39         
     40        # Init xmlsec library 
     41        if xmlsec.init() < 0: 
     42            raise XMLSecDocError("xmlsec initialization failed.") 
     43 
     44         
     45        # Check loaded library version 
     46        if xmlsec.checkVersion() != 1: 
     47            raise XMLSecDocError("xmlsec library version is not compatible.") 
     48 
     49 
     50        # Init crypto library 
     51        if xmlsec.cryptoAppInit(None) < 0: 
     52            raise XMLSecDocError("Crypto initialization failed.") 
     53 
     54         
     55        # Init xmlsec-crypto library 
     56        if xmlsec.cryptoInit() < 0: 
     57            raise XMLSecDocError("xmlsec-crypto initialization failed.") 
     58         
    3359 
    3460 
     
    4874    """Implements XML Signature and XML Encryption for a Document.""" 
    4975 
     76    __metaclass__ = XMLSecDocMetaClass 
     77     
    5078    def __init__(self, 
    5179                 filePath=None, 
     
    6492                             of a document or for encrypting a document""" 
    6593 
    66          
    6794        self.__filePath = None 
    6895        self.__signingKeyFilePath = None 
     
    124151        self.__bKeysStoreFreed = False 
    125152  
    126          
     153        #self.__initLibs() 
     154         
     155         
     156    #_________________________________________________________________________ 
     157    def __initLibs(self): 
     158 
    127159        # Initialise libxml2 library 
    128160        libxml2.initParser() 
    129161        libxml2.substituteEntitiesDefault(1) 
    130  
    131  
     162         
    132163        # Init xmlsec library 
    133164        if xmlsec.init() < 0: 
     
    148179        if xmlsec.cryptoInit() < 0: 
    149180            raise XMLSecDocError("xmlsec-crypto initialization failed.") 
     181 
     182 
     183    #_________________________________________________________________________        
     184    def __shutdownLibs(self): 
     185 
     186        try: 
     187            # Shutdown xmlsec-crypto library 
     188            xmlsec.cryptoShutdown() 
     189     
     190            # Shutdown crypto library 
     191            xmlsec.cryptoAppShutdown() 
     192     
     193            # Shutdown xmlsec library 
     194            # Fudge - comment out to avoid error messages but may cause 
     195            # mem leaks?? 
     196            # 
     197            # P J Kershaw 24/03/06 
     198            #xmlsec.shutdown() 
     199     
     200            # Shutdown LibXML2 
     201            libxml2.cleanupParser() 
     202             
     203        except Exception, e: 
     204            raise XMLSecDocError("Cleaning up xmlsec: %s" % e) 
    150205 
    151206 
     
    161216    def __del__(self): 
    162217        """Ensure cleanup of libxml2 and xmlsec memory allocated""" 
    163          
    164218        self.__cleanup() 
    165         try: 
    166             # Shutdown xmlsec-crypto library 
    167             xmlsec.cryptoShutdown() 
    168      
    169             # Shutdown crypto library 
    170             xmlsec.cryptoAppShutdown() 
    171      
    172             # Shutdown xmlsec library 
    173             xmlsec.shutdown() 
    174      
    175             # Shutdown LibXML2 
    176             libxml2.cleanupParser() 
    177              
    178         except Exception, e: 
    179             raise XMLSecDocError("Cleaning up xmlsec: %s" % e) 
    180  
     219        self.__shutdownLibs() 
     220         
    181221 
    182222    #_________________________________________________________________________ 
     
    13851425                                  
    13861426        return key 
    1387      
    1388      
    1389 #_____________________________________________________________________________ 
    1390 def testEncrypt(filePath="/home/users/pjkersha/Development/security/python/Tests/xmlsec/encrypt3-doc.xml", 
    1391     encrPubKeyFilePath="/home/users/pjkersha/Development/security/python/Tests/xmlsec/badc-aa-cert.pem"): 
    1392          
    1393 #    import pdb 
    1394 #    pdb.set_trace() 
    1395     xmlSecDoc = XMLSecDoc() 
    1396     result = xmlSecDoc.encrypt(filePath=filePath,  
    1397                                encrPubKeyFilePath=encrPubKeyFilePath, 
    1398                                rtnAsString=True) 
    1399     print result 
    1400      
    1401  
    1402  
    1403 #_____________________________________________________________________________     
    1404 def testDecrypt(filePath="/home/users/pjkersha/Development/security/python/Tests/xmlsec/XMLSecDocEg.xml", 
    1405     encrPriKeyFilePath="/home/users/pjkersha/Development/security/python/Tests/xmlsec/badc-aa-key.pem", 
    1406     encrPriKeyPwd=None): 
    1407          
    1408     import pdb 
    1409     pdb.set_trace() 
    1410     xmlSecDoc = XMLSecDoc() 
    1411     result = xmlSecDoc.decrypt(filePath=filePath,  
    1412                                encrPriKeyFilePath=encrPriKeyFilePath, 
    1413                                encrPriKeyPwd=encrPriKeyPwd, 
    1414                                rtnAsString=True) 
    1415     print result 
    1416  
    1417  
    1418          
    1419 #_____________________________________________________________________________ 
    1420 def testSym(\ 
    1421 filePath="/home/users/pjkersha/Development/security/python/Tests/xmlsec/encrypt3-doc.xml", 
    1422 keyBinFilePath="/home/users/pjkersha/Development/security/python/Tests/xmlsec/deskey2.bin"): 
    1423          
    1424     import pdb 
    1425     pdb.set_trace() 
    1426     xmlSecDoc = XMLSecDoc() 
    1427     encrRes = xmlSecDoc.symEncrypt(filePath=filePath, 
    1428                                    keyBinFilePath=keyBinFilePath, 
    1429                                    rtnAsString=True) 
    1430     print "Encrypted Result:" 
    1431     print encrRes 
    1432      
    1433     decrRes = xmlSecDoc.symDecrypt(xmlTxt=encrRes, 
    1434                                    keyBinFilePath=keyBinFilePath, 
    1435                                    rtnAsString=True) 
    1436     print "Decrypted Result:" 
    1437     print decrRes 
    1438  
    1439  
    1440 #_____________________________________________________________________________     
    1441 def testSymDecrypt(\ 
    1442 filePath="/home/users/pjkersha/Development/security/python/Tests/xmlsec/XMLSecDocEg2.xml", 
    1443 keyBinFilePath="/home/users/pjkersha/Development/security/python/Tests/xmlsec/deskey.bin"): 
    1444  
    1445          
    1446     import pdb 
    1447     pdb.set_trace() 
    1448     xmlSecDoc = XMLSecDoc() 
    1449     print result 
    1450                                   
    1451 if __name__ == "__main__": 
    1452     testSym() 
    1453     #testEncrypt() 
    1454     #testDecrypt() 
     1427 
  • TI12-security/trunk/python/bin/ndgSessionClient.py

    r701 r706  
    244244    (options, args) = parser.parse_args() 
    245245 
    246  
     246    if not options.sessMgrWSDLuri:         
     247        sys.stderr.write("Error, No Session Manager WSDL URI set.\n\n") 
     248        parser.print_help() 
     249        sys.exit(1) 
     250         
    247251    passPhrase = None 
    248252    
Note: See TracChangeset for help on using the changeset viewer.