From 6626c1553a58bc6b02afbfb1f9bee742259a01ba Mon Sep 17 00:00:00 2001 From: LemonjamesD Date: Fri, 13 Oct 2023 21:55:25 -0400 Subject: [PATCH] Created Conversions module to use for the new functions in #106 --- libsodium-bindings/libsodium-bindings.cabal | 1 + .../src/LibSodium/Bindings/Conversions.hs | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 libsodium-bindings/src/LibSodium/Bindings/Conversions.hs diff --git a/libsodium-bindings/libsodium-bindings.cabal b/libsodium-bindings/libsodium-bindings.cabal index 8a1fe92b..50c6703b 100644 --- a/libsodium-bindings/libsodium-bindings.cabal +++ b/libsodium-bindings/libsodium-bindings.cabal @@ -68,6 +68,7 @@ library LibSodium.Bindings LibSodium.Bindings.AEAD LibSodium.Bindings.Comparison + LibSodium.Bindings.Conversions LibSodium.Bindings.CryptoAuth LibSodium.Bindings.CryptoBox LibSodium.Bindings.CryptoSign diff --git a/libsodium-bindings/src/LibSodium/Bindings/Conversions.hs b/libsodium-bindings/src/LibSodium/Bindings/Conversions.hs new file mode 100644 index 00000000..e4b5abd9 --- /dev/null +++ b/libsodium-bindings/src/LibSodium/Bindings/Conversions.hs @@ -0,0 +1,38 @@ +{-# LANGUAGE CApiFFI #-} + +-- | +-- Module: LibSodium.Bindings.Conversions +-- Description: Sodium Conversions +-- Copyright: (C) Lemon +-- License: MIT +-- Maintainer: lemonjameslem@protonmail.com +-- Stability: Stable +-- Portability: GHC only +module LibSodium.Bindings.Conversions + ( -- * Functions + ) where + +import Foreign +import Foreign.C +import Foreign.C.ConstPtr + +foreign import capi "sodium.h sodium_bin2base64" + sodiumBin2Base64 + :: ConstPtr CChar + -- ^ Resulting conversion to base64 is stored here including C null terminator + -> CSize + -- ^ Maximum number of bytes allowed to be stored in base64 number when converting + -- ^ WARNING: Must be 2 * binLen + 1 in size + -- ^ NOTE: This is `const size_t` in sodium + -> ConstPtr CUChar + -- ^ Decimal numbers to convert to base64 + -- ^ NOTE: This is `const unsigned char *const` in sodium + -> CSize + -- ^ Amount of bytes to convert to base64 + -- ^ NOTE: + -- ^ NOTE: This is `const size_t` in sodium + -> CInt + -- ^ The variant of base64 to use + -- ^ NOTE: This is `const int` in sodium + -> Ptr CChar + -- ^ The result of converting bin to base64