cl-srpc - Common Lisp Secure RPC, evaluating lisp expressions over the network using Ironclad encryption
A package that uses ironclad, usocket, and cl-marshal to evaluate lisp expressions over an encrypted network connection, permitting both immediate and deferred (promise) results.
Available at: https://github.com/jetmonk/cl-srpc
License: Public Domain except for file based on trivial-utf-8-srpc.lisp, which is also redistributable but credited to original author.
Example
;; on both client and server (asdf:load-system "cl-srpc")
On Server
(defparameter *server* (make-instance 'cl-srpc:server :cipher-args cl-srpc::*default-cipher* ;; or your own ironclad cipher :address "127.0.0.1" :port 50000))
On Client
(defparameter *client* (make-instance 'cl-srpc:client :cipher-args cl-srpc::*default-cipher* :remote-address "127.0.0.1" ;; same as server :remote-port 50000)) ;; same as server (cl-srpc:execute-remote-call *client* :expression '(+ 1 2)) ==> (3) ;; values returned inside list
Distributed