...
1
2
3
4
5
6
7
8
9
10 package mongocrypt
11
12
16 import "C"
17 import (
18 "unsafe"
19 )
20
21
22 type binary struct {
23 p *C.uint8_t
24 wrapped *C.mongocrypt_binary_t
25 }
26
27
28 func newBinary() *binary {
29 return &binary{
30 wrapped: C.mongocrypt_binary_new(),
31 }
32 }
33
34
35 func newBinaryFromBytes(data []byte) *binary {
36 if len(data) == 0 {
37 return newBinary()
38 }
39
40
41 addr := (*C.uint8_t)(C.CBytes(data))
42 dataLen := C.uint32_t(len(data))
43 return &binary{
44 p: addr,
45 wrapped: C.mongocrypt_binary_new_from_data(addr, dataLen),
46 }
47 }
48
49
50 func (b *binary) toBytes() []byte {
51 dataPtr := C.mongocrypt_binary_data(b.wrapped)
52 dataLen := C.mongocrypt_binary_len(b.wrapped)
53
54 return C.GoBytes(unsafe.Pointer(dataPtr), C.int(dataLen))
55 }
56
57
58 func (b *binary) close() {
59 if b.p != nil {
60 C.free(unsafe.Pointer(b.p))
61 }
62 C.mongocrypt_binary_destroy(b.wrapped)
63 }
64
View as plain text