aboutsummaryrefslogtreecommitdiff
path: root/src/BTLS/BoringSSL
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbaren@google.com>2018-08-31 17:14:38 -0400
committerGravatar Benjamin Barenblat <bbaren@google.com>2018-08-31 17:14:38 -0400
commitb1639dda870f22a78136b26295f98585e503fa98 (patch)
treeff69c9cbf0e4bdcc0e98e005227bf955d30b1682 /src/BTLS/BoringSSL
parent80f2fb2e3be2c4074fbfb0adbc47746d2d88813b (diff)
Marshal `ByteString` input arguments to `fun`s
Diffstat (limited to 'src/BTLS/BoringSSL')
-rw-r--r--src/BTLS/BoringSSL/Digest.chs5
-rw-r--r--src/BTLS/BoringSSL/HKDF.chs11
-rw-r--r--src/BTLS/BoringSSL/HMAC.chs7
3 files changed, 14 insertions, 9 deletions
diff --git a/src/BTLS/BoringSSL/Digest.chs b/src/BTLS/BoringSSL/Digest.chs
index f675c61..3b21636 100644
--- a/src/BTLS/BoringSSL/Digest.chs
+++ b/src/BTLS/BoringSSL/Digest.chs
@@ -21,11 +21,12 @@ module BTLS.BoringSSL.Digest
, evpMaxMDSize
) where
+import Data.ByteString (ByteString)
import Foreign (FinalizerPtr, ForeignPtr, Ptr, Storable(alignment, sizeOf))
import Foreign.C.Types
{#import BTLS.BoringSSL.Base#}
-import BTLS.Cast (asVoidPtr)
+import BTLS.Buffer (unsafeUseAsCBuffer)
import BTLS.CreateWithFinalizer (createWithFinalizer)
import BTLS.Result
@@ -50,7 +51,7 @@ foreign import ccall "&btlsFinalizeEVPMDCtx"
{`Ptr EVPMDCtx', `Ptr EVPMD', `Ptr Engine'} -> `()' requireSuccess*-#}
{#fun EVP_DigestUpdate as evpDigestUpdate
- {`Ptr EVPMDCtx', asVoidPtr `Ptr a', id `CULong'} -> `()' alwaysSucceeds*-#}
+ {`Ptr EVPMDCtx', unsafeUseAsCBuffer* `ByteString'&} -> `()' alwaysSucceeds*-#}
{#fun EVP_DigestFinal_ex as evpDigestFinalEx
{`Ptr EVPMDCtx', id `Ptr CUChar', id `Ptr CUInt'} -> `()' alwaysSucceeds*-#}
diff --git a/src/BTLS/BoringSSL/HKDF.chs b/src/BTLS/BoringSSL/HKDF.chs
index 87945d5..7a3181b 100644
--- a/src/BTLS/BoringSSL/HKDF.chs
+++ b/src/BTLS/BoringSSL/HKDF.chs
@@ -16,18 +16,21 @@ module BTLS.BoringSSL.HKDF
( hkdfExtract, hkdfExpand
) where
+import Data.ByteString (ByteString)
import Foreign (Ptr)
import Foreign.C.Types
{#import BTLS.BoringSSL.Base#}
+import BTLS.Buffer (unsafeUseAsCBuffer)
import BTLS.Result
#include <openssl/hkdf.h>
{#fun HKDF_extract as hkdfExtract
- { id `Ptr CUChar', id `Ptr CULong', `Ptr EVPMD', id `Ptr CUChar', id `CULong'
- , id `Ptr CUChar', id `CULong' } -> `()' requireSuccess*-#}
+ { id `Ptr CUChar', id `Ptr CULong', `Ptr EVPMD'
+ , unsafeUseAsCBuffer* `ByteString'&, unsafeUseAsCBuffer* `ByteString'& }
+ -> `()' requireSuccess*-#}
{#fun HKDF_expand as hkdfExpand
- { id `Ptr CUChar', id `CULong', `Ptr EVPMD', id `Ptr CUChar', id `CULong'
- , id `Ptr CUChar', id `CULong' } -> `()' requireSuccess*-#}
+ { id `Ptr CUChar', id `CULong', `Ptr EVPMD', unsafeUseAsCBuffer* `ByteString'&
+ , unsafeUseAsCBuffer* `ByteString'& } -> `()' requireSuccess*-#}
diff --git a/src/BTLS/BoringSSL/HMAC.chs b/src/BTLS/BoringSSL/HMAC.chs
index 1e5e82c..b708f85 100644
--- a/src/BTLS/BoringSSL/HMAC.chs
+++ b/src/BTLS/BoringSSL/HMAC.chs
@@ -19,11 +19,12 @@ module BTLS.BoringSSL.HMAC
, hmacInitEx, hmacUpdate, hmacFinal
) where
+import Data.ByteString (ByteString)
import Foreign (FinalizerPtr, ForeignPtr, Ptr, Storable(alignment, sizeOf))
import Foreign.C.Types
{#import BTLS.BoringSSL.Base#}
-import BTLS.Cast (asVoidPtr)
+import BTLS.Buffer (unsafeUseAsCBuffer)
import BTLS.CreateWithFinalizer (createWithFinalizer)
import BTLS.Result
@@ -37,11 +38,11 @@ foreign import ccall "&HMAC_CTX_cleanup"
hmacCtxCleanup :: FinalizerPtr HMACCtx
{#fun HMAC_Init_ex as hmacInitEx
- {`Ptr HMACCtx', asVoidPtr `Ptr a', id `CULong', `Ptr EVPMD', `Ptr Engine'}
+ {`Ptr HMACCtx', unsafeUseAsCBuffer* `ByteString'&, `Ptr EVPMD', `Ptr Engine'}
-> `()' requireSuccess*-#}
{#fun HMAC_Update as hmacUpdate
- {`Ptr HMACCtx', id `Ptr CUChar', id `CULong'} -> `()' alwaysSucceeds*-#}
+ {`Ptr HMACCtx', unsafeUseAsCBuffer* `ByteString'&} -> `()' alwaysSucceeds*-#}
{#fun HMAC_Final as hmacFinal
{`Ptr HMACCtx', id `Ptr CUChar', id `Ptr CUInt'} -> `()' requireSuccess*-#}