aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBernd Fix <brf@hoi-polloi.org>2023-07-04 09:54:56 +0200
committerBernd Fix <brf@hoi-polloi.org>2023-07-04 09:54:56 +0200
commit920de01ad2fcdc07e33c36700cd99cd39ea5dde6 (patch)
treedaa0f05debfcc9e0b2b6fbab4f2038e22fed94cd /src
parent334697d1e6a728c3129fa3835ec3c1ca1a59ab06 (diff)
downloadgnunet-go-920de01ad2fcdc07e33c36700cd99cd39ea5dde6.tar.gz
gnunet-go-920de01ad2fcdc07e33c36700cd99cd39ea5dde6.zip
crypto/gns: fixed serialization of ZonePrivate. Updated tests.v0.1.41
Diffstat (limited to 'src')
-rw-r--r--src/gnunet/crypto/gns.go9
-rw-r--r--src/gnunet/crypto/gns_pkey.go2
-rw-r--r--src/gnunet/go.mod6
-rw-r--r--src/gnunet/go.sum37
-rw-r--r--src/gnunet/service/gns/rfc-data_test.go157
-rw-r--r--src/gnunet/service/gns/rfc_test.go118
6 files changed, 244 insertions, 85 deletions
diff --git a/src/gnunet/crypto/gns.go b/src/gnunet/crypto/gns.go
index fe12b09..9486f66 100644
--- a/src/gnunet/crypto/gns.go
+++ b/src/gnunet/crypto/gns.go
@@ -288,10 +288,7 @@ func (zk *ZonePrivate) IsNull() bool {
288 288
289// Bytes returns the binary representation 289// Bytes returns the binary representation
290func (zp *ZonePrivate) Bytes() []byte { 290func (zp *ZonePrivate) Bytes() []byte {
291 buf := new(bytes.Buffer) 291 return zp.impl.Bytes()
292 _ = binary.Write(buf, binary.BigEndian, zp.Type)
293 _, _ = buf.Write(zp.KeyData)
294 return buf.Bytes()
295} 292}
296 293
297// KeySize returns the number of bytes of a key representation. 294// KeySize returns the number of bytes of a key representation.
@@ -305,9 +302,11 @@ func (zp *ZonePrivate) KeySize() uint {
305 302
306// Derive key (key blinding) 303// Derive key (key blinding)
307func (zp *ZonePrivate) Derive(label, context string) (dzp *ZonePrivate, h *math.Int, err error) { 304func (zp *ZonePrivate) Derive(label, context string) (dzp *ZonePrivate, h *math.Int, err error) {
308 // calculate derived key 305 // calculate blinding value
309 key := zp.Public().KeyData 306 key := zp.Public().KeyData
310 h = deriveH(key, label, context) 307 h = deriveH(key, label, context)
308
309 // derive private implementation
311 var derived ZonePrivateImpl 310 var derived ZonePrivateImpl
312 if derived, h, err = zp.impl.Derive(h); err != nil { 311 if derived, h, err = zp.impl.Derive(h); err != nil {
313 return 312 return
diff --git a/src/gnunet/crypto/gns_pkey.go b/src/gnunet/crypto/gns_pkey.go
index f1bb110..0f91af9 100644
--- a/src/gnunet/crypto/gns_pkey.go
+++ b/src/gnunet/crypto/gns_pkey.go
@@ -53,7 +53,7 @@ func init() {
53} 53}
54 54
55//---------------------------------------------------------------------- 55//----------------------------------------------------------------------
56// Private key 56// Public key
57//---------------------------------------------------------------------- 57//----------------------------------------------------------------------
58 58
59// PKEYPublicImpl implements the public key scheme. 59// PKEYPublicImpl implements the public key scheme.
diff --git a/src/gnunet/go.mod b/src/gnunet/go.mod
index e45a035..07231a5 100644
--- a/src/gnunet/go.mod
+++ b/src/gnunet/go.mod
@@ -3,7 +3,7 @@ module gnunet
3go 1.19 3go 1.19
4 4
5require ( 5require (
6 github.com/bfix/gospel v1.2.22 6 github.com/bfix/gospel v1.2.24
7 github.com/go-redis/redis/v8 v8.11.5 7 github.com/go-redis/redis/v8 v8.11.5
8 github.com/go-sql-driver/mysql v1.6.0 8 github.com/go-sql-driver/mysql v1.6.0
9 github.com/gorilla/mux v1.8.0 9 github.com/gorilla/mux v1.8.0
@@ -14,7 +14,9 @@ require (
14) 14)
15 15
16require ( 16require (
17 github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310 // indirect
17 github.com/cespare/xxhash/v2 v2.1.2 // indirect 18 github.com/cespare/xxhash/v2 v2.1.2 // indirect
19 github.com/cloudflare/circl v1.3.3 // indirect
18 github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect 20 github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
19 github.com/huin/goupnp v1.0.0 // indirect 21 github.com/huin/goupnp v1.0.0 // indirect
20 golang.org/x/mod v0.8.0 // indirect 22 golang.org/x/mod v0.8.0 // indirect
@@ -24,4 +26,4 @@ require (
24 golang.org/x/tools v0.6.0 // indirect 26 golang.org/x/tools v0.6.0 // indirect
25) 27)
26 28
27// replace github.com/bfix/gospel v1.2.22 => ../gospel 29// replace github.com/bfix/gospel v1.2.24 => ../gospel
diff --git a/src/gnunet/go.sum b/src/gnunet/go.sum
index c7c04b9..9fbacd8 100644
--- a/src/gnunet/go.sum
+++ b/src/gnunet/go.sum
@@ -1,7 +1,13 @@
1github.com/bfix/gospel v1.2.22 h1:b7hChvq4Cn/+KZDiaE0bKBx7b6L+aObbjR1dj6V5f9o= 1github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310 h1:dGAdTcqheKrQ/TW76sAcmO2IorwXplUw2inPkOzykbw=
2github.com/bfix/gospel v1.2.22/go.mod h1:cdu63bA9ZdfeDoqZ+vnWOcbY9Puwdzmf5DMxMGMznRI= 2github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
3github.com/bfix/gospel v1.2.24 h1:QiEhgZPk3QjNRMq/3pWQThLbm3U7RA+YATyPScGLhss=
4github.com/bfix/gospel v1.2.24/go.mod h1:Nd9c/DuMKFhZvUokW4vmRmrbNSTnyJL5cUplA2/7SC0=
5github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
3github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= 6github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
4github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 7github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
8github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
9github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
10github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
5github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= 11github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
6github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= 12github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
7github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= 13github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
@@ -24,45 +30,64 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
24github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= 30github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
25github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= 31github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
26github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= 32github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
33github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
27golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 34golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
28golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 35golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
29golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= 36golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
37golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
30golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= 38golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
31golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= 39golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
32golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 40golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
41golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
33golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= 42golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
34golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 43golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
35golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 44golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
36golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 45golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
37golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 46golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
47golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
38golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= 48golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
39golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 49golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
50golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
51golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
52golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
40golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= 53golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
41golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= 54golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
42golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 55golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
43golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 56golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
57golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
44golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= 58golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
59golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
45golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 60golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
46golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 61golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
47golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
48golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 62golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
49golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 63golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
50golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 64golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
51golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 65golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
66golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
52golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 67golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
68golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
69golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
70golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
71golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
72golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
53golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= 73golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
54golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 74golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
55golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
56golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 75golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
76golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
77golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
78golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
57golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 79golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
58golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 80golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
59golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
60golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 81golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
82golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
83golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
84golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
61golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= 85golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
62golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 86golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
63golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 87golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
64golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 88golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
65golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 89golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
90golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
66golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= 91golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
67golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 92golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
68golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 93golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/src/gnunet/service/gns/rfc-data_test.go b/src/gnunet/service/gns/rfc-data_test.go
index bb876e1..28d76dd 100644
--- a/src/gnunet/service/gns/rfc-data_test.go
+++ b/src/gnunet/service/gns/rfc-data_test.go
@@ -34,22 +34,25 @@ type Enc struct {
34} 34}
35 35
36type TestCase struct { 36type TestCase struct {
37 Zpk []byte 37 Zprv []byte
38 Zid []byte 38 Zid []byte
39 Ztld string 39 Ztld string
40 Label string 40 Label string
41 Q []byte 41 Dzprv []byte
42 Recs []*Rec 42 Dzpub []byte
43 Rdata []byte 43 Q []byte
44 Enc *Enc 44 Recs []*Rec
45 Bdata []byte 45 Rdata []byte
46 Enc *Enc
47 Bdata []byte
48
46 RRblock []byte 49 RRblock []byte
47} 50}
48 51
49var tests = []*TestCase{ 52var tests = []*TestCase{
50 // Testcase #1 53 // Testcase #1
51 { 54 {
52 Zpk: []byte{ 55 Zprv: []byte{
53 0x50, 0xd7, 0xb6, 0x52, 0xa4, 0xef, 0xea, 0xdf, 0xf3, 0x73, 0x96, 0x90, 0x97, 0x85, 0xe5, 0x95, 56 0x50, 0xd7, 0xb6, 0x52, 0xa4, 0xef, 0xea, 0xdf, 0xf3, 0x73, 0x96, 0x90, 0x97, 0x85, 0xe5, 0x95,
54 0x21, 0x71, 0xa0, 0x21, 0x78, 0xc8, 0xe7, 0xd4, 0x50, 0xfa, 0x90, 0x79, 0x25, 0xfa, 0xfd, 0x98, 57 0x21, 0x71, 0xa0, 0x21, 0x78, 0xc8, 0xe7, 0xd4, 0x50, 0xfa, 0x90, 0x79, 0x25, 0xfa, 0xfd, 0x98,
55 }, 58 },
@@ -58,7 +61,19 @@ var tests = []*TestCase{
58 0x67, 0x7c, 0x47, 0x7d, 0x2d, 0x93, 0x09, 0x7c, 0x85, 0xb1, 0x95, 0xc6, 0xf9, 0x6d, 0x84, 0xff, 61 0x67, 0x7c, 0x47, 0x7d, 0x2d, 0x93, 0x09, 0x7c, 0x85, 0xb1, 0x95, 0xc6, 0xf9, 0x6d, 0x84, 0xff,
59 0x61, 0xf5, 0x98, 0x2c, 0x2c, 0x4f, 0xe0, 0x2d, 0x5a, 0x11, 0xfe, 0xdf, 0xb0, 0xc2, 0x90, 0x1f, 62 0x61, 0xf5, 0x98, 0x2c, 0x2c, 0x4f, 0xe0, 0x2d, 0x5a, 0x11, 0xfe, 0xdf, 0xb0, 0xc2, 0x90, 0x1f,
60 }, 63 },
61 Ztld: "000G0037FH3QTBCK15Y8BCCNRVWPV17ZC7TSGB1C9ZG2TPGHZVFV1GMG3W", 64 Ztld: "000G0037FH3QTBCK15Y8BCCNRVWPV17ZC7TSGB1C9ZG2TPGHZVFV1GMG3W",
65 Dzprv: []byte{
66 0x0a, 0x4c, 0x5e, 0x0f, 0x00, 0x63, 0xdf, 0xce,
67 0xdb, 0xc8, 0xc7, 0xf2, 0xb2, 0x2c, 0x03, 0x0c,
68 0x86, 0x28, 0xb2, 0xc2, 0xcb, 0xac, 0x9f, 0xa7,
69 0x29, 0xaa, 0xe6, 0x1f, 0x89, 0xdb, 0x3e, 0x9c,
70 },
71 Dzpub: []byte{
72 0x18, 0x2b, 0xb6, 0x36, 0xed, 0xa7, 0x9f, 0x79,
73 0x57, 0x11, 0xbc, 0x27, 0x08, 0xad, 0xbb, 0x24,
74 0x2a, 0x60, 0x44, 0x6a, 0xd3, 0xc3, 0x08, 0x03,
75 0x12, 0x1d, 0x03, 0xd3, 0x48, 0xb7, 0xce, 0xb6,
76 },
62 Label: "testdelegation", 77 Label: "testdelegation",
63 Q: []byte{ 78 Q: []byte{
64 0x4a, 0xdc, 0x67, 0xc5, 0xec, 0xee, 0x9f, 0x76, 0x98, 0x6a, 0xbd, 0x71, 0xc2, 0x22, 0x4a, 0x3d, 79 0x4a, 0xdc, 0x67, 0xc5, 0xec, 0xee, 0x9f, 0x76, 0x98, 0x6a, 0xbd, 0x71, 0xc2, 0x22, 0x4a, 0x3d,
@@ -68,7 +83,7 @@ var tests = []*TestCase{
68 }, 83 },
69 Recs: []*Rec{ 84 Recs: []*Rec{
70 { 85 {
71 Expire: []byte{0x00, 0x08, 0xc0, 0x6f, 0xb9, 0x28, 0x15, 0x80}, 86 Expire: []byte{0x00, 0x1c, 0xee, 0x8c, 0x10, 0xe2, 0x59, 0x80},
72 Size: []byte{0x00, 0x20}, 87 Size: []byte{0x00, 0x20},
73 Type: []byte{0x00, 0x01, 0x00, 0x00}, 88 Type: []byte{0x00, 0x01, 0x00, 0x00},
74 Flags: []byte{0x00, 0x01}, 89 Flags: []byte{0x00, 0x01},
@@ -79,13 +94,13 @@ var tests = []*TestCase{
79 }, 94 },
80 }, 95 },
81 Rdata: []byte{ 96 Rdata: []byte{
82 0x00, 0x08, 0xc0, 0x6f, 0xb9, 0x28, 0x15, 0x80, 0x00, 0x20, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 97 0x00, 0x1c, 0xee, 0x8c, 0x10, 0xe2, 0x59, 0x80, 0x00, 0x20, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
83 0x21, 0xe3, 0xb3, 0x0f, 0xf9, 0x3b, 0xc6, 0xd3, 0x5a, 0xc8, 0xc6, 0xe0, 0xe1, 0x3a, 0xfd, 0xff, 98 0x21, 0xe3, 0xb3, 0x0f, 0xf9, 0x3b, 0xc6, 0xd3, 0x5a, 0xc8, 0xc6, 0xe0, 0xe1, 0x3a, 0xfd, 0xff,
84 0x79, 0x4c, 0xb7, 0xb4, 0x4b, 0xbb, 0xc7, 0x48, 0xd2, 0x59, 0xd0, 0xa0, 0x28, 0x4d, 0xbe, 0x84, 99 0x79, 0x4c, 0xb7, 0xb4, 0x4b, 0xbb, 0xc7, 0x48, 0xd2, 0x59, 0xd0, 0xa0, 0x28, 0x4d, 0xbe, 0x84,
85 }, 100 },
86 Enc: &Enc{ 101 Enc: &Enc{
87 Nonce: []byte{0xe9, 0x0a, 0x00, 0x61}, 102 Nonce: []byte{0xe9, 0x0a, 0x00, 0x61},
88 Expire: []byte{0x00, 0x08, 0xc0, 0x6f, 0xb9, 0x28, 0x15, 0x80}, 103 Expire: []byte{0x00, 0x1c, 0xee, 0x8c, 0x10, 0xe2, 0x59, 0x80},
89 Counter: []byte{0x00, 0x00, 0x00, 0x01}, 104 Counter: []byte{0x00, 0x00, 0x00, 0x01},
90 Key: []byte{ 105 Key: []byte{
91 0x86, 0x4e, 0x71, 0x38, 0xea, 0xe7, 0xfd, 0x91, 0xa3, 0x01, 0x36, 0x89, 0x9c, 0x13, 0x2b, 0x23, 106 0x86, 0x4e, 0x71, 0x38, 0xea, 0xe7, 0xfd, 0x91, 0xa3, 0x01, 0x36, 0x89, 0x9c, 0x13, 0x2b, 0x23,
@@ -93,27 +108,27 @@ var tests = []*TestCase{
93 }, 108 },
94 }, 109 },
95 Bdata: []byte{ 110 Bdata: []byte{
96 0x41, 0xdc, 0x7b, 0x5f, 0x21, 0x76, 0xba, 0x59, 0x19, 0x98, 0xaf, 0xb9, 0xe3, 0xc8, 0x25, 0x79, 111 0x0c, 0x1e, 0xda, 0x5c, 0xc0, 0x94, 0xa1, 0xc7, 0xa8, 0x88, 0x64, 0x9d, 0x25, 0xfa, 0xee, 0xbd,
97 0x50, 0x50, 0xaf, 0xc4, 0xb5, 0x3d, 0x68, 0xe4, 0x1e, 0xd9, 0x21, 0xda, 0x89, 0xde, 0x51, 0xe7, 112 0x60, 0xda, 0xe6, 0x07, 0x3d, 0x57, 0xd8, 0xae, 0x8d, 0x45, 0x5f, 0x4f, 0x13, 0x92, 0xc0, 0x74,
98 0xda, 0x35, 0xa2, 0x95, 0xb5, 0x9c, 0x2b, 0x8a, 0xae, 0xa4, 0x39, 0x91, 0x48, 0xd5, 0x0c, 0xff, 113 0xe2, 0x6a, 0xc6, 0x69, 0xbd, 0xee, 0xc2, 0x34, 0x62, 0xb9, 0x62, 0x95, 0x2c, 0xc6, 0xe9, 0xeb,
99 }, 114 },
115
100 RRblock: []byte{ 116 RRblock: []byte{
101 0x00, 0x00, 0x00, 0xb0, 0x00, 0x01, 0x00, 0x00, 0x18, 0x2b, 0xb6, 0x36, 0xed, 0xa7, 0x9f, 0x79, 117 0x00, 0x00, 0x00, 0xa0, 0x00, 0x01, 0x00, 0x00, 0x18, 0x2b, 0xb6, 0x36, 0xed, 0xa7, 0x9f, 0x79,
102 0x57, 0x11, 0xbc, 0x27, 0x08, 0xad, 0xbb, 0x24, 0x2a, 0x60, 0x44, 0x6a, 0xd3, 0xc3, 0x08, 0x03, 118 0x57, 0x11, 0xbc, 0x27, 0x08, 0xad, 0xbb, 0x24, 0x2a, 0x60, 0x44, 0x6a, 0xd3, 0xc3, 0x08, 0x03,
103 0x12, 0x1d, 0x03, 0xd3, 0x48, 0xb7, 0xce, 0xb6, 0x01, 0xbe, 0xab, 0x94, 0x4a, 0xff, 0x7c, 0xcc, 119 0x12, 0x1d, 0x03, 0xd3, 0x48, 0xb7, 0xce, 0xb6, 0x0a, 0xd1, 0x0b, 0xc1, 0x3b, 0x40, 0x3b, 0x5b,
104 0x51, 0xbf, 0xfb, 0x21, 0x27, 0x79, 0xc3, 0x41, 0x87, 0x66, 0x0c, 0x62, 0x5d, 0x1c, 0xeb, 0x59, 120 0x25, 0x61, 0x26, 0xb2, 0x14, 0x5a, 0x6f, 0x60, 0xc5, 0x14, 0xf9, 0x51, 0xff, 0xa7, 0x66, 0xf7,
105 0xd5, 0xa0, 0xa9, 0xa2, 0xdf, 0xe4, 0x07, 0x2d, 0x0f, 0x08, 0xcd, 0x2a, 0xb1, 0xe9, 0xed, 0x63, 121 0xa3, 0xfd, 0x4b, 0xac, 0x4a, 0x4e, 0x19, 0x90, 0x05, 0x5c, 0xb8, 0x7e, 0x8d, 0x1b, 0xfd, 0x19,
106 0xd3, 0x89, 0x8f, 0xf7, 0x32, 0x52, 0x1b, 0x57, 0x31, 0x7a, 0x6c, 0x49, 0x50, 0xe1, 0x98, 0x4d, 122 0xaa, 0x09, 0xa4, 0x29, 0xf7, 0x29, 0xe9, 0xf5, 0xc6, 0xee, 0xc2, 0x47, 0x0a, 0xce, 0xe2, 0x22,
107 0x74, 0xdf, 0x01, 0x5f, 0x9e, 0xb7, 0x2c, 0x4a, 0x00, 0x08, 0xc0, 0x6f, 0xb9, 0x28, 0x15, 0x80, 123 0x07, 0x59, 0xe9, 0xe3, 0x6c, 0x88, 0x6f, 0x35, 0x00, 0x1c, 0xee, 0x8c, 0x10, 0xe2, 0x59, 0x80,
108 0x41, 0xdc, 0x7b, 0x5f, 0x21, 0x76, 0xba, 0x59, 0x19, 0x98, 0xaf, 0xb9, 0xe3, 0xc8, 0x25, 0x79, 124 0x0c, 0x1e, 0xda, 0x5c, 0xc0, 0x94, 0xa1, 0xc7, 0xa8, 0x88, 0x64, 0x9d, 0x25, 0xfa, 0xee, 0xbd,
109 0x50, 0x50, 0xaf, 0xc4, 0xb5, 0x3d, 0x68, 0xe4, 0x1e, 0xd9, 0x21, 0xda, 0x89, 0xde, 0x51, 0xe7, 125 0x60, 0xda, 0xe6, 0x07, 0x3d, 0x57, 0xd8, 0xae, 0x8d, 0x45, 0x5f, 0x4f, 0x13, 0x92, 0xc0, 0x74,
110 0xda, 0x35, 0xa2, 0x95, 0xb5, 0x9c, 0x2b, 0x8a, 0xae, 0xa4, 0x39, 0x91, 0x48, 0xd5, 0x0c, 0xff, 126 0xe2, 0x6a, 0xc6, 0x69, 0xbd, 0xee, 0xc2, 0x34, 0x62, 0xb9, 0x62, 0x95, 0x2c, 0xc6, 0xe9, 0xeb,
111 0x68, 0x59, 0x6b, 0x4d, 0xcb, 0x8b, 0xc2, 0xc1, 0x1b, 0xb1, 0x84, 0xd5, 0x90, 0x56, 0x13, 0xe8,
112 }, 127 },
113 }, 128 },
114 // Testcase #2 129 // Testcase #2
115 { 130 {
116 Zpk: []byte{ 131 Zprv: []byte{
117 0x50, 0xd7, 0xb6, 0x52, 0xa4, 0xef, 0xea, 0xdf, 0xf3, 0x73, 0x96, 0x90, 0x97, 0x85, 0xe5, 0x95, 132 0x50, 0xd7, 0xb6, 0x52, 0xa4, 0xef, 0xea, 0xdf, 0xf3, 0x73, 0x96, 0x90, 0x97, 0x85, 0xe5, 0x95,
118 0x21, 0x71, 0xa0, 0x21, 0x78, 0xc8, 0xe7, 0xd4, 0x50, 0xfa, 0x90, 0x79, 0x25, 0xfa, 0xfd, 0x98, 133 0x21, 0x71, 0xa0, 0x21, 0x78, 0xc8, 0xe7, 0xd4, 0x50, 0xfa, 0x90, 0x79, 0x25, 0xfa, 0xfd, 0x98,
119 }, 134 },
@@ -124,6 +139,14 @@ var tests = []*TestCase{
124 }, 139 },
125 Ztld: "000G0037FH3QTBCK15Y8BCCNRVWPV17ZC7TSGB1C9ZG2TPGHZVFV1GMG3W", 140 Ztld: "000G0037FH3QTBCK15Y8BCCNRVWPV17ZC7TSGB1C9ZG2TPGHZVFV1GMG3W",
126 Label: "天下無敵", 141 Label: "天下無敵",
142 Dzprv: []byte{
143 0x0a, 0xbe, 0x56, 0xd6, 0x80, 0x68, 0xab, 0x40, 0xe1, 0x44, 0x79, 0x0c, 0xde, 0x9a, 0xcf, 0x4d,
144 0x78, 0x7f, 0x2d, 0x3c, 0x63, 0xb8, 0x53, 0x05, 0x74, 0x6e, 0x68, 0x03, 0x32, 0x15, 0xf2, 0xab,
145 },
146 Dzpub: []byte{
147 0xa5, 0x12, 0x96, 0xdf, 0x75, 0x7e, 0xe2, 0x75, 0xca, 0x11, 0x8d, 0x4f, 0x07, 0xfa, 0x7a, 0xae,
148 0x55, 0x08, 0xbc, 0xf5, 0x12, 0xaa, 0x41, 0x12, 0x14, 0x29, 0xd4, 0xa0, 0xde, 0x9d, 0x05, 0x7e,
149 },
127 Q: []byte{ 150 Q: []byte{
128 0xaf, 0xf0, 0xad, 0x6a, 0x44, 0x09, 0x73, 0x68, 0x42, 0x9a, 0xc4, 0x76, 0xdf, 0xa1, 0xf3, 0x4b, 151 0xaf, 0xf0, 0xad, 0x6a, 0x44, 0x09, 0x73, 0x68, 0x42, 0x9a, 0xc4, 0x76, 0xdf, 0xa1, 0xf3, 0x4b,
129 0xee, 0x4c, 0x36, 0xe7, 0x47, 0x6d, 0x07, 0xaa, 0x64, 0x63, 0xff, 0x20, 0x91, 0x5b, 0x10, 0x05, 152 0xee, 0x4c, 0x36, 0xe7, 0x47, 0x6d, 0x07, 0xaa, 0x64, 0x63, 0xff, 0x20, 0x91, 0x5b, 0x10, 0x05,
@@ -132,21 +155,21 @@ var tests = []*TestCase{
132 }, 155 },
133 Recs: []*Rec{ 156 Recs: []*Rec{
134 { 157 {
135 Expire: []byte{0x00, 0x08, 0xc0, 0x6f, 0xb9, 0x28, 0x15, 0x80}, 158 Expire: []byte{0x00, 0x1c, 0xee, 0x8c, 0x10, 0xe2, 0x59, 0x80},
136 Size: []byte{0x00, 0x10}, 159 Size: []byte{0x00, 0x10},
137 Type: []byte{0x00, 0x00, 0x00, 0x1c}, 160 Type: []byte{0x00, 0x00, 0x00, 0x1c},
138 Flags: []byte{0x00, 0x00}, 161 Flags: []byte{0x00, 0x00},
139 Data: []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, 0xbe, 0xef}, 162 Data: []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, 0xbe, 0xef},
140 }, 163 },
141 { 164 {
142 Expire: []byte{0x00, 0xb0, 0x0f, 0x81, 0xb7, 0x44, 0x9b, 0x40}, 165 Expire: []byte{0x00, 0x3f, 0xf2, 0xab, 0x2a, 0x9c, 0x7f, 0x40},
143 Size: []byte{0x00, 0x06}, 166 Size: []byte{0x00, 0x06},
144 Type: []byte{0x00, 0x01, 0x00, 0x01}, 167 Type: []byte{0x00, 0x01, 0x00, 0x01},
145 Flags: []byte{0x80, 0x00}, 168 Flags: []byte{0x00, 0x00},
146 Data: []byte{0xe6, 0x84, 0x9b, 0xe7, 0xa7, 0xb0}, 169 Data: []byte{0xe6, 0x84, 0x9b, 0xe7, 0xa7, 0xb0},
147 }, 170 },
148 { 171 {
149 Expire: []byte{0x00, 0x98, 0xd7, 0xff, 0x80, 0x4a, 0x39, 0x40}, 172 Expire: []byte{0x00, 0x28, 0xbb, 0x14, 0xd5, 0xca, 0xbd, 0x40},
150 Size: []byte{0x00, 0x0b}, 173 Size: []byte{0x00, 0x0b},
151 Type: []byte{0x00, 0x00, 0x00, 0x10}, 174 Type: []byte{0x00, 0x00, 0x00, 0x10},
152 Flags: []byte{0x00, 0x04}, 175 Flags: []byte{0x00, 0x04},
@@ -154,10 +177,10 @@ var tests = []*TestCase{
154 }, 177 },
155 }, 178 },
156 Rdata: []byte{ 179 Rdata: []byte{
157 0x00, 0x08, 0xc0, 0x6f, 0xb9, 0x28, 0x15, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 180 0x00, 0x1c, 0xee, 0x8c, 0x10, 0xe2, 0x59, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, 0xbe, 0xef, 181 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, 0xbe, 0xef,
159 0x00, 0xb0, 0x0f, 0x81, 0xb7, 0x44, 0x9b, 0x40, 0x00, 0x06, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 182 0x00, 0x3f, 0xf2, 0xab, 0x2a, 0x9c, 0x7f, 0x40, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
160 0xe6, 0x84, 0x9b, 0xe7, 0xa7, 0xb0, 0x00, 0x98, 0xd7, 0xff, 0x80, 0x4a, 0x39, 0x40, 0x00, 0x0b, 183 0xe6, 0x84, 0x9b, 0xe7, 0xa7, 0xb0, 0x00, 0x28, 0xbb, 0x14, 0xd5, 0xca, 0xbd, 0x40, 0x00, 0x0b,
161 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 184 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c,
162 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 185 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -165,7 +188,7 @@ var tests = []*TestCase{
165 }, 188 },
166 Enc: &Enc{ 189 Enc: &Enc{
167 Nonce: []byte{0xee, 0x96, 0x33, 0xc1}, 190 Nonce: []byte{0xee, 0x96, 0x33, 0xc1},
168 Expire: []byte{0x00, 0x08, 0xc0, 0x6f, 0xb9, 0x28, 0x15, 0x80}, 191 Expire: []byte{0x00, 0x1c, 0xee, 0x8c, 0x10, 0xe2, 0x59, 0x80},
169 Counter: []byte{0x00, 0x00, 0x00, 0x01}, 192 Counter: []byte{0x00, 0x00, 0x00, 0x01},
170 Key: []byte{ 193 Key: []byte{
171 0xfb, 0x3a, 0xb5, 0xde, 0x23, 0xbd, 0xda, 0xe1, 0x99, 0x7a, 0xaf, 0x7b, 0x92, 0xc2, 0xd2, 0x71, 194 0xfb, 0x3a, 0xb5, 0xde, 0x23, 0xbd, 0xda, 0xe1, 0x99, 0x7a, 0xaf, 0x7b, 0x92, 0xc2, 0xd2, 0x71,
@@ -173,36 +196,36 @@ var tests = []*TestCase{
173 }, 196 },
174 }, 197 },
175 Bdata: []byte{ 198 Bdata: []byte{
176 0xa1, 0xf9, 0x4f, 0x65, 0xc7, 0x20, 0x2b, 0x86, 0x2b, 0x75, 0x0d, 0x89, 0x53, 0x1c, 0x66, 0x5d, 199 0xd8, 0xc2, 0x8d, 0x2f, 0xd6, 0x96, 0x7d, 0x1a, 0xb7, 0x22, 0x53, 0xf2, 0x10, 0x98, 0xb8, 0x14,
177 0x1b, 0x7f, 0x5e, 0x90, 0x92, 0x9b, 0xd8, 0xa4, 0xd9, 0x24, 0xe6, 0x52, 0x5d, 0xbd, 0x6b, 0x2f, 200 0xa4, 0x10, 0xbe, 0x1f, 0x59, 0x98, 0xde, 0x03, 0xf5, 0x8f, 0x7e, 0x7c, 0xdb, 0x7f, 0x08, 0xa6,
178 0x81, 0x8c, 0x43, 0xb2, 0x2e, 0x2a, 0xc7, 0x08, 0x2b, 0x6e, 0x69, 0x60, 0x27, 0x6f, 0x41, 0xca, 201 0x16, 0x51, 0xbe, 0x4c, 0x75, 0xfb, 0x2e, 0x61, 0xdf, 0x15, 0x30, 0x44, 0x0b, 0xd7, 0x47, 0xdc,
179 0xcf, 0x0b, 0x27, 0xb2, 0x50, 0x2b, 0x58, 0x90, 0xc8, 0x03, 0x9e, 0xb6, 0xb5, 0x74, 0x22, 0x06, 202 0xf0, 0xd7, 0x10, 0x4f, 0x6b, 0x8d, 0x24, 0xc2, 0xac, 0x9c, 0xeb, 0xc0, 0x38, 0x6f, 0xe8, 0x29,
180 0x88, 0xd5, 0x43, 0xb4, 0xf4, 0x51, 0x9f, 0x4a, 0xc4, 0x76, 0xd2, 0xa5, 0x77, 0xe9, 0xbd, 0x59, 203 0x05, 0x25, 0xd2, 0xa6, 0xd0, 0xf8, 0x84, 0x42, 0x67, 0xa1, 0x57, 0x0e, 0x8e, 0x29, 0x4d, 0xc9,
181 0xd6, 0xf4, 0x72, 0xbc, 0x93, 0xa2, 0xfe, 0x66, 0x16, 0x11, 0x75, 0x9c, 0xca, 0xf2, 0xd6, 0x72, 204 0x3a, 0x31, 0x9f, 0xcf, 0xc0, 0x3e, 0xa2, 0x70, 0x17, 0xd6, 0xfd, 0xa3, 0x47, 0xb4, 0xa7, 0x94,
182 0x60, 0xc1, 0xdb, 0x4a, 0x03, 0x53, 0x1b, 0x86, 0x7d, 0xfa, 0x35, 0xf7, 0xbc, 0x30, 0x02, 0xb8, 205 0x97, 0xd7, 0xf6, 0xb1, 0x42, 0x2d, 0x4e, 0xdd, 0x82, 0x1c, 0x19, 0x93, 0x4e, 0x96, 0xc1, 0xaa,
183 0xf4, 0x00, 0x0e, 0x4e, 0x7c, 0x7d, 0x91, 0x7a, 0xd2, 0x29, 0xf7, 0x9b, 0x2a, 0xee, 0xe3, 0xf1, 206 0x87, 0x76, 0x57, 0x25, 0xd4, 0x94, 0xc7, 0x64, 0xb1, 0x55, 0xdc, 0x6d, 0x13, 0x26, 0x91, 0x74,
184 }, 207 },
185 RRblock: []byte{ 208 RRblock: []byte{
186 0x00, 0x00, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0xa5, 0x12, 0x96, 0xdf, 0x75, 0x7e, 0xe2, 0x75, 209 0x00, 0x00, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0xa5, 0x12, 0x96, 0xdf, 0x75, 0x7e, 0xe2, 0x75,
187 0xca, 0x11, 0x8d, 0x4f, 0x07, 0xfa, 0x7a, 0xae, 0x55, 0x08, 0xbc, 0xf5, 0x12, 0xaa, 0x41, 0x12, 210 0xca, 0x11, 0x8d, 0x4f, 0x07, 0xfa, 0x7a, 0xae, 0x55, 0x08, 0xbc, 0xf5, 0x12, 0xaa, 0x41, 0x12,
188 0x14, 0x29, 0xd4, 0xa0, 0xde, 0x9d, 0x05, 0x7e, 0x05, 0xc0, 0x95, 0x04, 0x0b, 0x10, 0xc7, 0xf8, 211 0x14, 0x29, 0xd4, 0xa0, 0xde, 0x9d, 0x05, 0x7e, 0x08, 0x2f, 0xfa, 0xa1, 0x83, 0x71, 0xdc, 0x82,
189 0x18, 0x7a, 0xa5, 0xda, 0x12, 0x28, 0x7d, 0x1c, 0x29, 0x10, 0xff, 0x04, 0xd6, 0xf5, 0x0a, 0xf1, 212 0x91, 0x9d, 0x5e, 0xd4, 0xd4, 0x91, 0xae, 0x65, 0xcd, 0x09, 0x2f, 0x61, 0xa7, 0x26, 0xa9, 0xee,
190 0xfa, 0x95, 0x38, 0x2e, 0x9f, 0x00, 0x7f, 0x75, 0x09, 0x8f, 0x62, 0x0d, 0x1f, 0xf7, 0xc9, 0x71, 213 0x29, 0xb2, 0x1a, 0xfe, 0x5f, 0xdd, 0x96, 0x29, 0x0c, 0xfc, 0xb9, 0x12, 0xad, 0xe6, 0x7f, 0x3a,
191 0x28, 0xf4, 0x0d, 0x74, 0x58, 0xa2, 0xd3, 0xc7, 0xf0, 0x48, 0xca, 0x38, 0x20, 0x06, 0x4b, 0xdd, 214 0x75, 0x92, 0x4f, 0x17, 0x4d, 0xb0, 0x34, 0xdf, 0x00, 0x70, 0xfb, 0xf8, 0x13, 0x96, 0xef, 0xee,
192 0xee, 0x94, 0x13, 0xe9, 0x54, 0x8e, 0xc9, 0x94, 0x00, 0x05, 0xdb, 0x3b, 0xcd, 0xbd, 0x61, 0x7c, 215 0x19, 0xb9, 0xcd, 0x80, 0x21, 0x06, 0x3e, 0x35, 0x00, 0x1c, 0xee, 0x8c, 0x10, 0xe2, 0x59, 0x80,
193 0xa1, 0xf9, 0x4f, 0x65, 0xc7, 0x20, 0x2b, 0x86, 0x2b, 0x75, 0x0d, 0x89, 0x53, 0x1c, 0x66, 0x5d, 216 0xd8, 0xc2, 0x8d, 0x2f, 0xd6, 0x96, 0x7d, 0x1a, 0xb7, 0x22, 0x53, 0xf2, 0x10, 0x98, 0xb8, 0x14,
194 0x1b, 0x7f, 0x5e, 0x90, 0x92, 0x9b, 0xd8, 0xa4, 0xd9, 0x24, 0xe6, 0x52, 0x5d, 0xbd, 0x6b, 0x2f, 217 0xa4, 0x10, 0xbe, 0x1f, 0x59, 0x98, 0xde, 0x03, 0xf5, 0x8f, 0x7e, 0x7c, 0xdb, 0x7f, 0x08, 0xa6,
195 0x81, 0x8c, 0x43, 0xb2, 0x2e, 0x2a, 0xc7, 0x08, 0x2b, 0x6e, 0x69, 0x60, 0x27, 0x6f, 0x41, 0xca, 218 0x16, 0x51, 0xbe, 0x4c, 0x75, 0xfb, 0x2e, 0x61, 0xdf, 0x15, 0x30, 0x44, 0x0b, 0xd7, 0x47, 0xdc,
196 0xcf, 0x0b, 0x27, 0xb2, 0x50, 0x2b, 0x58, 0x90, 0xc8, 0x03, 0x9e, 0xb6, 0xb5, 0x74, 0x22, 0x06, 219 0xf0, 0xd7, 0x10, 0x4f, 0x6b, 0x8d, 0x24, 0xc2, 0xac, 0x9c, 0xeb, 0xc0, 0x38, 0x6f, 0xe8, 0x29,
197 0x88, 0xd5, 0x43, 0xb4, 0xf4, 0x51, 0x9f, 0x4a, 0xc4, 0x76, 0xd2, 0xa5, 0x77, 0xe9, 0xbd, 0x59, 220 0x05, 0x25, 0xd2, 0xa6, 0xd0, 0xf8, 0x84, 0x42, 0x67, 0xa1, 0x57, 0x0e, 0x8e, 0x29, 0x4d, 0xc9,
198 0xd6, 0xf4, 0x72, 0xbc, 0x93, 0xa2, 0xfe, 0x66, 0x16, 0x11, 0x75, 0x9c, 0xca, 0xf2, 0xd6, 0x72, 221 0x3a, 0x31, 0x9f, 0xcf, 0xc0, 0x3e, 0xa2, 0x70, 0x17, 0xd6, 0xfd, 0xa3, 0x47, 0xb4, 0xa7, 0x94,
199 0x60, 0xc1, 0xdb, 0x4a, 0x03, 0x53, 0x1b, 0x86, 0x7d, 0xfa, 0x35, 0xf7, 0xbc, 0x30, 0x02, 0xb8, 222 0x97, 0xd7, 0xf6, 0xb1, 0x42, 0x2d, 0x4e, 0xdd, 0x82, 0x1c, 0x19, 0x93, 0x4e, 0x96, 0xc1, 0xaa,
200 0xf4, 0x00, 0x0e, 0x4e, 0x7c, 0x7d, 0x91, 0x7a, 0xd2, 0x29, 0xf7, 0x9b, 0x2a, 0xee, 0xe3, 0xf1, 223 0x87, 0x76, 0x57, 0x25, 0xd4, 0x94, 0xc7, 0x64, 0xb1, 0x55, 0xdc, 0x6d, 0x13, 0x26, 0x91, 0x74,
201 }, 224 },
202 }, 225 },
203 // Testcase #3 226 // Testcase #3
204 { 227 {
205 Zpk: []byte{ 228 Zprv: []byte{
206 0x5a, 0xf7, 0x02, 0x0e, 0xe1, 0x91, 0x60, 0x32, 0x88, 0x32, 0x35, 0x2b, 0xbc, 0x6a, 0x68, 0xa8, 229 0x5a, 0xf7, 0x02, 0x0e, 0xe1, 0x91, 0x60, 0x32, 0x88, 0x32, 0x35, 0x2b, 0xbc, 0x6a, 0x68, 0xa8,
207 0xd7, 0x1a, 0x7c, 0xbe, 0x1b, 0x92, 0x99, 0x69, 0xa7, 0xc6, 0x6d, 0x41, 0x5a, 0x0d, 0x8f, 0x65, 230 0xd7, 0x1a, 0x7c, 0xbe, 0x1b, 0x92, 0x99, 0x69, 0xa7, 0xc6, 0x6d, 0x41, 0x5a, 0x0d, 0x8f, 0x65,
208 }, 231 },
@@ -213,6 +236,14 @@ var tests = []*TestCase{
213 }, 236 },
214 Ztld: "000G051WYJWJ80S04BRDRM2R2H9VGQCKP13VCFA4DHC4BJT88HEXQ5K8HW", 237 Ztld: "000G051WYJWJ80S04BRDRM2R2H9VGQCKP13VCFA4DHC4BJT88HEXQ5K8HW",
215 Label: "testdelegation", 238 Label: "testdelegation",
239 Dzprv: []byte{
240 0x0b, 0x1b, 0x29, 0xd4, 0x23, 0x0b, 0x10, 0xa8, 0xec, 0x4d, 0xa3, 0xc8, 0x6e, 0xdb, 0x88, 0xea,
241 0x8e, 0xb7, 0x1a, 0xc0, 0x34, 0xf4, 0x8d, 0x74, 0xa1, 0xa0, 0x16, 0x2d, 0xb4, 0x4e, 0x47, 0xd1,
242 },
243 Dzpub: []byte{
244 0x9b, 0xf2, 0x33, 0x19, 0x8c, 0x6d, 0x53, 0xbb, 0xdb, 0xac, 0x49, 0x5c, 0xab, 0xd9, 0x10, 0x49,
245 0xa6, 0x84, 0xaf, 0x3f, 0x40, 0x51, 0xba, 0xca, 0xb0, 0xdc, 0xf2, 0x1c, 0x8c, 0xf2, 0x7a, 0x1a,
246 },
216 Q: []byte{ 247 Q: []byte{
217 0xab, 0xaa, 0xba, 0xc0, 0xe1, 0x24, 0x94, 0x59, 0x75, 0x98, 0x83, 0x95, 0xaa, 0xc0, 0x24, 0x1e, 248 0xab, 0xaa, 0xba, 0xc0, 0xe1, 0x24, 0x94, 0x59, 0x75, 0x98, 0x83, 0x95, 0xaa, 0xc0, 0x24, 0x1e,
218 0x55, 0x59, 0xc4, 0x1c, 0x40, 0x74, 0xe2, 0x55, 0x7b, 0x9f, 0xe6, 0xd1, 0x54, 0xb6, 0x14, 0xfb, 249 0x55, 0x59, 0xc4, 0x1c, 0x40, 0x74, 0xe2, 0x55, 0x7b, 0x9f, 0xe6, 0xd1, 0x54, 0xb6, 0x14, 0xfb,
@@ -269,7 +300,7 @@ var tests = []*TestCase{
269 }, 300 },
270 // Testcase #4 301 // Testcase #4
271 { 302 {
272 Zpk: []byte{ 303 Zprv: []byte{
273 0x5a, 0xf7, 0x02, 0x0e, 0xe1, 0x91, 0x60, 0x32, 0x88, 0x32, 0x35, 0x2b, 0xbc, 0x6a, 0x68, 0xa8, 304 0x5a, 0xf7, 0x02, 0x0e, 0xe1, 0x91, 0x60, 0x32, 0x88, 0x32, 0x35, 0x2b, 0xbc, 0x6a, 0x68, 0xa8,
274 0xd7, 0x1a, 0x7c, 0xbe, 0x1b, 0x92, 0x99, 0x69, 0xa7, 0xc6, 0x6d, 0x41, 0x5a, 0x0d, 0x8f, 0x65, 305 0xd7, 0x1a, 0x7c, 0xbe, 0x1b, 0x92, 0x99, 0x69, 0xa7, 0xc6, 0x6d, 0x41, 0x5a, 0x0d, 0x8f, 0x65,
275 }, 306 },
@@ -280,6 +311,14 @@ var tests = []*TestCase{
280 }, 311 },
281 Ztld: "000G051WYJWJ80S04BRDRM2R2H9VGQCKP13VCFA4DHC4BJT88HEXQ5K8HW", 312 Ztld: "000G051WYJWJ80S04BRDRM2R2H9VGQCKP13VCFA4DHC4BJT88HEXQ5K8HW",
282 Label: "天下無敵", 313 Label: "天下無敵",
314 Dzprv: []byte{
315 0x07, 0xc0, 0x68, 0xa6, 0xc3, 0xf7, 0x20, 0xde, 0x0e, 0x1b, 0x69, 0xff, 0x3f, 0x53, 0xe0, 0x5d,
316 0x2b, 0x06, 0xcb, 0xd1, 0xae, 0x2d, 0xdd, 0xb3, 0x4e, 0x29, 0xb7, 0xb8, 0xfd, 0xce, 0x61, 0x6b,
317 },
318 Dzpub: []byte{
319 0x74, 0xf9, 0x00, 0x68, 0xf1, 0x67, 0x69, 0x53, 0x52, 0xa8, 0xa6, 0xc2, 0xeb, 0x98, 0x48, 0x98,
320 0xc5, 0x3a, 0xcc, 0xa0, 0x98, 0x04, 0x70, 0xc6, 0xc8, 0x12, 0x64, 0xcb, 0xdd, 0x78, 0xad, 0x11,
321 },
283 Q: []byte{ 322 Q: []byte{
284 0xba, 0xf8, 0x21, 0x77, 0xee, 0xc0, 0x81, 0xe0, 0x74, 0xa7, 0xda, 0x47, 0xff, 0xc6, 0x48, 0x77, 323 0xba, 0xf8, 0x21, 0x77, 0xee, 0xc0, 0x81, 0xe0, 0x74, 0xa7, 0xda, 0x47, 0xff, 0xc6, 0x48, 0x77,
285 0x58, 0xfb, 0x0d, 0xf0, 0x1a, 0x6c, 0x7f, 0xbb, 0x52, 0xfc, 0x8a, 0x31, 0xbe, 0xf0, 0x29, 0xaf, 324 0x58, 0xfb, 0x0d, 0xf0, 0x1a, 0x6c, 0x7f, 0xbb, 0x52, 0xfc, 0x8a, 0x31, 0xbe, 0xf0, 0x29, 0xaf,
diff --git a/src/gnunet/service/gns/rfc_test.go b/src/gnunet/service/gns/rfc_test.go
index e42d5ad..c18240e 100644
--- a/src/gnunet/service/gns/rfc_test.go
+++ b/src/gnunet/service/gns/rfc_test.go
@@ -29,6 +29,8 @@ import (
29 "gnunet/util" 29 "gnunet/util"
30 "strings" 30 "strings"
31 "testing" 31 "testing"
32
33 "github.com/bfix/gospel/math"
32) 34)
33 35
34func TestRFCDump(t *testing.T) { 36func TestRFCDump(t *testing.T) {
@@ -41,7 +43,7 @@ func TestRFCDump(t *testing.T) {
41 endian = ", big-endian" 43 endian = ", big-endian"
42 } 44 }
43 fmt.Printf("Zone private key (d%s):\n", endian) 45 fmt.Printf("Zone private key (d%s):\n", endian)
44 dumpHex(" ", tc.Zpk) 46 dumpHex(" ", tc.Zprv)
45 47
46 fmt.Println("\n\nZone identifier {") 48 fmt.Println("\n\nZone identifier {")
47 dumpHex(" ZTYPE: ", tc.Zid[:4]) 49 dumpHex(" ZTYPE: ", tc.Zid[:4])
@@ -111,13 +113,13 @@ func TestRecordsRFC(t *testing.T) {
111 fmt.Printf(" ztype = %08x (%d)\n", uint32(ztype), ztype) 113 fmt.Printf(" ztype = %08x (%d)\n", uint32(ztype), ztype)
112 114
113 // generate private zone key 115 // generate private zone key
114 zprv, err := crypto.NewZonePrivate(ztype, tc.Zpk) 116 zprv, err := crypto.NewZonePrivate(ztype, tc.Zprv)
115 if err != nil { 117 if err != nil {
116 t.Log("Failed: " + err.Error()) 118 t.Log("Failed: " + err.Error())
117 t.Fail() 119 t.Fail()
118 continue 120 continue
119 } 121 }
120 fmt.Printf(" zprv = %s\n", hex.EncodeToString(zprv.Bytes())) 122 fmt.Printf(" zprv = %s\n", hex.EncodeToString(zprv.Bytes()[32:]))
121 123
122 // generate zone key (public) 124 // generate zone key (public)
123 zkey := zprv.Public() 125 zkey := zprv.Public()
@@ -136,19 +138,45 @@ func TestRecordsRFC(t *testing.T) {
136 continue 138 continue
137 } 139 }
138 140
139 // derive zone key for given label and compute storage key 'q' 141 // derive zone keys for given label
140 pd, _, err := zkey.Derive(tc.Label, blocks.GNSContext) 142 dzprv, _, err := zprv.Derive(tc.Label, blocks.GNSContext)
141 if err != nil { 143 if err != nil {
142 t.Log("Failed: " + err.Error()) 144 t.Log("Failed dzprv: " + err.Error())
143 t.Fail() 145 t.Fail()
144 continue 146 continue
145 } 147 }
146 pdb := pd.KeyData // pd.Bytes() 148 fmt.Printf(" dzprv = %s\n", hex.EncodeToString(dzprv.Bytes()[32:]))
147 q := crypto.Hash(pdb).Data 149 d1 := dzprv.Bytes()[32:]
150 if !bytes.Equal(d1, tc.Dzprv) {
151 t.Log("dzprv mismatch")
152 t.Fail()
153
154 }
155 dzpub, _, err := zkey.Derive(tc.Label, blocks.GNSContext)
156 if err != nil {
157 t.Log("Failed dzpub: " + err.Error())
158 t.Fail()
159 }
160 fmt.Printf(" dzpub = %s\n", hex.EncodeToString(dzpub.KeyData))
161 if !bytes.Equal(dzpub.KeyData, tc.Dzpub) {
162 t.Log("dzpub mismatch")
163 t.Fail()
164 continue
165 }
166
167 // double-check and verify derivation
168 if !dzpub.Equal(dzprv.Public()) {
169 t.Log("bad derived key")
170 t.Fail()
171 continue
172 }
173
174 // compute storage key 'q'
175 q := crypto.Hash(dzpub.KeyData).Data
148 fmt.Printf(" Q = %s\n", hex.EncodeToString(q)) 176 fmt.Printf(" Q = %s\n", hex.EncodeToString(q))
149 if !bytes.Equal(q, tc.Q) { 177 if !bytes.Equal(q, tc.Q) {
150 fmt.Printf(" != %s\n", hex.EncodeToString(tc.Q)) 178 fmt.Printf(" != %s\n", hex.EncodeToString(tc.Q))
151 fmt.Printf(" pd = %s\n", hex.EncodeToString(pdb)) 179 fmt.Printf(" pd = %s\n", hex.EncodeToString(dzpub.KeyData))
152 t.Log("Failed: storage key mismatch") 180 t.Log("Failed: storage key mismatch")
153 t.Fail() 181 t.Fail()
154 } 182 }
@@ -233,8 +261,11 @@ func TestRecordsRFC(t *testing.T) {
233 blk := blocks.NewGNSBlock().(*blocks.GNSBlock) 261 blk := blocks.NewGNSBlock().(*blocks.GNSBlock)
234 blk.Prepare(enums.BLOCK_TYPE_GNS_NAMERECORD, expires) 262 blk.Prepare(enums.BLOCK_TYPE_GNS_NAMERECORD, expires)
235 blk.SetData(bdata) 263 blk.SetData(bdata)
236 dsk, _, _ := zprv.Derive(tc.Label, "gns") 264
237 blk.Sign(dsk) 265 // sign the block
266 blk.Sign(dzprv)
267
268 // check resulting RRBLOCK
238 rrblock := blk.RRBLOCK() 269 rrblock := blk.RRBLOCK()
239 if !bytes.Equal(rrblock, tc.RRblock) { 270 if !bytes.Equal(rrblock, tc.RRblock) {
240 fmt.Printf("rrblock = %s\n", hex.EncodeToString(rrblock)) 271 fmt.Printf("rrblock = %s\n", hex.EncodeToString(rrblock))
@@ -242,16 +273,79 @@ func TestRecordsRFC(t *testing.T) {
242 t.Log("RRblock mismatch") 273 t.Log("RRblock mismatch")
243 274
244 // PKEY/ECDSA signatures are currently not identical with 275 // PKEY/ECDSA signatures are currently not identical with
245 // GNUnet produced signature, so ignore any failures. 276 // GNUnet produced signatures, so ignore any failures.
246 if ztype != enums.GNS_TYPE_PKEY { 277 if ztype != enums.GNS_TYPE_PKEY {
247 t.Fail() 278 t.Fail()
248 } 279 }
280
281 // check signatures
282 if ok, err := blk.Verify(); !ok || err != nil {
283 t.Fatal("FAILED: sig")
284 }
285 sd := blk.DerivedKeySig.Signature
286 r := math.NewIntFromBytes(sd[:32])
287 s := math.NewIntFromBytes(sd[32:])
288 fmt.Printf("*** r = %s\n", hex.EncodeToString(r.Bytes()))
289 fmt.Printf("*** s = %s\n", hex.EncodeToString(s.Bytes()))
290
291 BLK := blocks.NewGNSBlock().(*blocks.GNSBlock)
292 BLK.Prepare(enums.BLOCK_TYPE_GNS_NAMERECORD, expires)
293 BLK.SetData(bdata)
294 BLK.DerivedKeySig, err = crypto.NewZoneSignature(tc.RRblock[4:104])
295 SD := BLK.DerivedKeySig.Signature
296 R := math.NewIntFromBytes(SD[:32])
297 S := math.NewIntFromBytes(SD[32:])
298 fmt.Printf("*** R = %s\n", hex.EncodeToString(R.Bytes()))
299 fmt.Printf("*** S = %s\n", hex.EncodeToString(S.Bytes()))
300
301 if ok, err := BLK.Verify(); !ok || err != nil {
302 t.Fatal("FAILED: SIG")
303 }
304
249 continue 305 continue
250 } 306 }
251 fmt.Println(" ----- passed -----") 307 fmt.Println(" ----- passed -----")
252 } 308 }
253} 309}
254 310
311func TestSigGcrypt(t *testing.T) {
312 tc := tests[0]
313
314 // Zonekey type
315 var ztype enums.GNSType
316 rdInt(tc.Zid, &ztype)
317 fmt.Printf(" ztype = %08x (%d)\n", uint32(ztype), ztype)
318
319 // generate private zone key
320 zprv, err := crypto.NewZonePrivate(ztype, tc.Zprv)
321 if err != nil {
322 t.Fatal("Failed: " + err.Error())
323 }
324 fmt.Printf(" zprv = %s\n", hex.EncodeToString(zprv.Bytes()))
325
326 // generate signature
327 tsig, _ := zprv.Sign([]byte("sample"))
328
329 // test result
330 R := []byte{
331 0x03, 0xfb, 0xaf, 0xa1, 0x40, 0xd0, 0x11, 0x12, 0x45, 0xa1, 0xa7, 0x38, 0x45, 0x77, 0x81, 0x66,
332 0x4c, 0x73, 0x7f, 0x97, 0x4d, 0x53, 0x6a, 0x17, 0xf7, 0xc4, 0x9a, 0x19, 0xa4, 0x01, 0xaf, 0xd7,
333 }
334 S := []byte{
335 0x0c, 0x42, 0xe7, 0xde, 0xbe, 0xa9, 0xeb, 0x5c, 0x9f, 0x4a, 0x30, 0xb8, 0x23, 0x22, 0xa9, 0xb2,
336 0xdf, 0x37, 0x0a, 0x7d, 0xe6, 0xea, 0xa7, 0x17, 0x1c, 0x90, 0xba, 0xa1, 0x0e, 0x6e, 0x15, 0x29,
337 }
338 buf := tsig.Bytes()
339 t.Log("r = " + hex.EncodeToString(buf[:32]))
340 t.Log("s = " + hex.EncodeToString(buf[32:]))
341 if !bytes.Equal(buf[:32], R) {
342 t.Fatal("Failed: R mismatch")
343 }
344 if !bytes.Equal(buf[32:], S) {
345 t.Fatal("Failed: S mismatch")
346 }
347}
348
255func rdInt(data []byte, v any) { 349func rdInt(data []byte, v any) {
256 _ = binary.Read(bytes.NewReader(data), binary.BigEndian, v) 350 _ = binary.Read(bytes.NewReader(data), binary.BigEndian, v)
257} 351}