Changeset 320 for trunk

Show
Ignore:
Timestamp:
05/28/09 14:30:52 (3 years ago)
Author:
ocjhb
Message:

dont remember all I did

Location:
trunk/sandbox/jhb
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/sandbox/jhb/mobile/ocwallet.py

    r319 r320  
    11import appuifw,e32,os,sys 
     2 
     3def error_catched(f): 
     4    def error_handled(*args,**kwargs): 
     5        try: 
     6            f(*args,**kwargs) 
     7        except: 
     8            appuifw.note(u'cought error','error')  
     9    return error_handled         
     10 
    211 
    312class WalletClient: 
     
    131140        url = appuifw.query(u'url','text',u'http://baach.de:9090') 
    132141        self.todo['url'] = url 
    133         transport = self.getHTTPTransport(url)  
     142        transport = self.getHTTPTransport(url) 
     143        if not transport: 
     144            self.displayActionMenu() 
     145            return 
    134146        self.wallet.addCurrency(transport) 
    135147        self.displayWalletMenu() 
     
    160172 
    161173        transport = self.getHTTPTransport(url) 
     174        if not transport: 
     175            self.displayActionMenu() 
     176            return 
     177  
    162178        self.wallet.mintCoins(transport,amount,target) 
    163179        coinsound.play()  
     
    178194 
    179195        transport = self.getHTTPTransport(url) 
     196        if not transport: 
     197            self.displayActionMenu() 
     198            return 
     199  
    180200        self.wallet.redeemCoins(transport,amount,target) 
    181201        self.displayWalletMenu() 
     
    185205        cdd,alreadythere = self.getCurrentCurrency() 
    186206        transport = self.getHTTPTransport(cdd.issuerServiceLocation) 
     207        if not transport: 
     208            self.displayActionMenu() 
     209            return 
     210  
    187211        self.wallet.freshenUp(transport,cdd) 
    188         coinsound.play()  
     212        #coinsound.play()  
    189213        self.displayWalletMenu() 
    190214 
     
    197221        if method ==0: 
    198222            transport = self.getHTTPTransport(cdd.issuerServiceLocation) 
     223            if not transport: 
     224                self.displayActionMenu() 
     225                return 
     226  
    199227            self.receiveCoinsBT(transport) 
     228  
    200229        else: 
    201230            transport = self.getHTTPTransport(cdd.issuerServiceLocation) 
     231            if not transport: 
     232                self.displayActionMenu() 
     233                return 
     234  
    202235            self.receiveCoinsHTTP(transport,walletport) 
    203236 
     
    208241 
    209242    def getHTTPTransport(self,url): 
    210         self.startInternet() 
     243        if not self.startInternet(): 
     244            return  
    211245        transport = transports.HTTPTransport(url) 
    212246        return transport 
     
    255289                    answer = self.wallet.listenSum(message) 
    256290                if message.header == 'SpendRequest': 
    257                     answer = self.wallet.listenSpend(message,transport) 
     291                    answer = self.wallet.listenSpend(transport,message) 
    258292                self.send_response(200) 
    259293                self.send_header("Content-type", "text/plain") 
     
    265299 
    266300        OCHandler.wallet = self.wallet 
    267         self.startInternet() 
     301        if not self.startInternet(): 
     302            return 
    268303         
    269304        self.httpd = StoppableHTTPServer(("",port),OCHandler) 
     
    380415                url = 'http://%s:%s' % (url,walletport) 
    381416            transport = self.getHTTPTransport(url) 
     417            if not transport: 
     418                self.displayActionMenu() 
     419                return 
    382420            self.wallet.spendCoins(transport,cdd.currencyId,amount,target) 
    383421        else: 
     
    413451                aps.sort() 
    414452                apid = appuifw.popup_menu(aps,u'select access point') 
     453                if apid == None: 
     454                    return None 
    415455                self.feedback(u'Preparing internet access:setting access point') 
    416456 
     
    426466            s.connect(('www.google.com',80)) 
    427467            self.ip = s.getsockname()[0] 
    428  
     468        return True 
    429469     
    430470 
     
    515555#Try to use a password on the data file. Repeat till its sucessfully loaded 
    516556password = '' 
    517 while 1: 
     557while 0: #don't use the password protected storage, too slow atm. 
    518558    password = appuifw.query(u'password','text') 
    519559 
     
    530570        appuifw.note(u'wrong password','error') 
    531571        pass 
     572storage = oc2storage.Storage() 
     573storage.setFilename(storagepath+'wallet.bin') 
     574tmp = open(storagepath+'wallet.bin') 
     575tmpcontent = tmp.read() 
     576tmp.close() 
     577if tmpcontent.startswith('salt'): 
     578    os.remove(storagepath+'wallet.bin') 
     579storage.restore()     
     580 
     581 
     582 
     583 
     584 
    532585 
    533586#Load the rest of the libs 
  • trunk/sandbox/jhb/oc2/testissuer.py

    r296 r320  
    5252    return host 
    5353 
    54 print 'Starting up server' 
     54print 'Starting up server on port %s ' % port 
    5555Handler.issuer = issuer 
    5656Handler.mint = mint 
  • trunk/sandbox/jhb/oc2/transports.py

    r319 r320  
    6969    def __init__(self, *args): 
    7070        self.results = list(args) 
    71  
     71        self.debug = 0 
    7272    def __call__(self,message): 
     73        if self.debug: 
     74            import pdb; pdb.set_trace() 
    7375        result = self.results.pop(0) 
    7476         
     
    7981            return method(*args) 
    8082         
    81         elif callable(result): 
     83        elif not isinstance(result,messages.Message) and callable(result): 
    8284            return result(message)         
    8385         
  • trunk/sandbox/jhb/oc2/wallet.py

    r319 r320  
    3939        self.feedback('Talking to issuer: fetching latest CDD') 
    4040        response = transport(messages.AskLatestCDD()) 
     41        if not isinstance(response,messages.GiveLatestCDD): 
     42            raise Exception, 'Not a valid message' 
     43        if not response.cdd.masterPubKey.verifyContainerSignature(response.cdd): 
     44            raise Exception, 'Could not verify cdd' 
    4145        return response.cdd 
    4246 
    4347 
    44     def fetchMintKeys(self,transport,denominations=None,keyids=None): 
     48    def fetchMintKeys(self,transport,cdd,denominations=None,keyids=None): 
    4549        if denominations and keyids: 
    46             raise "you can't ask for denominations and keyids at the same time" 
     50            raise Exception, "you can't ask for denominations and keyids at the same time" 
    4751        if not (denominations or keyids): 
    48             raise "you need to ask at least for one" 
     52            raise Exception, "you need to ask at least for one" 
    4953        message = messages.FetchMintKeys() 
    50         message.denominations = [str(d) for d in denominations] 
     54        denominations = [str(d) for d in denominations] 
     55        message.denominations = denominations 
    5156        message.keyids = keyids 
    5257        self.feedback('Talking to issuer: fetching mintkeys') 
    5358        response = transport(message) 
     59         
    5460        if response.header == 'MINTING_KEY_FAILURE': 
    5561            raise message 
    56         else: 
    57             return  response.keys 
     62         
     63        if not isinstance(response,messages.GiveMintKeys): 
     64            raise Exception, 'Not a valid message' 
     65         
     66        if set(denominations).difference(set([key.denomination for key in response.keys])): 
     67            raise Exception, 'Not all denominations met' 
     68 
     69        for key in response.keys: 
     70            if not cdd.masterPubKey.verifyContainerSignature(key): 
     71                raise Exception, 'Could not verify key' 
     72        return  response.keys 
     73             
    5874        
    5975 
     
    119135 
    120136 
    121     def listenSpend(self,message,transport=None): 
     137    def listenSpend(self,transport,message): 
    122138        tid = message.transactionId 
    123139        amount = sum([int(m.denomination) for m in message.coins]) 
     
    174190 
    175191    def pickForSpending(self,amount,coins): 
    176         tmp = [(c.denomination,c) for c in coins] 
     192        tmp = [(int(c.denomination),c) for c in coins] 
    177193        tmp.sort() 
    178194        tmp.reverse() 
    179         coins = [t[1] for t in tmp] 
     195        mycoins = [t[1] for t in tmp] 
    180196        picked = [] 
    181         for coin in coins: 
     197        for coin in mycoins: 
    182198            sumpicked = sum([int(c.denomination) for c in picked]) 
    183199            if sumpicked < amount: 
     
    220236    def prepareBlanks(self,transport,cdd,values):         
    221237        wanted = list(set(values)) #what mkcs do we want 
    222         keys = self.fetchMintKeys(transport,denominations=wanted) 
     238        keys = self.fetchMintKeys(transport,cdd,denominations=wanted) 
    223239        mkcs = {} 
    224240        for mkc in keys: 
    225241            if not cdd.masterPubKey.verifyContainerSignature(mkc): 
    226                 raise 'Invalid signature on mkc' 
     242                raise Exception, 'Could not verify mkc' 
    227243            mkcs[mkc.denomination] = mkc 
    228244