diff --git a/src/syndicate/capabilities.nim b/src/syndicate/capabilities.nim index 718945f..0b439d9 100644 --- a/src/syndicate/capabilities.nim +++ b/src/syndicate/capabilities.nim @@ -3,6 +3,7 @@ import preserves import ./protocols/sturdy, ./private/hmacs +from ./actors import Ref export `$` @@ -13,6 +14,10 @@ proc mint*[T](key: openarray[byte]; oid: T; E = void): SturdyRef[E] = var oidPr = toPreserve(oid, E) SturdyRef[E](oid: oidPr, sig: hmacSha256(key, encode(oidPr), key.len)) +proc mint*(): SturdyRef[Ref] = + var key: array[16, byte] + cast[SturdyRef[Ref]](mint(key, "syndicate", Ref)) + proc attenuate*[T](r: SturdyRef[T]; caveats: Attenuation): SturdyRef[T] = result = SturdyRef[T]( oid: r.oid, diff --git a/tests/chat.nim b/tests/chat.nim index dd33674..3833772 100644 --- a/tests/chat.nim +++ b/tests/chat.nim @@ -5,17 +5,13 @@ import std/[asyncdispatch, os] import preserves, syndicate, syndicate/capabilities import syndicate/protocols/simpleChatProtocol -proc mintCap: SturdyRef = - var key: array[16, byte] - mint(key, "syndicate") - proc unixSocketPath: string = result = getEnv("SYNDICATE_SOCK") if result == "": result = getEnv("XDG_RUNTIME_DIR", "/run/user/1000") / "dataspace" bootDataspace("main") do (root: Ref; turn: var Turn): - connectUnix(turn, unixSocketPath(), mintCap()) do (turn: var Turn; ds: Ref): + connectUnix(turn, unixSocketPath(), capabilities.mint()) do (turn: var Turn; ds: Ref): var username: string usernameHandle: Handle diff --git a/tests/stdio_client.nim b/tests/stdio_client.nim index ade7729..78a1082 100644 --- a/tests/stdio_client.nim +++ b/tests/stdio_client.nim @@ -9,10 +9,6 @@ import syndicate/[actors, capabilities] randomize() -proc mint(): SturdyRef = - var key: array[16, byte] - mint(key, "syndicate") - type A* {.preservesRecord: "A".} = object str*: string @@ -30,7 +26,7 @@ bootDataspace("x") do (ds: Ref; turn: var Turn): bootDataspace("y") do (ds: Ref; turn: var Turn): - connectUnix(turn, "/run/user/1000/dataspace", mint()) do (turn: var Turn; a: Assertion) -> TurnAction: + connectUnix(turn, "/run/user/1000/dataspace", capabilities.mint()) do (turn: var Turn; a: Assertion) -> TurnAction: let ds = unembed a discard publish(turn, ds, A(str: "A unix"))