- Timestamp:
- 04/01/09 11:40:06 (3 years ago)
- Location:
- trunk/sandbox/jhb/oc2
- Files:
-
- 3 added
- 5 modified
-
documentation.py (modified) (2 diffs)
-
issuer.py (modified) (1 diff)
-
messages.py (added)
-
protocols.py (modified) (2 diffs)
-
testmobile.py (added)
-
testserver.py (modified) (1 diff)
-
transports.py (modified) (1 diff)
-
wallet.py (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/sandbox/jhb/oc2/documentation.py
r255 r256 217 217 218 218 ############################################################################### 219 219 >>> port = 9090 220 220 >>> cdd = issuer.makeCDD('OpenCentA', 221 221 ... 'oca', 222 222 ... [str(d) for d in [0,1,2,5,10,20]], 223 ... 'http://localhost: 8000',223 ... 'http://localhost:%s/' % port, 224 224 ... '') 225 225 >>> issuer.getMasterPubKey().verifyContainerSignature(cdd) … … 270 270 271 271 * fetch "currency description document" from issuer 272 273 ############################################################################### 274 275 >>> #faked request 276 >>> from wallet import Wallet 277 >>> wallet = Wallet(Item()) 278 >>> import protocols 279 >>> serverside = protocols.GiveLatestCDD(issuer) 280 >>> clientside = protocols.AskLatestCDD(wallet,serverside.run) 281 >>> cdd == clientside.run() 282 True 283 284 >>> #using http 285 >>> import transports 286 >>> import testserver 287 >>> transport = transports.HTTPTransport('http://localhost:%s/' % port) 288 >>> clientside = protocols.AskLatestCDD(wallet,transport) 289 >>> testserver.run_once(port,issuer) 290 >>> cdd2 = clientside.run() 291 >>> cdd2.toString(True) == cdd.toString(True) 292 True 293 294 ############################################################################### 272 295 273 296 -
trunk/sandbox/jhb/oc2/issuer.py
r255 r256 25 25 cdd.issuer = self.storage.masterPubKey.hash() 26 26 if not hasattr(self.storage,'cdds'): 27 self.storage.cdds = Item() 28 cddlist = getattr(self.storage.cdds,shortCurrencyId,[]) 29 setattr(self.storage.cdds,shortCurrencyId,cddlist) 30 cdd.version = len(cddlist) 27 self.storage.cdds = [] 28 cdds = self.get('cdds') 29 cdd.version = len(cdds) 31 30 self.storage.masterPrivKey.signContainer(cdd) 32 cdd list.append(cdd)31 cdds.append(cdd) 33 32 return cdd 34 33 35 def getCDD(self, shortCurrencyId,version=None):36 cdd list = getattr(self.storage.cdds,shortCurrencyId,None)34 def getCDD(self,version=None): 35 cdds = self.get('cdds') 37 36 if version: 38 return cdd list[version]37 return cdds[version] 39 38 else: 40 return cdd list[-1]39 return cdds[-1] 41 40 42 41 def getMasterPubKey(self): -
trunk/sandbox/jhb/oc2/protocols.py
r253 r256 1 import messages 2 1 3 class Protocol(object): 2 4 3 def __init__(self ):4 self. digest = self.dummy5 def __init__(self,transport): 6 self.transport = transport 5 7 6 def dummy(self,message): 7 8 return '' 8 def getResponse(self): 9 return self.transport.readMessage() 9 10 11 class AskLatestCDD(Protocol): 10 12 13 def __init__(self,wallet,transport): 14 self.transport = transport 15 self.wallet = wallet 16 17 def run(self,message=None): 18 message = messages.AskLatestCDD() 19 response = self.transport(message) 20 return response.cdd 21 22 class GiveLatestCDD(Protocol): 23 24 def __init__(self,issuer): 25 self.issuer = issuer 26 27 def run(self,message=None): 28 if message: 29 answer = messages.GiveLatestCDD() 30 answer.cdd = self.issuer.getCDD() 31 return answer 32 else: 33 pass 11 34 12 35 class CoinsSpendSender(Protocol): … … 64 87 65 88 def giveKeys(self,message): 66 67 68 class requestCDD(Protocol): 69 70 def __init__(self,cdd_version): 71 self.cdd_version = cdd_version 89 pass 72 90 73 91 74 def getCDD(self,message):75 return ''76 77 class giveCDD(Protocol):78 79 def giveCDD(self,message):80 return '' -
trunk/sandbox/jhb/oc2/testserver.py
r254 r256 1 1 import BaseHTTPServer, threading 2 import protocols, issuer, mint, transports, urllib 3 2 4 3 5 class Handler(BaseHTTPServer.BaseHTTPRequestHandler): 4 6 5 def do_ GET(self):6 self.send_response(200)7 def do_POST(self): 8 #print self.server 7 9 if self.path == '/stop': 8 10 raise 'foobar' 11 length = self.headers.get('Content-Length') 12 data = self.rfile.read(int(length)) 13 data = urllib.unquote(data) 14 message = transports.createMessage(data) 15 if message.header == 'AskLatestCDD': 16 protocol = protocols.GiveLatestCDD(self.issuer) 17 answer = protocol.run(message) 18 self.send_response(200) 9 19 self.send_header("Content-type", "text/plain") 10 self.end_headers() 11 self.wfile.write('foo') 12 13 PORT = 8000 20 self.wfile.write('\r\n') 21 self.wfile.write(answer.toString(True)) 14 22 15 httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler) 16 import threading 17 def run_once(): 23 24 def run_once(port,issuer=None): 25 Handler.issuer = issuer 26 httpd = BaseHTTPServer.HTTPServer(("", port), Handler) 27 import threading 18 28 t = threading.Thread(target=httpd.handle_request) 19 29 t.start() 20 30 21 22 #print "serving at port", PORT23 #t = threading.Thread(target=httpd.handle_request)24 #t.start()25 #import time26 #for i in range(10):27 # time.sleep(3)28 #print 'foobar'29 30 #httpd.serve_forever()31 -
trunk/sandbox/jhb/oc2/transports.py
r253 r256 1 import messages, simplejson 2 3 def createMessage(data): 4 data = dict(simplejson.loads(str(data))) 5 header = data['header'] 6 klass = getattr(messages,header) 7 message = klass(data) 8 return message 9 1 10 class Transport(object): 2 11 3 def write(self,message):4 return '' 12 def __call__(self,message): 13 return '' 5 14 6 def handleResponse(self,message): 7 pass 15 class HTTPTransport(object): 16 17 def __init__(self,url): 18 self.url = url 19 20 def __call__(self,message): 21 import urllib2, urllib 22 response = urllib2.urlopen(self.url,message.toString(True)) 23 return createMessage(response.read()) 24 25
