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