示例#1
0
    def _getID(self):
        """
        Returns a tuple: private key, public key, nodeID, private group ID, and
        public group ID from config.  If these values don't exist in conf file,
        they are generated and added.
        """
        # get the keys and IDs from the config file.
        # If these values don't exist, generate a pub/priv key pair, nodeID,
        # and groupIDs.
        if not self.configParser.has_section("identification"):
            self.configParser.add_section("identification")
        
        try:
            privkey = FludRSA.importPrivateKey( 
                    eval(self.configParser.get("identification","Kr"))) 
        except:
            pubkey, privkey = FludCrypto.generateKeys()
        else:
            try:
                pubkey = FludRSA.importPublicKey( 
                        eval(self.configParser.get("identification","Ku")))
            except:
                pubkey = privkey.publickey()
            
        try:
            nodeID = self.configParser.get("identification","nodeID") 
        except:
            #nodeID = FludCrypto.hashstring(str(pubkey.exportPublicKey()))
            nodeID = pubkey.id()
        
        try:
            privgroupID = self.configParser.get("identification",
                    "groupIDr")[:64]
        except:
            privgroupID = 'fludtest' # default groupID hardcoded
        
        try:
            pubgroupID = self.configParser.get("identification","groupIDu") 
        except:
            pubgroupID = FludCrypto.hashstring(str(pubkey.exportPublicKey()) 
                    +privgroupID)

        # write the settings back out to config object
        self.configParser.set("identification","Kr",privkey.exportPrivateKey())
        self.configParser.set("identification","Ku",pubkey.exportPublicKey())
        self.configParser.set("identification","nodeID",nodeID)
        self.configParser.set("identification","groupIDr",privgroupID)
        self.configParser.set("identification","groupIDu",pubgroupID)
        
        # return the values
        return privkey, pubkey, nodeID, privgroupID, pubgroupID