2.4 KiB
2.4 KiB
Gatekeeper and Sturdy-references
Gatekeeper protocol
The Gatekeeper protocol allows a peer to "upgrade" a SturdyRef
to a live reference to an
entity. For details of the use of Resolve
and Bind
assertions, see the guide to the
built-in gatekeeper entity.
Implementation. The protocol is implemented within the
syndicate-server
program.
Resolve = <resolve @sturdyref sturdy.SturdyRef @observer #!#!any>.
Bind = <bind @oid any @key bytes @target #!any>.
Sturdy-reference structures
A "sturdyref" is a long-lived certificate including a cryptographic signature that can be
upgraded by a gatekeeper entity to a live reference to the entity named in the sturdyref. For
an overview of SturdyRef
s, see the guide to the built-in gatekeeper
entity.
SturdyRef = <ref @oid any @caveatChain [Attenuation ...] @sig bytes>.
For detail of the interpretation of Attenuation
s, Caveat
s, Pattern
s, and Template
s, see
the Syndicate protocol specification.
Attenuation = [Caveat ...].
Caveat = Rewrite / Alts .
Rewrite = <rewrite @pattern Pattern @template Template>.
Alts = <or @alternatives [Rewrite ...]>.
Lit = <lit @value any>.
Pattern = PDiscard / PAtom / PEmbedded / PBind / PAnd / PNot / Lit / PCompound .
PDiscard = <_>.
PAtom = =Boolean / =Float / =Double / =SignedInteger / =String / =ByteString / =Symbol .
PEmbedded = =Embedded .
PBind = <bind @pattern Pattern>.
PAnd = <and @patterns [Pattern ...]>.
PNot = <not @pattern Pattern>.
PCompound =
/ @rec <rec @label any @fields [Pattern ...]>
/ @arr <arr @items [Pattern ...]>
/ @dict <dict @entries { any: Pattern ...:... }> .
Template = TAttenuate / TRef / Lit / TCompound .
TAttenuate = <attenuate @template Template @attenuation Attenuation>.
TRef = <ref @binding int>.
TCompound =
/ @rec <rec @label any @fields [Template ...]>
/ @arr <arr @items [Template ...]>
/ @dict <dict @entries { any: Template ...:... }> .