aboutsummaryrefslogtreecommitdiff
path: root/src/Internal
diff options
context:
space:
mode:
Diffstat (limited to 'src/Internal')
-rw-r--r--src/Internal/Digest.chs8
-rw-r--r--src/Internal/HMAC.chs7
2 files changed, 5 insertions, 10 deletions
diff --git a/src/Internal/Digest.chs b/src/Internal/Digest.chs
index d451f1c..4708c47 100644
--- a/src/Internal/Digest.chs
+++ b/src/Internal/Digest.chs
@@ -28,6 +28,7 @@ import Foreign
import Foreign.C.Types
import Foreign.Ptr.Cast (asVoidPtr)
+import Foreign.Ptr.CreateWithFinalizer (createWithFinalizer)
{#import Internal.Base#}
import Result
@@ -43,11 +44,8 @@ evpSHA512 = {#call pure EVP_sha512 as ^#}
-- | Memory-safe allocator for 'EVPMDCtx'.
mallocEVPMDCtx :: IO (ForeignPtr EVPMDCtx)
-mallocEVPMDCtx = do
- fp <- mallocForeignPtr
- withForeignPtr fp {#call EVP_MD_CTX_init as ^#}
- addForeignPtrFinalizer btlsFinalizeEVPMDCtxPtr fp
- return fp
+mallocEVPMDCtx =
+ createWithFinalizer {#call EVP_MD_CTX_init as ^#} btlsFinalizeEVPMDCtxPtr
foreign import ccall "&btlsFinalizeEVPMDCtx"
btlsFinalizeEVPMDCtxPtr :: FinalizerPtr EVPMDCtx
diff --git a/src/Internal/HMAC.chs b/src/Internal/HMAC.chs
index 7e64edf..88ac1fb 100644
--- a/src/Internal/HMAC.chs
+++ b/src/Internal/HMAC.chs
@@ -26,6 +26,7 @@ import Foreign
import Foreign.C.Types
import Foreign.Ptr.Cast (asVoidPtr)
+import Foreign.Ptr.CreateWithFinalizer (createWithFinalizer)
{#import Internal.Base#}
import Result
@@ -33,11 +34,7 @@ import Result
-- | Memory-safe allocator for 'HMACCtx'.
mallocHMACCtx :: IO (ForeignPtr HMACCtx)
-mallocHMACCtx = do
- fp <- mallocForeignPtr
- withForeignPtr fp {#call HMAC_CTX_init as ^#}
- addForeignPtrFinalizer hmacCtxCleanup fp
- return fp
+mallocHMACCtx = createWithFinalizer {#call HMAC_CTX_init as ^#} hmacCtxCleanup
foreign import ccall "&HMAC_CTX_cleanup"
hmacCtxCleanup :: FinalizerPtr HMACCtx