Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sodium_generic_hash_benchmark
- import (
- "fmt"
- "unsafe"
- )
- // #cgo pkg-config: libsodium
- // #include <stdlib.h>
- // #include <sodium.h>
- import "C"
- func init() {
- var r int
- if r = int(C.sodium_init()); 0 != r {
- panic(fmt.Errorf("sodium_init(): rc = %d, expect rc = 0", r))
- }
- }
- func sodiumRandbytes(b []byte) {
- if 0 == len(b) {
- panic("target buffer is nil or zero-length")
- }
- var bp = unsafe.Pointer(&b[0])
- var bs = C.size_t(len(b))
- C.randombytes_buf(bp, bs)
- }
- func sodiumGenerichash(p, k, m []byte) int {
- var pp = (*C.uchar)(unsafe.Pointer(&p[0]))
- var ps = C.size_t(24)
- if cap(p) < int(ps) {
- panic("target buffer length less than required outlen")
- }
- var kp = (*C.uchar)(unsafe.Pointer(&k[0]))
- var ks = C.size_t(24)
- if len(k) < int(ks) {
- panic("key length less than required")
- }
- var mp = (*C.uchar)(unsafe.Pointer(&m[0]))
- var ms = C.ulonglong(len(m))
- if 0 == len(m) {
- panic("message buffer is nil or zero-length")
- }
- return int(C.crypto_generichash(pp, ps, mp, ms, kp, ks))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement