aboutsummaryrefslogtreecommitdiff
path: root/docker/bckp/sodium.go
diff options
context:
space:
mode:
Diffstat (limited to 'docker/bckp/sodium.go')
-rw-r--r--docker/bckp/sodium.go35
1 files changed, 35 insertions, 0 deletions
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 <sodium.h>
+*/
+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)
+}