Example #1
0
 def encode( self ) :
     directList = [loc.addr for loc in self.directLocations]
     routedList = [(loc.routerAddr,loc.routerId) for loc in self.routedLocations]
     data = { 'direct' : directList,
         'routed' : routedList,
         'publicIP' : self.publicIP }
     return encode( data )
Example #2
0
def acceptIncoming(acceptFlag, sslConn, reactor, callback=None):
    def doCancel():
        stream.close()

    def onError(*args):
        doCancel()
        op.notify(None)

    def onWriteComplete():
        stream.shutdown()
        op.notify(sslConn)

    stream = SSLMessageStream(sslConn, reactor)
    stream.setCloseCallback(onError)
    stream.setErrorCallback(onError)
    stream.setInvalidMessageCallback(onError)
    stream.setInputCallback(onError)
    stream.setWriteCompleteCallback(onWriteComplete)
    if acceptFlag:
        data = 0
    else:
        data = -1
    stream.sendMessage(encode(data))
    op = AsyncOp(callback, doCancel)
    return op
Example #3
0
def _serviceConnect( sslConn, serviceName, reactor, callback=None ) :
    def doCancel() :
        ms.shutdown()
        sslAbort( sslConn )
    def onClose( *args ) :
        doCancel()
        op.notify( None )
    def onInput( data ) :
        try :
            result = decode( data )
            assert type(result) is int
            assert result == 0
        except :
            doCancel()
            op.notify( None )
            return
        ms.shutdown()
        op.notify( sslConn )
    ms = SSLMessageStream( sslConn, reactor )
    ms.setCloseCallback( onClose )
    ms.setErrorCallback( onClose )
    ms.setInvalidMessageCallback( onClose )
    ms.setInputCallback( onInput )
    ms.sendMessage( encode(serviceName) )
    ms.enableRead( True )
    op = AsyncOp( callback, doCancel )
    return op
Example #4
0
 def encode(self):
     directList = [loc.addr for loc in self.directLocations]
     routedList = [(loc.routerAddr, loc.routerId)
                   for loc in self.routedLocations]
     data = {
         'direct': directList,
         'routed': routedList,
         'publicIP': self.publicIP
     }
     return encode(data)
Example #5
0
 def request( self, payload, callback=None ) :
     requestId = self.nextRequestId
     self.nextRequestId += 1
     msg = (0,requestId,payload)
     s = encode( msg )
     def cancelRequest() :
         del self.pending[requestId]
     op = RPCOp( requestId, callback, cancelRequest )
     self.pending[requestId] = op
     self.msgStream.sendMessage( s )
     return op
Example #6
0
 def request( self, data, destaddr, callback=None ) :
     while 1 :
         id = rand_bytes( 20 )
         if not self.pending.has_key(id) : break
     msg = (0, id, data)
     s = encode( msg )
     def cancelRequest() :
         del self.pending[id]
     op = RPCOp( id, callback, cancelRequest )
     self.pending[id] = op
     self._sendData( s, destaddr )
     return op
Example #7
0
File: rpc.py Project: hj91/cspace
    def request(self, payload, callback=None):
        requestId = self.nextRequestId
        self.nextRequestId += 1
        msg = (0, requestId, payload)
        s = encode(msg)

        def cancelRequest():
            del self.pending[requestId]

        op = RPCOp(requestId, callback, cancelRequest)
        self.pending[requestId] = op
        self.msgStream.sendMessage(s)
        return op
Example #8
0
    def request(self, data, destaddr, callback=None):
        while 1:
            id = rand_bytes(20)
            if not self.pending.has_key(id): break
        msg = (0, id, data)
        s = encode(msg)

        def cancelRequest():
            del self.pending[id]

        op = RPCOp(id, callback, cancelRequest)
        self.pending[id] = op
        self._sendData(s, destaddr)
        return op
Example #9
0
def verifySignature( publicKey, data, updateLevel, signature ) :
    payload = encode( ('DHT-DATA',data,updateLevel) )
    if type(publicKey) is str :
        k = RSAKey()
        try :
            k.fromDER_PublicKey( publicKey )
        except RSAError :
            return False
    else :
        k = publicKey
    try :
        digest = Digest(digestType).digest( payload )
        k.verify( signature, digest, digestType )
        return True
    except RSAError :
        return False
Example #10
0
def verifySignature(publicKey, data, updateLevel, signature):
    payload = encode(('DHT-DATA', data, updateLevel))
    if type(publicKey) is str:
        k = RSAKey()
        try:
            k.fromDER_PublicKey(publicKey)
        except RSAError:
            return False
    else:
        k = publicKey
    try:
        digest = Digest(digestType).digest(payload)
        k.verify(signature, digest, digestType)
        return True
    except RSAError:
        return False
Example #11
0
def acceptIncoming( acceptFlag, sslConn, reactor, callback=None ) :
    def doCancel() :
        stream.close()
    def onError( *args ) :
        doCancel()
        op.notify( None )
    def onWriteComplete() :
        stream.shutdown()
        op.notify( sslConn )
    stream = SSLMessageStream( sslConn, reactor )
    stream.setCloseCallback( onError )
    stream.setErrorCallback( onError )
    stream.setInvalidMessageCallback( onError )
    stream.setInputCallback( onError )
    stream.setWriteCompleteCallback( onWriteComplete )
    if acceptFlag :
        data = 0
    else :
        data = -1
    stream.sendMessage( encode(data) )
    op = AsyncOp( callback, doCancel )
    return op
Example #12
0
File: rpc.py Project: hj91/cspace
 def oneway(self, payload):
     requestId = self.nextRequestId
     self.nextRequestId += 1
     msg = (2, requestId, payload)
     s = encode(msg)
     self.msgStream.sendMessage(s)
Example #13
0
 def response( self, payload, requestId ) :
     msg = (1,requestId,payload)
     s = encode( msg )
     self.msgStream.sendMessage( s )
Example #14
0
 def response( self, data, ctx ) :
     assert ctx.rpcSocket is self
     msg = (1, ctx.id, data )
     s = encode( msg )
     self._sendData( s, ctx.addr )
Example #15
0
 def oneway( self, payload ) :
     requestId = self.nextRequestId
     self.nextRequestId += 1
     msg = (2,requestId,payload)
     s = encode( msg )
     self.msgStream.sendMessage( s )
Example #16
0
def computeSignature(rsaKey, data, updateLevel):
    payload = encode(('DHT-DATA', data, updateLevel))
    digest = Digest(digestType).digest(payload)
    return rsaKey.sign(digest, digestType)
Example #17
0
 def retry( self, id, data, destaddr ) :
     assert id in self.pending
     msg = (0, id, data)
     s = encode( msg )
     self._sendData( s, destaddr )
Example #18
0
def computeSignature( rsaKey, data, updateLevel ) :
    payload = encode( ('DHT-DATA',data,updateLevel) )
    digest = Digest(digestType).digest( payload )
    return rsaKey.sign( digest, digestType )
Example #19
0
File: rpc.py Project: hj91/cspace
 def response(self, payload, requestId):
     msg = (1, requestId, payload)
     s = encode(msg)
     self.msgStream.sendMessage(s)
Example #20
0
 def retry(self, id, data, destaddr):
     assert id in self.pending
     msg = (0, id, data)
     s = encode(msg)
     self._sendData(s, destaddr)
Example #21
0
 def response(self, data, ctx):
     assert ctx.rpcSocket is self
     msg = (1, ctx.id, data)
     s = encode(msg)
     self._sendData(s, ctx.addr)