diff options
author | Maxime Devos <maximedevos@telenet.be> | 2022-11-30 11:50:00 +0100 |
---|---|---|
committer | Maxime Devos <maximedevos@telenet.be> | 2022-11-30 11:50:00 +0100 |
commit | 0ea9aa3acd870f7f0e3abda0cb984337e8d557fe (patch) | |
tree | 971bbaedf0d590d4c1e2eece1b2e6e562ec97383 | |
parent | 7705ec2b72849b33d2c0b87d10939a28e057011a (diff) | |
download | gnunet-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.scm | 32 |
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) | ||
77 | and signature purpose corresponding to the @code{/:msg:fs:request-loc-signature} | ||
78 | message @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))))) | ||