aboutsummaryrefslogtreecommitdiff
path: root/docker/bckp/sodium.go
blob: a4f25b48b5babb1c9b2c93e2042cb151bb3655b0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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)
}