- Timestamp:
- 04/06/09 19:08:32 (3 years ago)
- Location:
- trunk/sandbox/jhb/oc2
- Files:
-
- 5 modified
-
documentation.py (modified) (1 diff)
-
messages.py (modified) (2 diffs)
-
mint.py (modified) (3 diffs)
-
protocols.py (modified) (2 diffs)
-
testserver.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/sandbox/jhb/oc2/documentation.py
r263 r264 443 443 ############################################################################### 444 444 445 >>> from authorizer import Authorizer 446 >>> authorizer = Authorizer({}) 447 >>> authpub = authorizer.createKeys() 448 >>> mint.addAuthKey(authpub) 445 449 >>> clientside = protocols.TransferRequest(transport,tid,'foo',[[mkc.keyId,blind]],[]) 446 >>> testserver.run_once(port, issuer,mint)450 >>> testserver.run_once(port,mint=mint,authorizer=authorizer) 447 451 >>> text,value = clientside.run() 448 452 >>> text -
trunk/sandbox/jhb/oc2/messages.py
r263 r264 37 37 Field('blinds'), 38 38 SubitemsField('coins'), 39 Field('options') 39 Field('options'), 40 40 ] 41 41 … … 46 46 ] 47 47 48 class AuthorizedMessage(Message): 49 fields = Message.fields + [ 50 OneItemField('message',klass=Message), 51 Field('keyId'), 52 Field('signature',signing=False) 53 ] 54 55 -
trunk/sandbox/jhb/oc2/mint.py
r263 r264 2 2 3 3 class Mint(Entity): 4 4 5 5 6 def setCDD(self,cdd): … … 39 40 return int(denomination) 40 41 41 def validateTarget(self,target,amount):42 return True43 42 44 def mintBlinds(self,target,blinds): 43 def addAuthKey(self,key): 44 keyid = key.hash() 45 self.storage.setdefault('authkeys',{})[keyid] = key 46 47 def getAuthKey(self,keyid): 48 return self.storage['authkeys'][keyid] 49 50 def validateAuthorization(self,message): 51 keyid = message.keyId 52 key = self.getAuthKey(keyid) 53 return key.verifyContainerSignature(message) 54 55 def handleTransferRequest(self,authorizedMessage): 56 57 if not self.validateAuthorization(authorizedMessage): 58 return ('nonvalid','') 59 else: 60 message = authorizedMessage.message 61 62 target = message.target 63 blinds = message.blinds 64 coins = message.coins 65 45 66 amount = 0 46 67 currentversion = len(self.storage['keys']) - 1 … … 67 88 return ('errors',result) 68 89 69 valid = self.validateTarget(target,amount) 70 71 if not valid: 72 return ('nonvalid','') 73 74 if valid and not errors: 90 else: 75 91 i = 0 76 92 for keyid,blind in blinds: -
trunk/sandbox/jhb/oc2/protocols.py
r263 r264 109 109 raise 'unknown thing' 110 110 111 class TransferHandl e(Protocol):111 class TransferHandling(Protocol): 112 112 113 def __init__(self,mint ):113 def __init__(self,mint,authorizer): 114 114 self.mint = mint 115 self.authorizer = authorizer 115 116 116 117 def run(self,message): … … 118 119 type = options['type'] 119 120 if type == 'mint': 120 text,value = self.mint.mintBlinds(message.target,message.blinds) 121 authorizedMessage = self.authorizer.authorize(message) 122 if not authorizedMessage: 123 raise 'not authorized' 124 text,value = self.mint.handleTransferRequest(authorizedMessage) 121 125 if text == 'minted': 122 126 answer = messages.TransferAccept() -
trunk/sandbox/jhb/oc2/testserver.py
r263 r264 18 18 protocol = protocols.GiveMintKeys(self.issuer) 19 19 elif message.header == 'TransferRequest': 20 protocol = protocols.TransferHandl e(self.mint)20 protocol = protocols.TransferHandling(self.mint,self.authorizer) 21 21 answer = protocol.run(message) 22 22 self.send_response(200) … … 26 26 27 27 28 def run_once(port,issuer=None,mint=None ):28 def run_once(port,issuer=None,mint=None,authorizer=None): 29 29 Handler.issuer = issuer 30 30 Handler.mint = mint 31 Handler.authorizer = authorizer 31 32 httpd = BaseHTTPServer.HTTPServer(("", port), Handler) 32 33 import threading
