Skip to content

Instantly share code, notes, and snippets.

@dcolish
Created February 25, 2012 23:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dcolish/1911540 to your computer and use it in GitHub Desktop.
Save dcolish/1911540 to your computer and use it in GitHub Desktop.
Crypto zmq.rpc
import sys
from Crypto.Cipher import Blowfish
from zmq.rpc.simplerpc import (
RPCService,
RPCServiceProxy,
rpc_method,
Serializer
)
from zmq.utils import jsonapi
class EncryptedJSONSerializer(Serializer):
def __init__(self, key):
self.crypt = Blowfish.new(key)
def dumps(self, msg):
jmsg = jsonapi.dumps(msg)
jmsg += " " * (8 - len(jmsg) % 8)
return self.crypt.encrypt(jmsg)
def loads(self, msg):
return jsonapi.loads(self.crypt.decrypt(msg))
class MehService(RPCService):
@rpc_method
def add(self, a, b):
return sum([a, b])
if __name__ == '__main__':
if sys.argv[1] == 'client':
client = RPCServiceProxy(serializer=EncryptedJSONSerializer('hello'))
client.connect('tcp://127.0.0.1:8888')
print client.add(1, 2)
else:
server = MehService(serializer=EncryptedJSONSerializer('hello'))
server.bind('tcp://127.0.0.1:8888')
server.start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment