2018-04-11 14:41:50 +01:00
|
|
|
// Copyright (C) 2018 Storj Labs, Inc.
|
|
|
|
// See LICENSE for copying information.
|
|
|
|
|
|
|
|
package eestream
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"crypto/rand"
|
|
|
|
"io/ioutil"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func randData(amount int) []byte {
|
|
|
|
buf := make([]byte, amount)
|
|
|
|
_, err := rand.Read(buf)
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
return buf
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSecretbox(t *testing.T) {
|
2018-04-16 01:48:19 +01:00
|
|
|
var key [32]byte
|
|
|
|
copy(key[:], randData(32))
|
|
|
|
var firstNonce [24]byte
|
|
|
|
copy(firstNonce[:], randData(24))
|
|
|
|
encrypter, err := NewSecretboxEncrypter(&key, &firstNonce, 4*1024)
|
2018-04-11 14:41:50 +01:00
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
data := randData(encrypter.InBlockSize() * 10)
|
|
|
|
encrypted := TransformReader(bytes.NewReader(data),
|
|
|
|
encrypter, 0)
|
2018-04-16 01:48:19 +01:00
|
|
|
decrypter, err := NewSecretboxDecrypter(&key, &firstNonce, 4*1024)
|
2018-04-11 14:41:50 +01:00
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
decrypted := TransformReader(encrypted, decrypter, 0)
|
|
|
|
data2, err := ioutil.ReadAll(decrypted)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
if !bytes.Equal(data, data2) {
|
|
|
|
t.Fatalf("encryption/decryption failed")
|
|
|
|
}
|
|
|
|
}
|