[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet-scheme] 02/02: doc: Set the new ‘c-type’ property for many netwo
From: |
gnunet |
Subject: |
[gnunet-scheme] 02/02: doc: Set the new ‘c-type’ property for many network structures. |
Date: |
Fri, 04 Feb 2022 22:07:54 +0100 |
This is an automated email from the git hooks/post-receive script.
maxime-devos pushed a commit to branch master
in repository gnunet-scheme.
commit 8814f1648f22d3ab9d6909eedb6e772b0169745b
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Fri Feb 4 21:05:02 2022 +0000
doc: Set the new ‘c-type’ property for many network structures.
* doc/scheme-gnunet.tm (Documentation): Document the ‘c-type’ property.
* NEWS: Likewise.
* gnu/gnunet/crypto/struct.scm: Use it.
* gnu/gnunet/dht/struct.scm: Likewise.
* gnu/gnunet/hashcode/struct.scm: Likewise.
* gnu/gnunet/nse/struct.scm: Likewise.
* gnu/gnunet/util/struct.scm: Likewise.
---
NEWS | 2 ++
doc/scheme-gnunet.tm | 9 +++++++++
gnu/gnunet/crypto/struct.scm | 15 ++++++++++++++-
gnu/gnunet/dht/struct.scm | 28 +++++++++++++++++++---------
gnu/gnunet/hashcode/struct.scm | 4 +++-
gnu/gnunet/nse/struct.scm | 6 ++++--
gnu/gnunet/util/struct.scm | 6 +++++-
7 files changed, 56 insertions(+), 14 deletions(-)
diff --git a/NEWS b/NEWS
index d3f71a1..ced0881 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,8 @@
- The ‘message-symbol’ network structure property is now defined for DHT
messages and documented in the manual. The aim is to make the code
a little more self-documenting and understandable.
+ - Likewise, a new ‘c-type’ property has been defined, making
+ cross-referencing between Scheme and C sources simpler.
* Changes since 0.1
** Features
- A DHT client! (gnu gnunet dht client), documented in the manual
diff --git a/doc/scheme-gnunet.tm b/doc/scheme-gnunet.tm
index fa06771..f017a84 100644
--- a/doc/scheme-gnunet.tm
+++ b/doc/scheme-gnunet.tm
@@ -629,6 +629,15 @@
can be used for \U most of the time, there's only a single such message
type, but sometimes a single structure can be used for multiple message
types.
+
+ <item*|c-type>
+
+ <label|c-type>The value is the name of the equivalent type in the C
+ implementation, if any, as a symbol. This can be useful if you know the
+ name of the C type but not the name of the Scheme type: in that case, you
+ can do <shell|git grep -F GNUNET_MessageHeader> in a git checkout of the
+ source code of Scheme-GNUnet to discover that Scheme-GNUnet's name for
+ <cpp|GNUNET_MessageHeader> is <scm|/:message-header>.
</description>
<todo|TODO: it would be nice to use the properties and documentation to
diff --git a/gnu/gnunet/crypto/struct.scm b/gnu/gnunet/crypto/struct.scm
index b485333..ea1d2f8 100644
--- a/gnu/gnunet/crypto/struct.scm
+++ b/gnu/gnunet/crypto/struct.scm
@@ -58,12 +58,13 @@
define-type structure/packed)
(only (gnu gnunet netstruct procedural)
u8vector u32/big)
- (only (rnrs base) begin))
+ (only (rnrs base) begin quote))
(begin
(define-type /eddsa-signature
(structure/packed
(synopsis "An ECC signature using EdDSA.")
(documentation "See cr.yp.to/papers.html#ed25519")
+ (properties '((c-type . GNUNET_CRYPTO_EddsaSignature)))
(field (r (u8vector 64))
(synopsis "R value"))
(field (s (u8vector 64))
@@ -72,6 +73,7 @@
(define-type /ecdsa-signature
(structure/packed
(synopsis "An ECC signature using ECDSA.")
+ (properties '((c-type . GNUNET_CRYPTO_EcdsaSignature)))
(field (r (u8vector 64))
(synopsis "R value"))
(field (s (u8vector 64))
@@ -83,6 +85,7 @@
a format suitable for network transmission and EdDSA signatures.
Refer to section 5.1.3 of rfc8032, for a thorough explanation of how this
value maps to the x- and y-coordinates.")
+ (properties '((c-type . GNUNET_CRYPTO_EddsaPublicKey)))
(field (q (u8vector 64))
(documentation "Point Q consists of a y-value mod p (256 bits);
the x-value is always positive. The point is stored in Ed25519 standard
@@ -93,6 +96,7 @@ compact format."))))
(documentation
"Public ECC key (always for Curve25519) encoded in a format suitable
for network transmission and ECDSA signatures.")
+ (properties '((c-type . GNUNET_CRYPTO_EcdsaPublicKey)))
(field (q-y (u8vector 64))
(documentation
"Q consists of an x- and a y-value, each mod p (256 bits), given
@@ -102,6 +106,7 @@ here in affine coordinates and Ed25519 standard compact
format."))))
(structure/packed
(synopsis
"The identity of the host (wraps the signing key of the peer).")
+ (properties '((c-type . GNUNET_PeerIdentity)))
(field (public-key /eddsa-public-key))))
(define-type /ecdhe-public-key
@@ -110,6 +115,7 @@ here in affine coordinates and Ed25519 standard compact
format."))))
"Public ECC key (always for Curve25519) encoded in a format suitable
for network transmission and encryption (ECDH),
See http://cr.yp.to/ecdh.html")
+ (properties '((c-type . GNUNET_CRYPTO_EcdhePublicKey)))
(field (q-y (u8vector 6))
(documentation
"Q consists of an x- and a y-value, each mod p (256 bits), given
@@ -118,6 +124,7 @@ here in affine coordinates and Ed25519 standard compact
format."))))
(define-type /ecdhe-private-key
(structure/packed
(synopsis "Private ECC key encoded for transmission")
+ (properties '((c-type . GNUNET_CRYPTO_EcdhePrivateKey)))
(documentation
"To be used only for ECDH key exchange (ECDHE to be precise)")
(field (d (u8vector 64))
@@ -129,6 +136,7 @@ here in affine coordinates and Ed25519 standard compact
format."))))
(synopsis "Private ECC key encoded for transmission")
(documentation
"To be used only for ECDSA signatures.")
+ (properties '((c-type . GNUNET_CRYPTO_EcdsaPrivatecKey)))
(field (d (u8vector 64))
(documentation
"d is a value mod n, where n has at most 256 bits"))))
@@ -137,6 +145,7 @@ here in affine coordinates and Ed25519 standard compact
format."))))
(structure/packed
(synopsis "Private ECC key encoded for transmission")
(documentation "To be used only for EdDSA signatures.")
+ (properties '((c-type . GNUNET_CRYPTO_EddsaPrivateKey)))
(field (d (u8vector 64))
(documentation
"d is a value mod n, where n has at most 256 bits."))))
@@ -144,6 +153,7 @@ here in affine coordinates and Ed25519 standard compact
format."))))
(define-type /symmetric-session-key
(structure/packed
(synopsis "Type for session keys")
+ (properties '((c-type . GNUNET_CRYPTO_SymmetricSessionKey)))
(field (aes-key (u8vector 64))
(synopsis "Actual key for AES"))
(field (twofish-key (u8vector 64))
@@ -152,6 +162,8 @@ here in affine coordinates and Ed25519 standard compact
format."))))
(define-type /challenge-nonce-p
(structure/packed
(synopsis "Type of a nonce used for challenges")
+ ;; TODO: https://bugs.gnunet.org/view.php?id=7173
+ (properties '((c-type . ChallengeNonceP)))
(field (value /hashcode:256)
(synopsis
"The value of the nonce. Note that this is NOT a hash."))))
@@ -159,6 +171,7 @@ here in affine coordinates and Ed25519 standard compact
format."))))
(define-type /ecc-signature-purpose
(structure/packed
(synopsis "Header indicating what an ECC signature signs")
+ (properties '((c-type . GNUNET_CRYPTO_EccSignaturePurpose)))
(field (size u32/big)
(synopsis "The number of bytes the signature signs"))
(field (purpose u32/big)
diff --git a/gnu/gnunet/dht/struct.scm b/gnu/gnunet/dht/struct.scm
index 5889278..98788f7 100644
--- a/gnu/gnunet/dht/struct.scm
+++ b/gnu/gnunet/dht/struct.scm
@@ -52,6 +52,7 @@
(synopsis "A (signed) path tracking a block's flow through the DHT is
represented by an array of path elements, each consisting of a peer on the path
and a signature by which the peer affirms its routing decision.")
+ (properties '((c-type . GNUNET_DHT_PathElement)))
(field (previous /peer-identity)
(synopsis "The previous peer on the path.
@@ -66,7 +67,8 @@ path element.")) ;; C GNUnet says somethin about a
non-existent ‘succ’ field
(structure/packed
(synopsis "Message indicating the DHT should cancel outstanding requests
and discard any state.")
- (properties '((message-symbol msg:dht:client:get:stop)))
+ (properties '((message-symbol msg:dht:client:get:stop)
+ (c-type . GNUNET_DHT_ClientGetStopMessage)))
(field (header /:message-header)
(synopsis "Type: msg:dht:client:get:stop"))
(field (reserved u32/big)
@@ -81,7 +83,8 @@ and discard any state.")
(structure/packed
(synopsis "DHT GET message sent from clients to service, indicating a
GET
request should be issued.")
- (properties '((message-symbol msg:dht:client:get)))
+ (properties '((message-symbol msg:dht:client:get)
+ (c-type . GNUNET_DHT_ClientGetMessage)))
(field (header /:message-header)
(synopsis "Type: msg:dht:client:get"))
(field (options u32/big)
@@ -101,7 +104,8 @@ will not expect a response"))))
(structure/packed
(synopsis "Message sent from clients to service, indicating a GET
request
should exclude certain results which are already known.")
- (properties '((message-symbol msg:dht:client:get-result-known)))
+ (properties '((message-symbol msg:dht:client:get-result-known)
+ (c-type . GNUNET_DHT_ClientGetResultSeenMessage)))
(field (header /:message-header)
(synopsis "Type: msg:dht:client:get-results-known"))
(field (reserved u32/big)
@@ -116,7 +120,8 @@ corresponding GET inside the service)."))
(define-type /:msg:dht:client:result
(structure/packed
(synopsis "Reply to a GET sent from the service to a client")
- (properties '((message-symbol msg:dht:client:result)))
+ (properties '((message-symbol msg:dht:client:result)
+ (c-type . GNUNET_DHT_ClientResultMessage)))
(field (header /:message-header)
(synopsis "Type: msg:dht:client:result"))
(field (type u32/big)
@@ -139,7 +144,8 @@ location to this peer."))
(structure/packed
(synopsis "Message to insert data into the DHT, sent from clients to DHT
service")
- (properties '((message-symbol msg:dht:client:put)))
+ (properties '((message-symbol msg:dht:client:put)
+ (c-type . GNUNET_DHT_ClientPutMessage)))
(field (header /:message-header)
(synopsis "Type msg:dht:client:put"))
(field (type u32/big)
@@ -158,7 +164,8 @@ service")
(structure/packed
(synopsis "Message to monitor put requests going through peer
(DHT service -> clients)")
- (properties '((message-symbol msg:dht:monitor:put)))
+ (properties '((message-symbol msg:dht:monitor:put)
+ (c-type . GNUNET_DHT_MonitorPutMessage)))
(field (header /:message-header)
(synopsis "Type: msg:dht:monitor:put"))
(field (options u32/big)
@@ -182,7 +189,8 @@ source to the target location of this message."))
;; TODO: also to stop monitoring messages?
(synopsis "Message to request monitoring messages, client -> DHT
service")
(properties '((message-symbol msg:dht:monitor:start
- msg:dht:monitor:stop)))
+ msg:dht:monitor:stop)
+ (c-type . GNUNET_DHT_MonitorStartStopMessage)))
(field (header /:message-header)
(synopsis "Type: msg:dht:monitor:start or msg:dht:monitor:stop"))
(field (type u32/big)
@@ -208,7 +216,8 @@ source to the target location of this message."))
(structure/packed
(synopsis "Message to monitor get requests going through peer,
DHT service -> clients.")
- (properties '((message-symbol msg:dht:monitor:get)))
+ (properties '((message-symbol msg:dht:monitor:get)
+ (c-type . GNUNET_DHT_MonitorGetMessage)))
(field (header /:message-header)
(synopsis "Type: msg:dht:monitor:get"))
(field (options u32/big)
@@ -230,7 +239,8 @@ source to the storage location of this message"))
(structure/packed
(synopsis "Message to monitor get requests going through peer,
DHT service -> clients")
- (properties '((message-symbol msg:dht:p2p:result)))
+ (properties '((message-symbol msg:dht:p2p:result)
+ (c-type . GNUNET_DHT_MonitorGetRespMessage)))
(field (header /:message-header)
;; XXX correct?
(synopsis "Type: msg:dht:p2p:result"))
diff --git a/gnu/gnunet/hashcode/struct.scm b/gnu/gnunet/hashcode/struct.scm
index 549648d..d742161 100644
--- a/gnu/gnunet/hashcode/struct.scm
+++ b/gnu/gnunet/hashcode/struct.scm
@@ -19,7 +19,7 @@
;; Extracted from src/include/gnunet_common.h
(define-library (gnu gnunet hashcode struct)
(export /hashcode:512 /hashcode:256)
- (import (only (rnrs base) begin)
+ (import (only (rnrs base) begin quote)
(only (gnu gnunet netstruct syntactic)
define-type structure/packed)
(only (gnu gnunet netstruct procedural) u8vector))
@@ -29,6 +29,7 @@
(synopsis "A 512-bit hashcode.")
(documentation
"These are the default length for GNUnet, using SHA-512.")
+ (properties '((c-type . GNUNET_HashCode)))
(field (bits/u8 (u8vector 64)))))
(define-type /hashcode:256
@@ -37,4 +38,5 @@
(documentation
"Used under special conditions, like when space
is critical and security is not impacted by it.")
+ (properties '((c-type . GNUNET_ShortHashCode)))
(field (bits/u8 (u8vector 32)))))))
diff --git a/gnu/gnunet/nse/struct.scm b/gnu/gnunet/nse/struct.scm
index 22f3607..d07b1eb 100644
--- a/gnu/gnunet/nse/struct.scm
+++ b/gnu/gnunet/nse/struct.scm
@@ -44,7 +44,8 @@
"Contains the current size estimate
(or 0 if none has been calculated) and the
standard deviation of known estimates.")
- (properties '((message-symbol msg:nse:estimate)))
+ (properties '((message-symbol msg:nse:estimate)
+ (c-type . GNUNET_NSE_ClientMessage)))
(field (header /:message-header))
(field (reserved u32/big))
(field (timestamp /time-absolute)
@@ -58,7 +59,8 @@ standard deviation of known estimates.")
(documentation
"Sent when \"this\" peer's timer has run out before receiving a
valid reply from another peer.")
- (properties '((message-symbol msg:nse:flood)))
+ (properties '((message-symbol msg:nse:flood)
+ (c-type . GNUNET_NSE_FloodMessage)))
(field (header /:message-header))
(field (hop-count u32/big)
(synopsis
diff --git a/gnu/gnunet/util/struct.scm b/gnu/gnunet/util/struct.scm
index 910f1e1..c4618b2 100644
--- a/gnu/gnunet/util/struct.scm
+++ b/gnu/gnunet/util/struct.scm
@@ -25,7 +25,7 @@
define-type structure/packed)
(only (gnu gnunet netstruct procedural)
u8vector u16/big u32/big u64/big)
- (only (rnrs base) begin))
+ (only (rnrs base) begin quote))
(begin
;; Absolute time (in GNUnet), in microseconds
(define-type /time-absolute u64/big)
@@ -33,6 +33,7 @@
(define-type /uuid
(structure/packed
(synopsis "A UUID, a 128 bit random value")
+ (properties '((c-type . GNUNET_Uuid)))
(field (value/u8 (u8vector 16))
(synopsis "128 random bits")
(documentation
@@ -45,6 +46,7 @@
(define-type /:message-header
(structure/packed
(synopsis "Header for all communications")
+ (properties '((c-type . GNUNET_MessageHeader)))
(field (size u16/big)
(documentation
"The length of the struct (in bytes, including the length
@@ -60,6 +62,7 @@ in big-endian format."))))
(structure/packed
(synopsis "Answer from service to client about last operation")
(documentation "Possibly followed by data")
+ (properties '((c-type . GNUNET_OperationResultMessage)))
(field (header /:message-header))
(field (reserved u32/big))
(field (operation-id u64/big)
@@ -72,4 +75,5 @@ in big-endian format."))))
(synopsis "Identifier for an asynchronous execution context")
(documentation
"This is represented as an array of uint32_t in GNUnet.")
+ (properties '((c-type . GNUNET_AsyncScopeId)))
(field (bits/u8 (u8vector 16)))))))
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.