aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Devos <maximedevos@telenet.be>2022-11-30 11:50:00 +0100
committerMaxime Devos <maximedevos@telenet.be>2022-11-30 11:50:00 +0100
commit0ea9aa3acd870f7f0e3abda0cb984337e8d557fe (patch)
tree971bbaedf0d590d4c1e2eece1b2e6e562ec97383
parent7705ec2b72849b33d2c0b87d10939a28e057011a (diff)
downloadgnunet-scheme-0ea9aa3acd870f7f0e3abda0cb984337e8d557fe.tar.gz
gnunet-scheme-0ea9aa3acd870f7f0e3abda0cb984337e8d557fe.zip
fs/network: Define analyse-request-loc-signature.
Counterpart to construct-request-loc-signature.
-rw-r--r--gnu/gnunet/fs/network.scm32
1 files changed, 26 insertions, 6 deletions
diff --git a/gnu/gnunet/fs/network.scm b/gnu/gnunet/fs/network.scm
index 981ecac..4b3b01c 100644
--- a/gnu/gnunet/fs/network.scm
+++ b/gnu/gnunet/fs/network.scm
@@ -19,22 +19,25 @@
19 19
20;; TODO: untested 20;; TODO: untested
21(define-library (gnu gnunet fs network) 21(define-library (gnu gnunet fs network)
22 (export construct-request-loc-signature) 22 (export construct-request-loc-signature analyse-request-loc-signature)
23 (import (only (rnrs base) define define-syntax quote) 23 (import (only (rnrs base) define define-syntax quote values)
24 (only (guile) begin define*) 24 (only (guile) begin define*)
25 (only (gnu gnunet utils bv-slice) 25 (only (gnu gnunet utils bv-slice)
26 make-slice/read-write slice-copy! slice-length ) 26 make-slice/read-write slice-copy! slice-length )
27 (only (gnu gnunet utils hat-let) let^)
27 (only (gnu extractor enum) value->index symbol-value) 28 (only (gnu extractor enum) value->index symbol-value)
28 (only (gnu gnunet message protocols) message-type) 29 (only (gnu gnunet message protocols) message-type)
29 (only (gnu gnunet fs struct) /:msg:fs:request-loc-signature) 30 (only (gnu gnunet fs struct)
31 /content-hash-key /:msg:fs:request-loc-signature)
30 (only (gnu gnunet fs uri) 32 (only (gnu gnunet fs uri)
31 chk-key ;; TODO rename 33 chk-key ;; TODO rename
32 chk-query) 34 chk-query
35 make-content-hash-key/share)
33 (only (gnu gnunet hashcode) 36 (only (gnu gnunet hashcode)
34 hashcode:512->slice) 37 hashcode:512->slice)
35 (only (gnu gnunet utils cut-syntax) cut-syntax) 38 (only (gnu gnunet utils cut-syntax) cut-syntax)
36 (only (gnu gnunet netstruct syntactic) 39 (only (gnu gnunet netstruct syntactic)
37 set%! sizeof select)) 40 set%! sizeof select read%))
38 (begin 41 (begin
39 ;; GNUNET_SIGNATURE_PURPOSE_PEER_PLACEMENT, 42 ;; GNUNET_SIGNATURE_PURPOSE_PEER_PLACEMENT,
40 ;; (see gnunet-signatures/gnunet_signatures.rst) 43 ;; (see gnunet-signatures/gnunet_signatures.rst)
@@ -67,4 +70,21 @@ expiring at @var{expiration-time} (TODO type), for @var{purpose}
67 (hashcode:512->slice (chk-query content-hash-key)) 70 (hashcode:512->slice (chk-query content-hash-key))
68 (select* '(content-hash-key query))) 71 (select* '(content-hash-key query)))
69 (set%!* '(file-length) file-length) 72 (set%!* '(file-length) file-length)
70 s))) 73 s)
74
75 (define (analyse-request-loc-signature message)
76 "Return the file length, content hash key, expiration time (TODO type)
77and signature purpose corresponding to the @code{/:msg:fs:request-loc-signature}
78message @var{message}."
79 (let^ ((! file-length
80 (read% /:msg:fs:request-loc-signature '(file-length) message))
81 (! content-hash-key
82 (make-content-hash-key/share
83 (select /:msg:fs:request-loc-signature
84 '(content-hash-key) message)))
85 (! expiration-time
86 (read% /:msg:fs:request-loc-signature
87 '(expiration-time) message))
88 (! purpose
89 (read% /:msg:fs:request-loc-signature '(purpose) message)))
90 (values file-length content-hash-key expiration-time purpose)))))