aboutsummaryrefslogtreecommitdiff
path: root/crypto.go
diff options
context:
space:
mode:
authorDeterminant <ted.sybil@gmail.com>2019-06-30 18:35:20 -0400
committerDeterminant <ted.sybil@gmail.com>2019-06-30 18:35:20 -0400
commitbbe214128b6f7cb4e57fcda7adc3205ec9ec66cb (patch)
tree67563de5f0ab2bd9cef29e5ed7efb25398f6219c /crypto.go
parentd247c437f396709f62eadaf863b8a552d7142fc7 (diff)
allow manual memory management for types frequently used in messaging
Diffstat (limited to 'crypto.go')
-rw-r--r--crypto.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/crypto.go b/crypto.go
index c0012d7..aba5602 100644
--- a/crypto.go
+++ b/crypto.go
@@ -47,9 +47,9 @@ func (self X509) GetPubKey() PKey {
return res
}
-func (self X509) GetDer() ByteArray {
- res := &byteArray{ inner: C.x509_get_der(self.inner) }
- runtime.SetFinalizer(res, func(self ByteArray) { self.free() })
+func (self X509) GetDer(autoFree bool) ByteArray {
+ res := ByteArrayFromC(C.x509_get_der(self.inner))
+ byteArraySetFinalizer(res, autoFree)
return res
}
@@ -85,14 +85,14 @@ func NewPrivKeyFromDer(der ByteArray, err *Error) PKey {
}
func (self PKey) free() { C.pkey_free(self.inner) }
-func (self PKey) GetPubKeyDer() ByteArray {
- res := &byteArray{ inner: C.pkey_get_pubkey_der(self.inner) }
- runtime.SetFinalizer(res, func(self ByteArray) { self.free() })
+func (self PKey) GetPubKeyDer(autoFree bool) ByteArray {
+ res := ByteArrayFromC(C.pkey_get_pubkey_der(self.inner))
+ byteArraySetFinalizer(res, autoFree)
return res
}
-func (self PKey) GetPrivKeyDer() ByteArray {
- res := &byteArray{ inner: C.pkey_get_privkey_der(self.inner) }
- runtime.SetFinalizer(res, func(self ByteArray) { self.free() })
+func (self PKey) GetPrivKeyDer(autoFree bool) ByteArray {
+ res := ByteArrayFromC(C.pkey_get_privkey_der(self.inner))
+ byteArraySetFinalizer(res, autoFree)
return res
}