Software / Docs
-- intro --
We have developed a secure communication substrate called Switchboard. This layered architecture allows any number of security properties to be swapped in and out of the system. These include encryption, authorization, and liveness. Streams and RPC call interfaces can be exposed through Switchboard. The API can be found on this page and a more in-depth discussion can be found at switchboard-tn2003.pdf. Below will be a very high-level overview of the mechanisms provided by Switchboard and how to create Switchboard layers. This compliments the API of Switchboard.
Switchboard Wrapper Classes
For those users who wish to include all of the Switchboard layers (IO, encryption, liveness, authorization, and possibly the multiplexer and RPC layers), several wrapper calls exist to facilitate this. They can all be found in the Switchboard class. Servers that wish to allow connections to clients will call either the listen method (for streams) or the serve method (for RPC calls). Clients that want to connect will call the connect method (for streams) or the lookup method (for RPC calls).
Creating Switchboard Stacks and Layers
Those who wish to have a customized stack with already built layers can look at the SbStackAssembler class to easily assemble a stack. To build your own layer, simply create a class that extends SbLayer. Take a look at one of the already created layers for an example, but in a nutshell, the following is what you will have to do. Override the init method and call super.init(). write(Object) sends a message to a layer below. deliver(Object) sends a message up a layer.