Chlorure/sodium/secret_stream.go

40 lines
1.0 KiB
Go

package main
/*
#cgo CFLAGS: -g -Wall
#cgo LDFLAGS: -lsodium
#include <sodium.h>
*/
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)
}