HsOpenSSL 0.11.7.7 → 0.11.7.8
raw patch · 7 files changed
+24/−29 lines, 7 files
Files
- ChangeLog +7/−0
- HsOpenSSL.cabal +1/−1
- OpenSSL/BIO.hs +3/−3
- OpenSSL/BN.hsc +4/−4
- OpenSSL/EVP/Base64.hs +6/−6
- OpenSSL/EVP/Internal.hsc +3/−3
- cbits/HsOpenSSL.h +0/−12
ChangeLog view
@@ -1,3 +1,10 @@+2024-08-19 Vladimir Shabanov <dev@vshabanov.com>++ * HsOpenSSL.cabal (Version): Bump version to 0.11.7.8++ * Fix up incompatible pointer issues (#94)+ by Eric Mertens @glguy+ 2024-06-11 Vladimir Shabanov <dev@vshabanov.com> * HsOpenSSL.cabal (Version): Bump version to 0.11.7.7
HsOpenSSL.cabal view
@@ -10,7 +10,7 @@ systems and stable. You may also be interested in the @tls@ package, <http://hackage.haskell.org/package/tls>, which is a pure Haskell implementation of SSL.-Version: 0.11.7.7+Version: 0.11.7.8 License: PublicDomain License-File: COPYING Author: Adam Langley, Mikhail Vorozhtsov, PHO, Taru Karttunen
OpenSSL/BIO.hs view
@@ -411,10 +411,10 @@ {- mem ---------------------------------------------------------------------- -} -foreign import capi unsafe "openssl/bio.h BIO_s_mem"+foreign import ccall unsafe "openssl/bio.h BIO_s_mem" s_mem :: IO (Ptr BIO_METHOD) -foreign import capi unsafe "openssl/bio.h BIO_new_mem_buf"+foreign import ccall unsafe "openssl/bio.h BIO_new_mem_buf" _new_mem_buf :: Ptr CChar -> CInt -> IO (Ptr BIO_) @@ -466,7 +466,7 @@ {- null --------------------------------------------------------------------- -} -foreign import capi unsafe "openssl/bio.h BIO_s_null"+foreign import ccall unsafe "openssl/bio.h BIO_s_null" s_null :: IO (Ptr BIO_METHOD) -- |@'newNullBIO'@ creates a null BIO sink\/source. Data written to
OpenSSL/BN.hsc view
@@ -244,10 +244,10 @@ withBN dec m = bracket (integerToBN dec) (_free . unwrapBN) m foreign import capi unsafe "openssl/bn.h BN_bn2mpi"- _bn2mpi :: Ptr BIGNUM -> Ptr CChar -> IO CInt+ _bn2mpi :: Ptr BIGNUM -> Ptr CUChar -> IO CInt foreign import capi unsafe "openssl/bn.h BN_mpi2bn"- _mpi2bn :: Ptr CChar -> CInt -> Ptr BIGNUM -> IO (Ptr BIGNUM)+ _mpi2bn :: Ptr CUChar -> CInt -> Ptr BIGNUM -> IO (Ptr BIGNUM) -- |This is an alias to 'bnToInteger'. peekBN :: BigNum -> IO Integer@@ -265,13 +265,13 @@ bytes <- _bn2mpi (unwrapBN bn) nullPtr allocaBytes (fromIntegral bytes) (\buffer -> do _ <- _bn2mpi (unwrapBN bn) buffer- BS.packCStringLen (buffer, fromIntegral bytes))+ BS.packCStringLen (castPtr buffer, fromIntegral bytes)) -- | Convert an MPI into a BigNum. See bnToMPI for details of the format mpiToBN :: BS.ByteString -> IO BigNum mpiToBN mpi = do BS.useAsCStringLen mpi (\(ptr, len) -> do- _mpi2bn ptr (fromIntegral len) nullPtr) >>= return . wrapBN+ _mpi2bn (castPtr ptr) (fromIntegral len) nullPtr) >>= return . wrapBN -- | Convert an Integer to an MPI. See bnToMPI for the format integerToMPI :: Integer -> IO BS.ByteString
OpenSSL/EVP/Base64.hs view
@@ -22,9 +22,9 @@ import qualified Data.ByteString.Lazy.Char8 as L8 import Data.List #if MIN_VERSION_base(4,5,0)-import Foreign.C.Types (CChar(..), CInt(..))+import Foreign.C.Types (CUChar(..), CInt(..)) #else-import Foreign.C.Types (CChar, CInt)+import Foreign.C.Types (CUChar, CInt) #endif import Foreign.Ptr (Ptr, castPtr) import System.IO.Unsafe (unsafePerformIO)@@ -50,7 +50,7 @@ {- encode -------------------------------------------------------------------- -} foreign import capi unsafe "openssl/evp.h EVP_EncodeBlock"- _EncodeBlock :: Ptr CChar -> Ptr CChar -> CInt -> IO CInt+ _EncodeBlock :: Ptr CUChar -> Ptr CUChar -> CInt -> IO CInt encodeBlock :: B8.ByteString -> B8.ByteString@@ -59,7 +59,7 @@ unsafeUseAsCStringLen inBS $ \ (inBuf, inLen) -> createAndTrim maxOutLen $ \ outBuf -> fmap fromIntegral- (_EncodeBlock (castPtr outBuf) inBuf (fromIntegral inLen))+ (_EncodeBlock (castPtr outBuf) (castPtr inBuf) (fromIntegral inLen)) where maxOutLen = (inputLen `div` 3 + 1) * 4 + 1 -- +1: '\0' inputLen = B8.length inBS@@ -104,7 +104,7 @@ {- decode -------------------------------------------------------------------- -} foreign import capi unsafe "openssl/evp.h EVP_DecodeBlock"- _DecodeBlock :: Ptr CChar -> Ptr CChar -> CInt -> IO CInt+ _DecodeBlock :: Ptr CUChar -> Ptr CUChar -> CInt -> IO CInt decodeBlock :: B8.ByteString -> B8.ByteString@@ -113,7 +113,7 @@ unsafePerformIO $ unsafeUseAsCStringLen inBS $ \ (inBuf, inLen) -> createAndTrim (B8.length inBS) $ \ outBuf ->- _DecodeBlock (castPtr outBuf) inBuf (fromIntegral inLen)+ _DecodeBlock (castPtr outBuf) (castPtr inBuf) (fromIntegral inLen) >>= \ outLen -> return (fromIntegral outLen - paddingLen) where paddingLen :: Int
OpenSSL/EVP/Internal.hsc view
@@ -66,7 +66,7 @@ import Control.Applicative ((<$>)) #endif import Control.Exception (mask, mask_, bracket, onException)-import Foreign.C.Types (CChar)+import Foreign.C.Types (CChar, CUChar) #if MIN_VERSION_base(4,5,0) import Foreign.C.Types (CInt(..), CUInt(..), CSize(..)) #else@@ -335,10 +335,10 @@ _hmac_init :: Ptr HMAC_CTX -> Ptr () -> CInt -> Ptr EVP_MD -> IO CInt foreign import capi unsafe "openssl/hmac.h HMAC_Update"- _hmac_update :: Ptr HMAC_CTX -> Ptr CChar -> CInt -> IO CInt+ _hmac_update :: Ptr HMAC_CTX -> Ptr CUChar -> CSize -> IO CInt foreign import capi unsafe "openssl/hmac.h HMAC_Final"- _hmac_final :: Ptr HMAC_CTX -> Ptr CChar -> Ptr CInt -> IO CUInt+ _hmac_final :: Ptr HMAC_CTX -> Ptr CUChar -> Ptr CUInt -> IO CUInt foreign import capi unsafe "HsOpenSSL &HsOpenSSL_HMAC_CTX_free" _hmac_ctx_free :: FunPtr (Ptr HMAC_CTX -> IO ())
cbits/HsOpenSSL.h view
@@ -20,18 +20,6 @@ #include <openssl/x509v3.h> #include <openssl/dsa.h> -/* A dirty hack to work around for broken versions of Cabal:- * https://github.com/phonohawk/HsOpenSSL/issues/8- *- * The trick is to abuse the fact that -Icbits is (almost) always- * passed to hsc2hs so we can reach the cabal_macros.h from cbits, but- * see #23, #24 and #25...- */-#if !defined(MIN_VERSION_base) && \- !defined(HSOPENSSL_NEED_NOT_INCLUDE_CABAL_MACROS_H)-# include "../dist/build/autogen/cabal_macros.h"-#endif- /* LibreSSL *******************************************************************/ #if (defined LIBRESSL_VERSION_NUMBER && OPENSSL_VERSION_NUMBER == 0x20000000L) #undef OPENSSL_VERSION_NUMBER