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

dont remember all I did

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • 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