diff --git a/docker/bckp/kv_to_s3.go b/docker/bckp/kv_to_s3.go index 82dc96c..5b629b8 100644 --- a/docker/bckp/kv_to_s3.go +++ b/docker/bckp/kv_to_s3.go @@ -48,6 +48,7 @@ func main() { errIsPanic(err, "Unable to build a new client. %v", err) reader, _, err := consul.Snapshot().Save(&options) + defer reader.Close() errIsPanic(err, "Snapshot failed. %v", err) //--- Get encryption key and check it diff --git a/docker/bckp/sodium.go b/docker/bckp/sodium.go new file mode 100644 index 0000000..a4f25b4 --- /dev/null +++ b/docker/bckp/sodium.go @@ -0,0 +1,35 @@ +package main + +/* +#cgo CFLAGS: -g -Wall +#cgo LDFLAGS: -lsodium +#include +*/ +import "C" +import "log" + +const block_size int = 16 * 1024 // 16 KiB + +func main() { + log.Println("Test cgo") + ret := C.sodium_init() + if ret < 0 { + log.Panic("Failed to init sodium.") + } + //unsigned char array as requested + var key [C.crypto_secretstream_xchacha20poly1305_KEYBYTES]C.uchar + C.crypto_secretstream_xchacha20poly1305_keygen(&key[0]) + + var state C.crypto_secretstream_xchacha20poly1305_state + var header [C.crypto_secretstream_xchacha20poly1305_HEADERBYTES]C.uchar + + C.crypto_secretstream_xchacha20poly1305_init_push(&state, &header[0], &key[0]) + log.Print("key", key) + log.Print("header", header) + + var plain [block_size]C.uchar + var c1 [block_size + C.crypto_secretstream_xchacha20poly1305_ABYTES]C.uchar + + C.crypto_secretstream_xchacha20poly1305_push(&state, &c1[0], nil, &plain[0], C.ulonglong(len(plain)), nil, 0, 0) + log.Print("c1", c1) +}