Skip to content

Commit d52a261

Browse files
committed
Add dhash test
1 parent 211c6ea commit d52a261

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

store/dhash/dhash_test.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package dhash_test
2+
3+
import (
4+
"bytes"
5+
"crypto/sha256"
6+
"math/rand"
7+
"testing"
8+
9+
"github.com/ipni/go-indexer-core/store/dhash"
10+
"github.com/ipni/go-indexer-core/store/test"
11+
"github.com/multiformats/go-multihash"
12+
"github.com/stretchr/testify/require"
13+
)
14+
15+
func TestEncryptSameValueWithTheSameMultihashShouldProduceTheSameOutput(t *testing.T) {
16+
rng := rand.New(rand.NewSource(1413))
17+
payload := make([]byte, 256)
18+
_, err := rng.Read(payload)
19+
if err != nil {
20+
panic(err)
21+
}
22+
passphrase := make([]byte, 32)
23+
_, err = rng.Read(passphrase)
24+
require.NoError(t, err)
25+
26+
nonce1, encrypted1, err := dhash.EncryptAES(payload, passphrase)
27+
require.NoError(t, err)
28+
29+
nonce2, encrypted2, err := dhash.EncryptAES(payload, passphrase)
30+
require.NoError(t, err)
31+
32+
require.True(t, bytes.Equal(nonce1, nonce2))
33+
require.True(t, bytes.Equal(encrypted1, encrypted2))
34+
}
35+
36+
func TestCanDecryptEncryptedValue(t *testing.T) {
37+
rng := rand.New(rand.NewSource(1413))
38+
payload := make([]byte, 256)
39+
_, err := rng.Read(payload)
40+
if err != nil {
41+
panic(err)
42+
}
43+
passphrase := make([]byte, 32)
44+
_, err = rng.Read(passphrase)
45+
require.NoError(t, err)
46+
47+
nonce, encrypted, err := dhash.EncryptAES(payload, passphrase)
48+
require.NoError(t, err)
49+
50+
decrypted, err := dhash.DecryptAES(nonce, encrypted, passphrase)
51+
require.NoError(t, err)
52+
53+
require.True(t, bytes.Equal(payload, decrypted))
54+
}
55+
56+
func TestSecondMultihash(t *testing.T) {
57+
secondHashPrefix := []byte("CR_DOUBLEHASH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
58+
59+
mh := test.RandomMultihashes(1)[0]
60+
smh, err := dhash.SecondMultihash(mh)
61+
require.NoError(t, err)
62+
63+
h := sha256.New()
64+
h.Write(append(secondHashPrefix, mh...))
65+
digest := h.Sum(nil)
66+
67+
decoded, err := multihash.Decode(smh)
68+
require.NoError(t, err)
69+
70+
require.Equal(t, uint64(multihash.DBL_SHA2_256), decoded.Code)
71+
require.Equal(t, digest, decoded.Digest)
72+
}

0 commit comments

Comments
 (0)