cryptonite-openssl 0.5 → 0.6
raw patch · 3 files changed
+35/−7 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Crypto/OpenSSL/AES.hs +3/−5
- Crypto/OpenSSL/AES/Foreign.hsc +31/−1
- cryptonite-openssl.cabal +1/−1
Crypto/OpenSSL/AES.hs view
@@ -27,7 +27,6 @@ import Foreign.Storable import Data.ByteString (ByteString) import qualified Data.ByteArray as B-import qualified Data.Memory.PtrMethods as B (memSet) type GCMCtx = ForeignPtr EVP_CIPHER_CTX @@ -116,10 +115,9 @@ contextNew :: (Ptr EVP_CIPHER_CTX -> IO ()) -> IO GCMCtx contextNew f = do- ptr <- mallocBytes sizeofEVP- B.memSet (castPtr ptr) 0 (fromIntegral sizeofEVP)- f ptr- newForeignPtr ssl_c_cipher_ctx_cleanup ptr+ fptr <- compatNewEvpCipherCtx+ withForeignPtr fptr f+ return fptr nullEngine :: Ptr ENGINE nullEngine = nullPtr
Crypto/OpenSSL/AES/Foreign.hsc view
@@ -5,20 +5,31 @@ #include <openssl/opensslv.h> #include <openssl/evp.h> -#if OPENSSL_VERSION_NUMBER > 0x10001000+#if OPENSSL_VERSION_NUMBER >= 0x10100000+#define OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX+#endif++#if OPENSSL_VERSION_NUMBER >= 0x10001000 #define OPENSSL_HAS_PBKDF2 #define OPENSSL_HAS_GCM #endif +import Foreign.Marshal.Alloc import Foreign.Ptr+import Foreign.ForeignPtr import Foreign.C.Types import Data.Word+#ifndef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX+import qualified Data.Memory.PtrMethods as B (memSet)+#endif gcmTagLength :: Int gcmTagLength = 16 +#ifndef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX sizeofEVP :: Int sizeofEVP = (#const sizeof(EVP_CIPHER_CTX))+#endif data ENGINE @@ -32,14 +43,33 @@ type OutputOffset = Ptr CInt type InputLength = CInt +compatNewEvpCipherCtx :: IO (ForeignPtr EVP_CIPHER_CTX)+compatNewEvpCipherCtx = do+#ifdef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX+ ptr <- ssl_c_cipher_ctx_new+ newForeignPtr ssl_c_cipher_ctx_free ptr+#else+ ptr <- mallocBytes sizeofEVP+ B.memSet (castPtr ptr) 0 (fromIntegral sizeofEVP)+ ssl_c_cipher_ctx_init ptr+ newForeignPtr ssl_c_cipher_ctx_cleanup ptr+#endif++#ifdef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX+foreign import ccall unsafe "EVP_CIPHER_CTX_new"+ ssl_c_cipher_ctx_new :: IO (Ptr EVP_CIPHER_CTX)+#endif+ foreign import ccall unsafe "EVP_CIPHER_CTX_init" ssl_c_cipher_ctx_init :: Ptr EVP_CIPHER_CTX -> IO () foreign import ccall unsafe "&EVP_CIPHER_CTX_free" ssl_c_cipher_ctx_free :: FunPtr (Ptr EVP_CIPHER_CTX -> IO ()) +#ifndef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX foreign import ccall unsafe "&EVP_CIPHER_CTX_cleanup" ssl_c_cipher_ctx_cleanup :: FunPtr (Ptr EVP_CIPHER_CTX -> IO ())+#endif foreign import ccall unsafe "EVP_CIPHER_CTX_ctrl" ssl_c_cipher_ctx_ctrl :: Ptr EVP_CIPHER_CTX -> CInt -> CInt -> Ptr a -> IO CInt
cryptonite-openssl.cabal view
@@ -1,5 +1,5 @@ Name: cryptonite-openssl-Version: 0.5+Version: 0.6 Synopsis: Crypto stuff using OpenSSL cryptographic library Description: cryptography License: BSD3