package main /* #cgo CFLAGS: -g -Wall #cgo LDFLAGS: -lsodium #include */ import "C" import "log" const block_size int = 16 * 1024 // 16 KiB // Should take a reader as input and be a reader func (*Saliere) Read(p []byte) (n int, err error) 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) }