Changeset 1517


Ignore:
Timestamp:
14/09/06 11:39:44 (13 years ago)
Author:
pjkersha
Message:

Tests/xmlsec/encrypt4.py: experiment with encryption algs and format for tests with M2Crytpo/Crypto based
XML encryption.

Tests/xmlsec/wsSecurity.py: moved to Tests/xmlsec/WS-Security

Tests/SecurityClientTest?.py: trivial change to test params

NDG/SecurityCGI.py: change to doc text for ServiceProviderSecurityCGI init

NDG/Session.py:

  • refactoring of UserSession?.encrypt - list comprehension is not needed - use * operator instead

to make n sized padding.

  • fixed bug in exception handling for SessionMgrCredRepos?.auditCredentials + tidied up error handling

throughout class.

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

Legend:

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

    r1343 r1517  
    354354                              If not set, the client will make a WS call for 
    355355                              it. 
     356        smPubKeyFilePath:     file path to Session Manager public key. 
     357                              If not set, the client will make a WS call for 
     358                              it.  See information for smWSDLuri above. 
    356359        trustedIdPs:          dictionary of URIs for trusted hosts indexed by 
    357360                              hostname 
  • TI12-security/trunk/python/NDG/Session.py

    r1343 r1517  
    206206        try: 
    207207            mod = len(txt) % 16 
    208             if mod: 
    209                 nPad = 16 - mod 
    210             else: 
    211                 nPad = 0 
     208            nPad = mod and 16 - mod or 0 
    212209                 
    213210            # Add padding 
    214             paddedURI = txt + ''.join([' ' for i in range(nPad)]) 
    215         except Exception, e: 
    216             raise UserSessionError("Error padding text for encryption: " + \ 
    217                                    str(e)) 
     211            paddedURI = txt + ''.join(' '*nPad) 
     212        except Exception, e: 
     213            raise UserSessionError, "Error padding text for encryption: " + \ 
     214                                    str(e) 
    218215         
    219216        # encrypt 
     
    11281125    __validKeys = ['dbURI'] 
    11291126     
    1130  
     1127     
     1128    #_________________________________________________________________________     
    11311129    def __init__(self, propFilePath=None, dbPPhrase=None, **prop): 
    11321130        """Initialise Credentials Repository Database object. 
     
    11551153 
    11561154 
    1157  
    1158  
     1155    #_________________________________________________________________________     
    11591156    def __setConnection(self, 
    11601157                        dbType=None, 
     
    11971194                     
    11981195                    if dbPPhrase is None: 
    1199                         raise CredReposError("No database pass-phrase set") 
     1196                        raise CredReposError, "No database pass-phrase set" 
    12001197                     
    12011198                    dbURI = dbURIspl[0] + dbPPhrase + dbURIspl[2] 
     
    12071204        except Exception, e: 
    12081205            # Checking form missing keywords 
    1209             raise CredReposError("Error creating database URI: %s" % e) 
     1206            raise CredReposError, "Error creating database URI: %s" % e 
    12101207 
    12111208        try: 
    12121209            self.__con = connectionForURI(dbURI) 
    12131210        except Exception, e: 
    1214             raise CredReposError("Error creating database connection: %s" % e) 
     1211            raise CredReposError, "Error creating database connection: %s" % e 
    12151212 
    12161213        if chkConnection: 
     
    12191216                 
    12201217            except Exception, e: 
    1221                 raise CredReposError(\ 
    1222                     "Error connecting to Credential Repository: %s" % e) 
     1218                raise CredReposError, \ 
     1219                        "Error connecting to Credential Repository: %s" % e 
    12231220 
    12241221             
     
    12281225           
    12291226 
    1230  
    1231  
     1227    #_________________________________________________________________________     
    12321228    def setProperties(self, dbPPhrase=None, **prop): 
    12331229        """Update existing properties from an input dictionary 
     
    12361232        for key in prop.keys(): 
    12371233            if key not in self.__validKeys: 
    1238                 raise CredReposError("Property name \"%s\" is invalid" % key) 
     1234                raise CredReposError, "Property name \"%s\" is invalid" % key 
    12391235                 
    12401236        self.__prop.update(prop) 
     
    12431239        # Update connection setting 
    12441240        if 'dbURI' in prop: 
    1245             self.__setConnection(dbURI=prop['dbURI'], 
    1246                                  dbPPhrase=dbPPhrase) 
    1247                  
    1248  
    1249  
    1250          
     1241            self.__setConnection(dbURI=prop['dbURI'], dbPPhrase=dbPPhrase) 
     1242 
     1243 
     1244    #_________________________________________________________________________     
    12511245    def readProperties(self, 
    12521246                       propFilePath=None, 
     
    12671261                 
    12681262            except IOError, e: 
    1269                 raise CredReposError(\ 
     1263                raise CredReposError, \ 
    12701264                                "Error parsing properties file \"%s\": %s" % \ 
    1271                                 (e.filename, e.strerror)) 
     1265                                (e.filename, e.strerror) 
    12721266 
    12731267            except Exception, e: 
    1274                 raise CredReposError("Error parsing properties file: %s" % \ 
    1275                                     str(e)) 
     1268                raise CredReposError, \ 
     1269                                "Error parsing properties file \"%s\": %s" % \ 
     1270                                (propFilePath, str(e)) 
    12761271 
    12771272        if propElem is None: 
    1278             raise CredReposError("Root element for parsing is not defined") 
     1273            raise CredReposError, \ 
     1274    "Error parsing properties file \"%s\": root element is not defined" % \ 
     1275                                propFilePath 
    12791276 
    12801277 
     
    12931290 
    12941291             
    1295  
     1292    #_________________________________________________________________________     
    12961293    def addUser(self, userName, dn): 
    12971294        """A new user to Credentials Repository""" 
     
    13001297 
    13011298        except Exception, e: 
    1302             raise CredReposError("Error adding new user '%s': %s" % \ 
    1303                                                         (userName, e)) 
    1304  
    1305  
    1306  
    1307                              
     1299            raise CredReposError, "Error adding new user '%s': %s" % \ 
     1300                                                                (userName, e) 
     1301 
     1302 
     1303    #_________________________________________________________________________     
    13081304    def auditCredentials(self, dn=None, **attCertValidKeys): 
    13091305        """Check the attribute certificates held in the repository and delete 
     
    13331329             
    13341330        except Exception, e: 
    1335             raise CredReposError("Selecting credentials from repository: %s",\ 
    1336                                  e) 
     1331            raise CredReposError,"Selecting credentials from repository: " + \ 
     1332                                 str(e) 
    13371333 
    13381334        # Iterate through list of credentials deleting records where the 
     
    13471343        except Exception, e: 
    13481344            try: 
    1349                 raise CredReposError("Deleting credentials for '%s': %s", 
    1350                                                        (cred.dn, e)) 
     1345                raise CredReposError, "Deleting credentials for '%s': %s" % \ 
     1346                                                       (cred.dn, e) 
    13511347            except: 
    1352                 raise CredReposError("Deleting credentials: %s", e) 
    1353  
    1354  
    1355  
    1356  
     1348                raise CredReposError, "Deleting credentials: %s" % e 
     1349 
     1350 
     1351    #_________________________________________________________________________     
    13571352    def getCredentials(self, dn): 
    13581353        """Get the list of credentials for a given user's DN""" 
     
    13621357             
    13631358        except Exception, e: 
    1364             raise CredReposError("Selecting credentials for %s: %s" % (dn, e)) 
    1365  
    1366  
    1367  
    1368          
     1359            raise CredReposError, "Selecting credentials for %s: %s" % (dn, e) 
     1360 
     1361 
     1362    #_________________________________________________________________________     
    13691363    def addCredentials(self, dn, attCertList): 
    13701364        """Add new attribute certificates for a user.  The user must have 
     
    13881382 
    13891383        except Exception, e: 
    1390             raise CredReposError("Checking for user \"%s\": %s"%(dn, str(e))) 
     1384            raise CredReposError, "Checking for user \"%s\": %s" % (dn, e) 
    13911385 
    13921386         
     
    14041398 
    14051399        except Exception, e: 
    1406             raise CredReposError("Adding new user credentials for " + \ 
    1407                                  "user %s: %s" % (dn, str(e))) 
    1408  
    1409  
     1400            raise CredReposError, "Adding new user credentials for " + \ 
     1401                                  "user %s: %s" % (dn, str(e)) 
     1402 
     1403 
     1404    #_________________________________________________________________________     
    14101405    def _initTables(self, prompt=True): 
    14111406        """Use with EXTREME caution - this method will initialise the database 
  • TI12-security/trunk/python/Tests/SecurityClientTest.py

    r1325 r1517  
    3535 
    3636             
    37             gabrielConfig['newUserName'] = 'YosemiteSam'             
     37            gabrielConfig['newUserName'] = 'BugsBunny'             
    3838            gabrielConfig['userName'] = 'gabriel' 
    3939            gabrielConfig['trustedHostRequiredRole'] = 'academic' 
  • TI12-security/trunk/python/Tests/xmlsec/encrypt4.py

    r1415 r1517  
    3434    #pdb.set_trace() 
    3535    assert(sys.argv) 
    36     if len(sys.argv) != 3: 
     36    if len(sys.argv) != 4: 
    3737        print "Error: wrong number of arguments." 
    38         print "Usage: %s <xml-file> <key-file>" % sys.argv[0] 
     38        print "Usage: %s <xml-file> <PEM Cert file> <PEM Private Key file>" % sys.argv[0] 
    3939        return sys.exit(1) 
    4040     
     
    6262 
    6363    # Create keys manager and load keys 
    64     mngr = load_rsa_keys(sys.argv[2], "badc-aa-key.pem") 
     64    mngr = load_rsa_keys(sys.argv[2], sys.argv[3]) 
    6565 
    6666    # We use key filename as key name here 
    6767    if mngr is not None: 
    68 #        res = encrypt_file(mngr, sys.argv[1], sys.argv[2]) 
    69         res = encrypt_file(mngr, sys.argv[1], "badc-aa-key.pem") 
     68        res = encrypt_file(mngr, sys.argv[1], sys.argv[2]) 
    7069        # Destroy keys manager 
    7170        mngr.destroy() 
     
    9089# 
    9190# Returns the newly created keys manager or None if an error occurs. 
    92 def load_rsa_keys(key_file, priKeyFilePath): 
    93     assert(key_file) 
     91def load_rsa_keys(pemCertFilePath, pemPriKeyFilePath): 
     92    assert(pemCertFilePath) 
    9493 
    9594    # Create and initialize keys manager, we use a simple list based 
     
    105104        return None 
    106105    # Load private RSA key 
    107     if not check_filename(key_file): 
    108         mngr.destroy() 
    109         return None 
    110 #    key = xmlsec.cryptoAppKeyLoad(key_file, xmlsec.KeyDataFormatPem, 
     106    if not check_filename(pemCertFilePath): 
     107        mngr.destroy() 
     108        return None 
     109#    key = xmlsec.cryptoAppKeyLoad(pemCertFilePath, xmlsec.KeyDataFormatPem, 
    111110#                                  None, None, None); 
    112     key = xmlsec.cryptoAppKeyLoad(key_file, 7, 
     111    key = xmlsec.cryptoAppKeyLoad(pemCertFilePath, 7, 
    113112                                  None, None, None); 
    114113    if key is None: 
    115         print "Error: failed to load rsa key from file \"%s\"" % key_file 
     114        print "Error: failed to load rsa key from file \"%s\"" % pemCertFilePath 
    116115        mngr.destroy() 
    117116        return None 
    118117    # Set key name to the file name, this is just an example! 
    119     if key.setName(priKeyFilePath) < 0: 
    120         print "Error: failed to set key name for key from \"%s\"" % key_file 
     118    if key.setName(pemPriKeyFilePath) < 0: 
     119        print "Error: failed to set key name for key from \"%s\"" % pemPriKeyFilePath 
    121120        key.destroy() 
    122121        mngr.destroy() 
     
    173172        print "Error: failed to add key info" 
    174173        cleanup(doc, enc_data_node) 
    175  
     174    pdb.set_trace() 
    176175    # We want to put encrypted key in the <enc:CipherValue/> node 
    177176    if enc_key_node.ensureCipherValue() is None: 
     
    192191 
    193192    # P J Kershaw 06/09/05 
    194 #    x509DataNode = key_info_node2.addX509Data() 
    195 #    if x509DataNode is None: 
    196 #        print "Error adding X509Data node" 
    197 #        cleanup(doc, enc_data_node) 
    198  
    199 ##    if xmlsec.addChild(x509DataNode, 
    200 ##                       xmlsec.NodeX509Certificate) is None: 
    201 ##        print "Error adding %s node" % xmlsec.NodeX509Certificate 
    202 ##        cleanup(doc, enc_data_node) 
     193    x509DataNode = key_info_node2.addX509Data() 
     194    if x509DataNode is None: 
     195        print "Error adding X509Data node" 
     196        cleanup(doc, enc_data_node) 
     197 
     198    if xmlsec.addChild(x509DataNode, 
     199                       xmlsec.NodeX509Certificate) is None: 
     200        print "Error adding %s node" % xmlsec.NodeX509Certificate 
     201        cleanup(doc, enc_data_node) 
    203202         
    204 #    if xmlsec.addChild(x509DataNode, 
    205 #                       xmlsec.NodeX509SubjectName) is None: 
    206 #        print "Error adding %s node" % xmlsec.NodeX509SubjectName 
    207 #        cleanup(doc, enc_data_node) 
    208 ##         
    209 ##    if xmlsec.addChild(x509DataNode, 
    210 ##                       xmlsec.NodeX509IssuerSerial) is None: 
    211 ##        print "Error adding %s node" % xmlsec.NodeX509IssuerSerial 
    212 ##        cleanup(doc, enc_data_node) 
     203    if xmlsec.addChild(x509DataNode, 
     204                       xmlsec.NodeX509SubjectName) is None: 
     205        print "Error adding %s node" % xmlsec.NodeX509SubjectName 
     206        cleanup(doc, enc_data_node) 
     207         
     208    if xmlsec.addChild(x509DataNode, 
     209                       xmlsec.NodeX509IssuerSerial) is None: 
     210        print "Error adding %s node" % xmlsec.NodeX509IssuerSerial 
     211        cleanup(doc, enc_data_node) 
    213212 
    214213         
Note: See TracChangeset for help on using the changeset viewer.