[][src]Crate wascc_host

waSCC Host

The WebAssembly Secure Capabilities Connector (waSCC) host runtime manages actors written in WebAssembly (aka nanoprocesses) and capability providers written in WebAssembly (via WASI) or as OS-native plugin libraries. waSCC securely manages communications between actors and the capabilities they need.

To start a runtime, simply add actors and capabilities to the host. For more information, take a look at the documentation and tutorials at wascc.dev.

Example

use std::collections::HashMap;
use wascc_host::{WasccHost, Actor, NativeCapability};

fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
   env_logger::init();
   let host = WasccHost::new();
   host.add_actor(Actor::from_file("./examples/.assets/echo.wasm")?)?;
   host.add_actor(Actor::from_file("./examples/.assets/echo2.wasm")?)?;
   host.add_native_capability(NativeCapability::from_file(
       "./examples/.assets/libwascc_httpsrv.so", None
   )?)?;

   host.bind_actor(
       "MDFD7XZ5KBOPLPHQKHJEMPR54XIW6RAG5D7NNKN22NP7NSEWNTJZP7JN",
       "wascc:http_server",
       None,
       generate_port_config(8082),
   )?;

   host.bind_actor(
       "MB4OLDIC3TCZ4Q4TGGOVAZC43VXFE2JQVRAXQMQFXUCREOOFEKOKZTY2",
       "wascc:http_server",
       None,
       generate_port_config(8081),
   )?;

   assert_eq!(2, host.actors().len());
   if let Some(ref claims) = host.claims_for_actor("MB4OLDIC3TCZ4Q4TGGOVAZC43VXFE2JQVRAXQMQFXUCREOOFEKOKZTY2") {
       let md = claims.metadata.as_ref().unwrap();
       assert!(md.caps.as_ref().unwrap().contains(&"wascc:http_server".to_string()));   
   }
    

   // Need to keep the main thread from terminating immediately
   // std::thread::park();

   Ok(())
}

fn generate_port_config(port: u16) -> HashMap<String, String> {
   let mut hm = HashMap::new();
   hm.insert("PORT".to_string(), port.to_string());

   hm
}

Modules

errors

Custom error types

Structs

Actor

An actor is a WebAssembly module that conforms to the waSCC protocols and can securely consume capabilities exposed by native or portable capability providers

BindingEntry
CapabilitySummary

Provides a summary of a registered capability provider

HostManifest
Invocation

An immutable representation of an invocation within waSCC

InvocationResponse

The response to an invocation

NativeCapability

Represents a native capability provider compiled as a shared object library. These plugins are OS- and architecture-specific, so they will be .so files on Linux, .dylib files on macOS, etc.

WasccHost

Represents an instance of a waSCC host

WasiParams

Stores the parameters required to create a WASI instance

Enums

InvocationTarget

Represents an invocation target - either an actor or a bound capability provider

Traits

Middleware

The trait that must be implemented by all waSCC middleware

Type Definitions

Result
SubjectClaimsPair