From 5a52f243e5654dd09e2077b4a83320934044e5fc Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 8 Feb 2023 23:11:05 +0100 Subject: [PATCH] Adjust steps in noise and sturdy --- schema-bundle.bin | 20 ++++++++++++-------- schemas/noise.prs | 14 ++++++++------ schemas/sturdy.prs | 28 +++++++++++++++++++++++----- 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/schema-bundle.bin b/schema-bundle.bin index 478b7f3..8c907db 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -8,9 +8,9 @@ ByteString ByteString„„µ± fragmented“³seqof“³atom³ ByteString„„„„„³ NoiseSpec“³andµ“³dict·³key“³named³key“³atom³ -ByteString„„³service“³named³service“³refµ„³ServiceSelector„„„„“³named³protocol“³refµ„³ NoiseProtocol„„“³named³ preSharedKeys“³refµ„³NoisePreSharedKeys„„„„³ NoiseStep“³rec“³lit³noise„“³tupleµ“³named³service“³refµ„³ServiceSelector„„„„„³ NoiseService“³rec“³lit³noise„“³tupleµ“³named³spec“³refµ„³NoiseServiceSpec„„„„„³ NoiseProtocol“³orµµ±present“³dict·³protocol“³named³protocol“³atom³String„„„„„µ±invalid“³dict·³protocol“³named³protocol³any„„„„µ±absent“³dict·„„„„„³NoiseRouteStep“³rec“³lit³noise„“³tupleµ“³named³spec“³refµ„³ NoiseSpec„„„„„³SecretKeyField“³orµµ±present“³dict·³ secretKey“³named³ secretKey“³atom³ -ByteString„„„„„µ±invalid“³dict·³ secretKey“³named³ secretKey³any„„„„µ±absent“³dict·„„„„„³DefaultProtocol“³lit±!Noise_NK_25519_ChaChaPoly_BLAKE2s„³ServiceSelector³any³NoiseServiceSpec“³andµ“³named³base“³refµ³noise„³ NoiseSpec„„“³named³ secretKey“³refµ„³SecretKeyField„„„„³NoisePreSharedKeys“³orµµ±present“³dict·³ preSharedKeys“³named³ preSharedKeys“³seqof“³atom³ -ByteString„„„„„„µ±invalid“³dict·³ preSharedKeys“³named³ preSharedKeys³any„„„„µ±absent“³dict·„„„„„„³ embeddedType€„„µ³timer„“³schema·³version‘³ definitions·³SetTimer“³rec“³lit³ set-timer„“³tupleµ“³named³label³any„“³named³seconds“³atom³Double„„“³named³kind“³refµ„³ TimerKind„„„„„³ LaterThan“³rec“³lit³ +ByteString„„³service“³named³service“³refµ„³ServiceSelector„„„„“³named³protocol“³refµ„³ NoiseProtocol„„“³named³ preSharedKeys“³refµ„³NoisePreSharedKeys„„„„³ NoiseProtocol“³orµµ±present“³dict·³protocol“³named³protocol“³atom³String„„„„„µ±invalid“³dict·³protocol“³named³protocol³any„„„„µ±absent“³dict·„„„„„³ NoiseStepType“³lit³noise„³SecretKeyField“³orµµ±present“³dict·³ secretKey“³named³ secretKey“³atom³ +ByteString„„„„„µ±invalid“³dict·³ secretKey“³named³ secretKey³any„„„„µ±absent“³dict·„„„„„³DefaultProtocol“³lit±!Noise_NK_25519_ChaChaPoly_BLAKE2s„³NoiseStepDetail“³refµ„³ServiceSelector„³ServiceSelector³any³NoiseServiceSpec“³andµ“³named³base“³refµ³noise„³ NoiseSpec„„“³named³ secretKey“³refµ„³SecretKeyField„„„„³NoisePreSharedKeys“³orµµ±present“³dict·³ preSharedKeys“³named³ preSharedKeys“³seqof“³atom³ +ByteString„„„„„„µ±invalid“³dict·³ preSharedKeys“³named³ preSharedKeys³any„„„„µ±absent“³dict·„„„„„³NoisePathStepDetail“³refµ„³ NoiseSpec„³NoiseDescriptionDetail“³rec“³lit³noise„“³tupleµ“³named³spec“³refµ„³NoiseServiceSpec„„„„„„³ embeddedType€„„µ³timer„“³schema·³version‘³ definitions·³SetTimer“³rec“³lit³ set-timer„“³tupleµ“³named³label³any„“³named³seconds“³atom³Double„„“³named³kind“³refµ„³ TimerKind„„„„„³ LaterThan“³rec“³lit³ later-than„“³tupleµ“³named³seconds“³atom³Double„„„„„³ TimerKind“³orµµ±relative“³lit³relative„„µ±absolute“³lit³absolute„„µ±clear“³lit³clear„„„„³ TimerExpired“³rec“³lit³ timer-expired„“³tupleµ“³named³label³any„“³named³seconds“³atom³Double„„„„„„³ embeddedType€„„µ³trace„“³schema·³version‘³ definitions·³Oid³any³Name“³orµµ± anonymous“³rec“³lit³ anonymous„“³tupleµ„„„„µ±named“³rec“³lit³named„“³tupleµ“³named³name³any„„„„„„„³Target“³rec“³lit³entity„“³tupleµ“³named³actor“³refµ„³ActorId„„“³named³facet“³refµ„³FacetId„„“³named³oid“³refµ„³Oid„„„„„³TaskId³any³TurnId³any³ActorId³any³FacetId³any³ TurnCause“³orµµ±turn“³rec“³lit³ caused-by„“³tupleµ“³named³id“³refµ„³TurnId„„„„„„µ±cleanup“³rec“³lit³cleanup„“³tupleµ„„„„µ±linkedTaskRelease“³rec“³lit³linked-task-release„“³tupleµ“³named³id“³refµ„³TaskId„„“³named³reason“³refµ„³LinkedTaskReleaseReason„„„„„„µ±periodicActivation“³rec“³lit³periodic-activation„“³tupleµ“³named³period“³atom³Double„„„„„„µ±delay“³rec“³lit³delay„“³tupleµ“³named³ causingTurn“³refµ„³TurnId„„“³named³amount“³atom³Double„„„„„„µ±external“³rec“³lit³external„“³tupleµ“³named³ description³any„„„„„„„³ TurnEvent“³orµµ±assert“³rec“³lit³assert„“³tupleµ“³named³ assertion“³refµ„³AssertionDescription„„“³named³handle“³refµ³protocol„³Handle„„„„„„µ±retract“³rec“³lit³retract„“³tupleµ“³named³handle“³refµ³protocol„³Handle„„„„„„µ±message“³rec“³lit³message„“³tupleµ“³named³body“³refµ„³AssertionDescription„„„„„„µ±sync“³rec“³lit³sync„“³tupleµ“³named³peer“³refµ„³Target„„„„„„µ± breakLink“³rec“³lit³ break-link„“³tupleµ“³named³source“³refµ„³ActorId„„“³named³handle“³refµ³protocol„³Handle„„„„„„„„³ ExitStatus“³orµµ±ok“³lit³ok„„µ±Error“³refµ³protocol„³Error„„„„³ @@ -24,11 +24,15 @@ controller ByteString“³lit³ ByteString„„µ±Symbol“³lit³Symbol„„„„³PBind“³rec“³lit³bind„“³tupleµ“³named³pattern“³refµ„³Pattern„„„„„³Caveat“³orµµ±Rewrite“³refµ„³Rewrite„„µ±Alts“³refµ„³Alts„„µ±Reject“³refµ„³Reject„„µ±unknown³any„„„³Reject“³rec“³lit³reject„“³tupleµ“³named³pattern“³refµ„³Pattern„„„„„³Pattern“³orµµ±PDiscard“³refµ„³PDiscard„„µ±PAtom“³refµ„³PAtom„„µ± PEmbedded“³refµ„³ PEmbedded„„µ±PBind“³refµ„³PBind„„µ±PAnd“³refµ„³PAnd„„µ±PNot“³refµ„³PNot„„µ±Lit“³refµ„³Lit„„µ± PCompound“³refµ„³ PCompound„„„„³Rewrite“³rec“³lit³rewrite„“³tupleµ“³named³pattern“³refµ„³Pattern„„“³named³template“³refµ„³Template„„„„„³WireRef“³orµµ±mine“³tupleµ“³lit„“³named³oid“³refµ„³Oid„„„„„µ±yours“³ tuplePrefixµ“³lit‘„“³named³oid“³refµ„³Oid„„„“³named³ attenuation“³seqof“³refµ„³Caveat„„„„„„„³PDiscard“³rec“³lit³_„“³tupleµ„„„³Template“³orµµ± TAttenuate“³refµ„³ -TAttenuate„„µ±TRef“³refµ„³TRef„„µ±Lit“³refµ„³Lit„„µ± TCompound“³refµ„³ TCompound„„„„³ PCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Pattern„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Pattern„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Pattern„„„„„„„„„³ PEmbedded“³lit³Embedded„³ SturdyRef“³rec“³lit³ref„“³tupleµ“³named³oid³any„“³named³ caveatChain“³seqof“³refµ„³Caveat„„„“³named³sig“³atom³ -ByteString„„„„„³ TCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Template„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Template„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Template„„„„„„„„„³ -SturdyStep“³refµ„³ SturdyRef„³ -TAttenuate“³rec“³lit³ attenuate„“³tupleµ“³named³template“³refµ„³Template„„“³named³ attenuation“³seqof“³refµ„³Caveat„„„„„„³ SturdyService“³rec“³lit³ref„“³tupleµ“³named³oid³any„“³named³key“³atom³ -ByteString„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³worker„“³schema·³version‘³ definitions·³Instance“³rec“³lit³Instance„“³tupleµ“³named³name“³atom³String„„“³named³argument³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³service„“³schema·³version‘³ definitions·³State“³orµµ±started“³lit³started„„µ±ready“³lit³ready„„µ±failed“³lit³failed„„µ±complete“³lit³complete„„µ± userDefined³any„„„³ +TAttenuate„„µ±TRef“³refµ„³TRef„„µ±Lit“³refµ„³Lit„„µ± TCompound“³refµ„³ TCompound„„„„³ PCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Pattern„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Pattern„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Pattern„„„„„„„„„³ PEmbedded“³lit³Embedded„³ SturdyRef“³rec“³lit³ref„“³tupleµ“³named³ +parameters“³refµ„³ +Parameters„„„„„³ TCompound“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„“³named³fields“³seqof“³refµ„³Template„„„„„„„µ±arr“³rec“³lit³arr„“³tupleµ“³named³items“³seqof“³refµ„³Template„„„„„„„µ±dict“³rec“³lit³dict„“³tupleµ“³named³entries“³dictof³any“³refµ„³Template„„„„„„„„„³ +Parameters“³andµ“³dict·³oid“³named³oid³any„³sig“³named³sig“³atom³ +ByteString„„„„“³named³caveats“³refµ„³ CaveatsField„„„„³ +TAttenuate“³rec“³lit³ attenuate„“³tupleµ“³named³template“³refµ„³Template„„“³named³ attenuation“³seqof“³refµ„³Caveat„„„„„„³ CaveatsField“³orµµ±present“³dict·³caveats“³named³caveats“³seqof“³refµ„³Caveat„„„„„„µ±invalid“³dict·³caveats“³named³caveats³any„„„„µ±absent“³dict·„„„„„³SturdyStepType“³lit³ref„³SturdyStepDetail“³refµ„³ +Parameters„³SturdyPathStepDetail“³refµ„³ +Parameters„³SturdyDescriptionDetail“³dict·³key“³named³key“³atom³ +ByteString„„³oid“³named³oid³any„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³worker„“³schema·³version‘³ definitions·³Instance“³rec“³lit³Instance„“³tupleµ“³named³name“³atom³String„„“³named³argument³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³service„“³schema·³version‘³ definitions·³State“³orµµ±started“³lit³started„„µ±ready“³lit³ready„„µ±failed“³lit³failed„„µ±complete“³lit³complete„„µ± userDefined³any„„„³ RunService“³rec“³lit³ run-service„“³tupleµ“³named³ serviceName³any„„„„³ ServiceState“³rec“³lit³ service-state„“³tupleµ“³named³ serviceName³any„“³named³state“³refµ„³State„„„„„³ ServiceObject“³rec“³lit³service-object„“³tupleµ“³named³ serviceName³any„“³named³object³any„„„„³RequireService“³rec“³lit³require-service„“³tupleµ“³named³ serviceName³any„„„„³RestartService“³rec“³lit³restart-service„“³tupleµ“³named³ serviceName³any„„„„³ServiceDependency“³rec“³lit³ depends-on„“³tupleµ“³named³depender³any„“³named³dependee“³refµ„³ ServiceState„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³protocol„“³schema·³version‘³ definitions·³Oid“³atom³ SignedInteger„³Sync“³rec“³lit³sync„“³tupleµ“³named³peer“³embedded“³lit„„„„„„³Turn“³seqof“³refµ„³ TurnEvent„„³Error“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„“³named³detail³any„„„„³Event“³orµµ±Assert“³refµ„³Assert„„µ±Retract“³refµ„³Retract„„µ±Message“³refµ„³Message„„µ±Sync“³refµ„³Sync„„„„³Assert“³rec“³lit³assert„“³tupleµ“³named³ assertion“³refµ„³ Assertion„„“³named³handle“³refµ„³Handle„„„„„³Handle“³atom³ SignedInteger„³Packet“³orµµ±Turn“³refµ„³Turn„„µ±Error“³refµ„³Error„„µ± Extension“³refµ„³ Extension„„„„³Message“³rec“³lit³message„“³tupleµ“³named³body“³refµ„³ Assertion„„„„„³Retract“³rec“³lit³retract„“³tupleµ“³named³handle“³refµ„³Handle„„„„„³ Assertion³any³ Extension“³rec“³named³label³any„“³named³fields“³seqof³any„„„³ TurnEvent“³tupleµ“³named³oid“³refµ„³Oid„„“³named³event“³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„“³schema·³version‘³ definitions·³Observe“³rec“³lit³Observe„“³tupleµ“³named³pattern“³refµ³dataspacePatterns„³Pattern„„“³named³observer“³embedded³any„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ gatekeeper„“³schema·³version‘³ definitions·³Bind“³rec“³lit³bind„“³tupleµ“³named³ description“³refµ„³ Description„„“³named³target“³embedded³any„„“³named³observer“³refµ„³ BindObserver„„„„„³Step“³rec“³named³stepType“³atom³Symbol„„“³tupleµ“³named³detail³any„„„„³Bound“³orµµ±bound“³rec“³lit³bound„“³tupleµ“³named³step³any„„„„„µ±Rejected“³refµ„³Rejected„„„„³Route“³rec“³lit³route„“³ tuplePrefixµ“³named³ diff --git a/schemas/noise.prs b/schemas/noise.prs index 24219cb..4e64c6c 100644 --- a/schemas/noise.prs +++ b/schemas/noise.prs @@ -5,14 +5,16 @@ version 1 . ;--------------------------------------------------------------------------- ; Binding and connection -; A gatekeeper.Step for use with `gatekeeper.Resolve`. -NoiseStep = . +NoiseStepType = =noise . -; A gatekeeper.PathStep for use in a `gatekeeper.Route`. -NoiseRouteStep = . +; In a gatekeeper.Step, use ServiceSelector as detail. +NoiseStepDetail = ServiceSelector . -; A gatekeeper.Description for use with `gatekeeper.Bind` etc. -NoiseService = . +; In a gatekeeper.PathStep, use a NoiseSpec as detail. +NoisePathStepDetail = NoiseSpec . + +; In a gatekeeper.Description, use a NoiseServiceSpec as detail. +NoiseDescriptionDetail = . ;--------------------------------------------------------------------------- ; Specification of target and bind addresses diff --git a/schemas/sturdy.prs b/schemas/sturdy.prs index 2381af0..3be0e23 100644 --- a/schemas/sturdy.prs +++ b/schemas/sturdy.prs @@ -1,10 +1,23 @@ version 1 . embeddedType EntityRef.Cap . -; Serves as both gatekeeper.Step and gatekeeper.PathStep. -SturdyStep = SturdyRef . -; A gatekeeper.Description. -SturdyService = . +;--------------------------------------------------------------------------- +; Binding and connection + +SturdyStepType = =ref . + +; In a gatekeeper.Step or gatekeeper.PathStep, use Parameters as detail. +SturdyStepDetail = Parameters . +SturdyPathStepDetail = Parameters . + +; In a gatekeeper.Description, use the following detail. +SturdyDescriptionDetail = { + oid: any, + key: bytes, +} . + +;--------------------------------------------------------------------------- +; Macaroons ; The sequence of Caveats is run RIGHT-TO-LEFT. ; That is, the newest Caveats are at the right. @@ -15,7 +28,12 @@ SturdyService = . ; ; The `sig` is then f(f(f(f(k, e(oid)), ...), e(Caveat)), ...). ; -SturdyRef = . +SturdyRef = . +Parameters = { + oid: any, + sig: bytes, +} & @caveats CaveatsField . +CaveatsField = @present { caveats: [Caveat ...] } / @invalid { caveats: any } / @absent {} . ; embodies 1st-party caveats over assertion structure, but nothing else ; can add 3rd-party caveats and richer predicates later