From da0d2b8e6134904e84bcca5605b8e3395ab5591d Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 8 Jun 2021 09:21:54 +0200 Subject: [PATCH] attenuate-entity-ref as well as attenuate-sturdy --- syndicate/actor.rkt | 9 +++++++++ syndicate/rewrite.rkt | 1 + syndicate/sturdy.rkt | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/syndicate/actor.rkt b/syndicate/actor.rkt index 63cff90..e20b9f7 100644 --- a/syndicate/actor.rkt +++ b/syndicate/actor.rkt @@ -6,6 +6,7 @@ (rename-out [make-entity entity]) (struct-out entity-ref) + attenuate-entity-ref parse-Ref Ref->preserves @@ -432,3 +433,11 @@ (define (deliver maybe-proc . args) (when maybe-proc (apply maybe-proc args))) + +;; TODO: prove to myself I've gotten the order correct. (Right-to-left, wasn't it?!?!) +(define (attenuate-entity-ref r . caveats) + (if (null? caveats) + r + (match r + [(entity-ref relay target previous-attenuation) + (entity-ref relay target (append previous-attenuation caveats))]))) diff --git a/syndicate/rewrite.rkt b/syndicate/rewrite.rkt index 0519232..3c163d8 100644 --- a/syndicate/rewrite.rkt +++ b/syndicate/rewrite.rkt @@ -90,6 +90,7 @@ [(Caveat-Rewrite r) (rewrite r v)])) +;; TODO: prove to myself I've gotten the order correct. (Right-to-left, wasn't it?!?!) (define (run-rewrites attenuation v) (let loop ((stages attenuation) (v v)) (match stages diff --git a/syndicate/sturdy.rkt b/syndicate/sturdy.rkt index b0fabfa..c0b9759 100644 --- a/syndicate/sturdy.rkt +++ b/syndicate/sturdy.rkt @@ -15,7 +15,7 @@ sturdy-encode sturdy-decode mint - attenuate + attenuate-sturdy SturdyRef-valid? validate (all-from-out "schemas/gen/sturdy.rkt")) @@ -47,7 +47,7 @@ (define (mint oid key) (SturdyRef oid '() (hmac-sha256 key (sturdy-encode oid)))) -(define (attenuate r . attenuation) +(define (attenuate-sturdy r . attenuation) (match-define (SturdyRef oid caveatChain sig) r) (SturdyRef oid (append caveatChain (list attenuation))