Changeset 265
- Timestamp:
- 04/06/09 21:18:52 (3 years ago)
- Location:
- trunk/sandbox/jhb/oc2
- Files:
-
- 4 modified
-
documentation.py (modified) (2 diffs)
-
messages.py (modified) (1 diff)
-
mint.py (modified) (2 diffs)
-
protocols.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/sandbox/jhb/oc2/documentation.py
r264 r265 443 443 ############################################################################### 444 444 445 We first need to setup something to sign the requests for authorization 446 445 447 >>> from authorizer import Authorizer 446 448 >>> authorizer = Authorizer({}) 447 449 >>> authpub = authorizer.createKeys() 448 450 >>> mint.addAuthKey(authpub) 451 >>> authorizer.setMKCs(mkcs) 452 453 454 good, lets start the action 449 455 >>> clientside = protocols.TransferRequest(transport,tid,'foo',[[mkc.keyId,blind]],[]) 450 456 >>> testserver.run_once(port,mint=mint,authorizer=authorizer) … … 452 458 >>> text 453 459 u'minted' 454 >>> blindsign = value[0] [1]460 >>> blindsign = value[0] 455 461 >>> blank.signature = key.unblind(secret,blindsign) 456 462 >>> coin = blank -
trunk/sandbox/jhb/oc2/messages.py
r264 r265 52 52 Field('signature',signing=False) 53 53 ] 54 class Error(Message): 55 fields = Message.fields + [ 56 Field('text'), 57 Field('data'), 58 Field('keyId'), 59 Field('signature',signing=False) 60 ] 61 62 class TransferReject(Message): 63 pass 54 64 55 65 -
trunk/sandbox/jhb/oc2/mint.py
r264 r265 37 37 return self.storage['keyids'][keyid] 38 38 39 def denominationToValue(self,denomination):40 return int(denomination)41 42 39 43 40 def addAuthKey(self,key): … … 54 51 55 52 def handleTransferRequest(self,authorizedMessage): 56 53 57 54 if not self.validateAuthorization(authorizedMessage): 58 55 return ('nonvalid','') 59 56 else: 60 57 message = authorizedMessage.message 61 62 target = message.target63 58 blinds = message.blinds 64 coins = message.coins65 66 amount = 067 currentversion = len(self.storage['keys']) - 168 errors = None69 59 result = [] 70 mintkeys = []71 72 60 for keyid,blind in blinds: 73 error = None74 61 priv,pub,denomination,version = self.getMintKeyById(keyid) 75 mintkeys.append(priv) 76 if version != currentversion: 77 error = 'Key not current' 78 79 if error: 80 errors = True 81 result.append(('error',error)) 82 else: 83 result.append(['ok','']) 84 85 amount += self.denominationToValue(denomination) 86 87 if errors: 88 return ('errors',result) 89 90 else: 91 i = 0 92 for keyid,blind in blinds: 93 signature = mintkeys[i].sign(blind) 94 result[i][1] = signature 95 i += 1 96 62 signature = priv.sign(blind) 63 result.append(signature) 64 97 65 return ('minted',result) 98 66 -
trunk/sandbox/jhb/oc2/protocols.py
r264 r265 83 83 def run(self,message=None): 84 84 if self.target and self.blinds: 85 type = 'mint'85 requesttype = 'mint' 86 86 elif self.target and self.coins: 87 type = 'redeem'87 requesttype = 'redeem' 88 88 elif self.blinds and self.coins: 89 type = 'exchange'89 requesttype = 'exchange' 90 90 else: 91 91 raise 'Not a valid combination of options' … … 96 96 message.blinds = self.blinds 97 97 message.coins = self.coins 98 message.options = dict(type= type).items()98 message.options = dict(type=requesttype).items() 99 99 100 100 response = self.transport(message) 101 101 header = response.header 102 102 if header == 'TransferReject': 103 return ('T RansferReject','')103 return ('TransferReject','') 104 104 elif header == 'TransferDelay': 105 105 return ('TransferDelay','') … … 117 117 def run(self,message): 118 118 options = dict(message.options) 119 type = options['type']120 if type == 'mint':119 requesttype = options['type'] 120 if requesttype == 'mint': 121 121 authorizedMessage = self.authorizer.authorize(message) 122 if not authorizedMessage: 123 raise 'not authorized' 124 text,value = self.mint.handleTransferRequest(authorizedMessage) 125 if text == 'minted': 122 if type(authorizedMessage) == messages.Error: 123 return messages.TransferReject() 124 125 response = self.mint.handleTransferRequest(authorizedMessage) 126 if type(response) == messages.Error: 127 return messages.TransferReject() 128 129 text,value = response 130 if value: 126 131 answer = messages.TransferAccept() 127 132 answer.text = text
