s2n-tls-ffi 0.1.0.0 → 0.2.0.0
raw patch · 6 files changed
+79/−25 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- S2nTls.Ffi: instance GHC.Exception.Type.Exception S2nTls.Ffi.LoadError
- S2nTls.Ffi: instance GHC.Show.Show S2nTls.Ffi.Library
- S2nTls.Ffi: instance GHC.Show.Show S2nTls.Ffi.LoadError
- S2nTls.Ffi: instance GHC.Show.Show S2nTls.Ffi.MethodRequirement
- S2nTls.Ffi: instance S2nTls.Ffi.TransformError (GHC.Ptr.Ptr a)
- S2nTls.Ffi: instance S2nTls.Ffi.TransformError Foreign.C.Types.CInt
- S2nTls.Ffi: instance S2nTls.Ffi.TransformError Foreign.C.Types.CSize
- S2nTls.Ffi: instance S2nTls.Ffi.TransformError System.Posix.Types.CSsize
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nAlertBehavior
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nAsyncPkeyOpType
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nAsyncPkeyValidationMode
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nBlinding
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nBlockedStatus
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nCertAuthType
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nCertSniMatch
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nClientHelloCbMode
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nCtSupportLevel
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nEarlyDataStatus
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nError
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nErrorFuncs
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nErrorType
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nFipsMode
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nMaxFragLen
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nMode
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nPeerKeyUpdate
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nPskHmac
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nPskMode
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nSerializationVersion
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nStatusRequestType
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nTlsExtensionType
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nTlsHashAlgorithm
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nTlsSignatureAlgorithm
- S2nTls.Ffi.Types: instance Foreign.Storable.Storable S2nTls.Ffi.Types.S2nVerifyAfterSign
- S2nTls.Ffi.Types: instance GHC.Exception.Type.Exception S2nTls.Ffi.Types.MissingSymbol
- S2nTls.Ffi.Types: instance GHC.Exception.Type.Exception S2nTls.Ffi.Types.S2nError
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.MissingSymbol
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nAlertBehavior
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nAsyncPkeyOpType
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nAsyncPkeyValidationMode
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nBlinding
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nBlockedStatus
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nCertAuthType
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nCertSniMatch
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nClientHelloCbMode
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nCtSupportLevel
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nEarlyDataStatus
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nError
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nErrorType
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nFipsMode
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nMaxFragLen
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nMode
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nPeerKeyUpdate
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nPskHmac
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nPskMode
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nSerializationVersion
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nStatusRequestType
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nTlsExtensionType
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nTlsHashAlgorithm
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nTlsSignatureAlgorithm
- S2nTls.Ffi.Types: instance GHC.Show.Show S2nTls.Ffi.Types.S2nVerifyAfterSign
+ S2nTls.Ffi: instance GHC.Internal.Exception.Type.Exception S2nTls.Ffi.LoadError
+ S2nTls.Ffi: instance GHC.Internal.Show.Show S2nTls.Ffi.Library
+ S2nTls.Ffi: instance GHC.Internal.Show.Show S2nTls.Ffi.LoadError
+ S2nTls.Ffi: instance GHC.Internal.Show.Show S2nTls.Ffi.MethodRequirement
+ S2nTls.Ffi: instance S2nTls.Ffi.TransformError (GHC.Internal.Ptr.Ptr a)
+ S2nTls.Ffi: instance S2nTls.Ffi.TransformError GHC.Internal.Foreign.C.Types.CInt
+ S2nTls.Ffi: instance S2nTls.Ffi.TransformError GHC.Internal.Foreign.C.Types.CSize
+ S2nTls.Ffi: instance S2nTls.Ffi.TransformError GHC.Internal.System.Posix.Types.CSsize
+ S2nTls.Ffi.Types: instance GHC.Internal.Exception.Type.Exception S2nTls.Ffi.Types.MissingSymbol
+ S2nTls.Ffi.Types: instance GHC.Internal.Exception.Type.Exception S2nTls.Ffi.Types.S2nError
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nAlertBehavior
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nAsyncPkeyOpType
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nAsyncPkeyValidationMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nBlinding
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nBlockedStatus
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nCertAuthType
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nCertSniMatch
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nClientHelloCbMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nCtSupportLevel
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nEarlyDataStatus
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nError
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nErrorFuncs
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nErrorType
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nFipsMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nMaxFragLen
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nPeerKeyUpdate
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nPskHmac
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nPskMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nSerializationVersion
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nStatusRequestType
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nTlsExtensionType
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nTlsHashAlgorithm
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nTlsSignatureAlgorithm
+ S2nTls.Ffi.Types: instance GHC.Internal.Foreign.Storable.Storable S2nTls.Ffi.Types.S2nVerifyAfterSign
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.MissingSymbol
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nAlertBehavior
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nAsyncPkeyOpType
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nAsyncPkeyValidationMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nBlinding
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nBlockedStatus
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nCertAuthType
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nCertSniMatch
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nClientHelloCbMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nCtSupportLevel
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nEarlyDataStatus
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nError
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nErrorType
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nFipsMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nMaxFragLen
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nPeerKeyUpdate
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nPskHmac
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nPskMode
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nSerializationVersion
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nStatusRequestType
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nTlsExtensionType
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nTlsHashAlgorithm
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nTlsSignatureAlgorithm
+ S2nTls.Ffi.Types: instance GHC.Internal.Show.Show S2nTls.Ffi.Types.S2nVerifyAfterSign
- S2nTls.Ffi: S2nTlsFfi :: [String] -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO CLong -> (Ptr S2nFipsMode -> IO (Either S2nError CInt)) -> IO (Ptr CInt) -> (CInt -> IO S2nErrorType) -> (CInt -> CString -> IO CString) -> (CInt -> CString -> IO CString) -> (CInt -> IO CString) -> (CInt -> IO CString) -> IO CBool -> (CInt -> IO (Either S2nError CInt)) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> (Ptr S2nStacktrace -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nConfig)) -> IO (Either S2nError (Ptr S2nConfig)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClockTimeNanoseconds -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClockTimeNanoseconds -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheStoreCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheRetrieveCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheDeleteCallback -> Ptr () -> IO (Either S2nError CInt)) -> (S2nMemInitCallback -> S2nMemCleanupCallback -> S2nMemMallocCallback -> S2nMemFreeCallback -> IO (Either S2nError CInt)) -> (S2nRandInitCallback -> S2nRandCleanupCallback -> S2nRandSeedCallback -> S2nRandMixCallback -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nCertChainAndKey)) -> (Ptr S2nCertChainAndKey -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> IO (Ptr ())) -> (Ptr S2nCertChainAndKey -> IO (Either S2nError (Ptr S2nCertPrivateKey))) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCertTiebreakCallback -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr (Ptr S2nCertChainAndKey) -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nVerifyAfterSign -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nVerifyHostFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr CString -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nStatusRequestType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCtSupportLevel -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAlertBehavior -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nMaxFragLen -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr (Ptr ()) -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClientHelloFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClientHelloCbMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nPskMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nPskSelectionCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAsyncPkeyFn -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAsyncPkeyValidationMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nSessionTicketFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nKeyLogFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nEarlyDataCb -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word16 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nSerializationVersion -> IO (Either S2nError CInt)) -> (S2nMode -> IO (Either S2nError (Ptr S2nConnection))) -> (Ptr S2nConnection -> Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr ()))) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr S2nClientHello))) -> (Ptr Word8 -> Word32 -> IO (Either S2nError (Ptr S2nClientHello))) -> (Ptr (Ptr S2nClientHello) -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> S2nTlsExtensionType -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Word16 -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Ptr Word32 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word16 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nRecvFn -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nSendFn -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word32) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nVerifyHostFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nBlinding -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nPeerKeyUpdate -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CString -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError (Ptr Word8))) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError (Ptr Word8))) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CSsize)) -> (Ptr S2nConnection -> Ptr () -> CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CSsize)) -> (Ptr S2nConnection -> IO Word32) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> Ptr CSize -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> CSize -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsSignatureAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsHashAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsSignatureAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsHashAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr S2nCertChainAndKey))) -> (Ptr S2nCertChainAndKey -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr (Ptr S2nCert) -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr Word8 -> Word32 -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nPsk)) -> (Ptr (Ptr S2nPsk) -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> S2nPskHmac -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nPsk -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nPskMode -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nOfferedPsk)) -> (Ptr (Ptr S2nOfferedPsk) -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPsk -> Ptr (Ptr Word8) -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> IO CBool) -> (Ptr S2nOfferedPskList -> Ptr S2nOfferedPsk -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> Ptr S2nOfferedPsk -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Word32 -> Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr S2nCertSniMatch -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nCertPrivateKey -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nAsyncPkeyOpType -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nEarlyDataStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSsize -> Ptr CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSsize -> Ptr CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> S2nTlsFfi
+ S2nTls.Ffi: S2nTlsFfi :: [String] -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO CLong -> (Ptr S2nFipsMode -> IO (Either S2nError CInt)) -> IO (Ptr CInt) -> (CInt -> IO S2nErrorType) -> (CInt -> CString -> IO CString) -> (CInt -> CString -> IO CString) -> (CInt -> IO CString) -> (CInt -> IO CString) -> IO CBool -> (CInt -> IO (Either S2nError CInt)) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> (Ptr S2nStacktrace -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nConfig)) -> IO (Either S2nError (Ptr S2nConfig)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClockTimeNanoseconds -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClockTimeNanoseconds -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheStoreCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheRetrieveCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheDeleteCallback -> Ptr () -> IO (Either S2nError CInt)) -> (S2nMemInitCallback -> S2nMemCleanupCallback -> S2nMemMallocCallback -> S2nMemFreeCallback -> IO (Either S2nError CInt)) -> (S2nRandInitCallback -> S2nRandCleanupCallback -> S2nRandSeedCallback -> S2nRandMixCallback -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nCertChainAndKey)) -> (Ptr S2nCertChainAndKey -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> IO (Ptr ())) -> (Ptr S2nCertChainAndKey -> IO (Either S2nError (Ptr S2nCertPrivateKey))) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCertTiebreakCallback -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr (Ptr S2nCertChainAndKey) -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nVerifyAfterSign -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nVerifyHostFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr CString -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nStatusRequestType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCtSupportLevel -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAlertBehavior -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nMaxFragLen -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr (Ptr ()) -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClientHelloFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClientHelloCbMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nPskMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nPskSelectionCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAsyncPkeyFn -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAsyncPkeyValidationMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nSessionTicketFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nKeyLogFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nEarlyDataCb -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word16 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nSerializationVersion -> IO (Either S2nError CInt)) -> (S2nMode -> IO (Either S2nError (Ptr S2nConnection))) -> (Ptr S2nConnection -> Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr ()))) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr S2nClientHello))) -> (Ptr Word8 -> Word32 -> IO (Either S2nError (Ptr S2nClientHello))) -> (Ptr (Ptr S2nClientHello) -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> S2nTlsExtensionType -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Word16 -> Ptr CBool -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Ptr Word32 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word16 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nRecvFn -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nSendFn -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word32) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nVerifyHostFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nBlinding -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nPeerKeyUpdate -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CString -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError (Ptr Word8))) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError (Ptr Word8))) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CSsize)) -> (Ptr S2nConnection -> Ptr () -> CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CSsize)) -> (Ptr S2nConnection -> IO Word32) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> Ptr CSize -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> CSize -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsSignatureAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsHashAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsSignatureAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsHashAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr S2nCertChainAndKey))) -> (Ptr S2nCertChainAndKey -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr (Ptr S2nCert) -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CBool -> IO (Either S2nError CInt)) -> (Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr Word8 -> Word32 -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nPsk)) -> (Ptr (Ptr S2nPsk) -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> S2nPskHmac -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nPsk -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nPskMode -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nOfferedPsk)) -> (Ptr (Ptr S2nOfferedPsk) -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPsk -> Ptr (Ptr Word8) -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> IO CBool) -> (Ptr S2nOfferedPskList -> Ptr S2nOfferedPsk -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> Ptr S2nOfferedPsk -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Word32 -> Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr S2nCertSniMatch -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nCertPrivateKey -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nAsyncPkeyOpType -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nEarlyDataStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSsize -> Ptr CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSsize -> Ptr CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> S2nTlsFfi
- S2nTls.Ffi: [s2n_cert_get_x509_extension_value] :: S2nTlsFfi -> Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CInt -> IO (Either S2nError CInt)
+ S2nTls.Ffi: [s2n_cert_get_x509_extension_value] :: S2nTlsFfi -> Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CBool -> IO (Either S2nError CInt)
- S2nTls.Ffi: [s2n_client_hello_has_extension] :: S2nTlsFfi -> Ptr S2nClientHello -> Word16 -> Ptr CInt -> IO (Either S2nError CInt)
+ S2nTls.Ffi: [s2n_client_hello_has_extension] :: S2nTlsFfi -> Ptr S2nClientHello -> Word16 -> Ptr CBool -> IO (Either S2nError CInt)
- S2nTls.Ffi.Types: S2nTlsFfi :: [String] -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO CLong -> (Ptr S2nFipsMode -> IO (Either S2nError CInt)) -> IO (Ptr CInt) -> (CInt -> IO S2nErrorType) -> (CInt -> CString -> IO CString) -> (CInt -> CString -> IO CString) -> (CInt -> IO CString) -> (CInt -> IO CString) -> IO CBool -> (CInt -> IO (Either S2nError CInt)) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> (Ptr S2nStacktrace -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nConfig)) -> IO (Either S2nError (Ptr S2nConfig)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClockTimeNanoseconds -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClockTimeNanoseconds -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheStoreCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheRetrieveCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheDeleteCallback -> Ptr () -> IO (Either S2nError CInt)) -> (S2nMemInitCallback -> S2nMemCleanupCallback -> S2nMemMallocCallback -> S2nMemFreeCallback -> IO (Either S2nError CInt)) -> (S2nRandInitCallback -> S2nRandCleanupCallback -> S2nRandSeedCallback -> S2nRandMixCallback -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nCertChainAndKey)) -> (Ptr S2nCertChainAndKey -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> IO (Ptr ())) -> (Ptr S2nCertChainAndKey -> IO (Either S2nError (Ptr S2nCertPrivateKey))) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCertTiebreakCallback -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr (Ptr S2nCertChainAndKey) -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nVerifyAfterSign -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nVerifyHostFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr CString -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nStatusRequestType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCtSupportLevel -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAlertBehavior -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nMaxFragLen -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr (Ptr ()) -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClientHelloFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClientHelloCbMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nPskMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nPskSelectionCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAsyncPkeyFn -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAsyncPkeyValidationMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nSessionTicketFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nKeyLogFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nEarlyDataCb -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word16 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nSerializationVersion -> IO (Either S2nError CInt)) -> (S2nMode -> IO (Either S2nError (Ptr S2nConnection))) -> (Ptr S2nConnection -> Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr ()))) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr S2nClientHello))) -> (Ptr Word8 -> Word32 -> IO (Either S2nError (Ptr S2nClientHello))) -> (Ptr (Ptr S2nClientHello) -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> S2nTlsExtensionType -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Word16 -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Ptr Word32 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word16 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nRecvFn -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nSendFn -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word32) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nVerifyHostFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nBlinding -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nPeerKeyUpdate -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CString -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError (Ptr Word8))) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError (Ptr Word8))) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CSsize)) -> (Ptr S2nConnection -> Ptr () -> CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CSsize)) -> (Ptr S2nConnection -> IO Word32) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> Ptr CSize -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> CSize -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsSignatureAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsHashAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsSignatureAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsHashAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr S2nCertChainAndKey))) -> (Ptr S2nCertChainAndKey -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr (Ptr S2nCert) -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr Word8 -> Word32 -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nPsk)) -> (Ptr (Ptr S2nPsk) -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> S2nPskHmac -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nPsk -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nPskMode -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nOfferedPsk)) -> (Ptr (Ptr S2nOfferedPsk) -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPsk -> Ptr (Ptr Word8) -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> IO CBool) -> (Ptr S2nOfferedPskList -> Ptr S2nOfferedPsk -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> Ptr S2nOfferedPsk -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Word32 -> Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr S2nCertSniMatch -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nCertPrivateKey -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nAsyncPkeyOpType -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nEarlyDataStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSsize -> Ptr CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSsize -> Ptr CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> S2nTlsFfi
+ S2nTls.Ffi.Types: S2nTlsFfi :: [String] -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> IO CLong -> (Ptr S2nFipsMode -> IO (Either S2nError CInt)) -> IO (Ptr CInt) -> (CInt -> IO S2nErrorType) -> (CInt -> CString -> IO CString) -> (CInt -> CString -> IO CString) -> (CInt -> IO CString) -> (CInt -> IO CString) -> IO CBool -> (CInt -> IO (Either S2nError CInt)) -> IO (Either S2nError CInt) -> IO (Either S2nError CInt) -> (Ptr S2nStacktrace -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nConfig)) -> IO (Either S2nError (Ptr S2nConfig)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClockTimeNanoseconds -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClockTimeNanoseconds -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheStoreCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheRetrieveCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCacheDeleteCallback -> Ptr () -> IO (Either S2nError CInt)) -> (S2nMemInitCallback -> S2nMemCleanupCallback -> S2nMemMallocCallback -> S2nMemFreeCallback -> IO (Either S2nError CInt)) -> (S2nRandInitCallback -> S2nRandCleanupCallback -> S2nRandSeedCallback -> S2nRandMixCallback -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nCertChainAndKey)) -> (Ptr S2nCertChainAndKey -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> IO (Ptr ())) -> (Ptr S2nCertChainAndKey -> IO (Either S2nError (Ptr S2nCertPrivateKey))) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCertTiebreakCallback -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr (Ptr S2nCertChainAndKey) -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nVerifyAfterSign -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nVerifyHostFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr CString -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nStatusRequestType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCtSupportLevel -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAlertBehavior -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nMaxFragLen -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> Word64 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr (Ptr ()) -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClientHelloFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nClientHelloCbMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nPskMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nPskSelectionCallback -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAsyncPkeyFn -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nAsyncPkeyValidationMode -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nSessionTicketFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nKeyLogFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nEarlyDataCb -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> Ptr Word16 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConfig -> S2nSerializationVersion -> IO (Either S2nError CInt)) -> (S2nMode -> IO (Either S2nError (Ptr S2nConnection))) -> (Ptr S2nConnection -> Ptr S2nConfig -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr ()))) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr S2nClientHello))) -> (Ptr Word8 -> Word32 -> IO (Either S2nError (Ptr S2nClientHello))) -> (Ptr (Ptr S2nClientHello) -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> S2nTlsExtensionType -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)) -> (Ptr S2nClientHello -> Word16 -> Ptr CBool -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Ptr Word32 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word16 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> Word16 -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nClientHello -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nRecvFn -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nSendFn -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word32) -> (Ptr S2nConnection -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nVerifyHostFn -> Ptr () -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nBlinding -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nPeerKeyUpdate -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr CString -> CInt -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError (Ptr Word8))) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError (Ptr Word8))) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr () -> CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CSsize)) -> (Ptr S2nConnection -> Ptr () -> CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CSsize)) -> (Ptr S2nConnection -> IO Word32) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nCertAuthType -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> Ptr CSize -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> CSize -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nSessionTicket -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsSignatureAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsHashAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsSignatureAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nTlsHashAlgorithm -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError (Ptr S2nCertChainAndKey))) -> (Ptr S2nCertChainAndKey -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCertChainAndKey -> Ptr (Ptr S2nCert) -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CBool -> IO (Either S2nError CInt)) -> (Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr Word8 -> Word32 -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nPsk)) -> (Ptr (Ptr S2nPsk) -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> S2nPskHmac -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nPsk -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> S2nPskMode -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> IO (Either S2nError (Ptr S2nOfferedPsk)) -> (Ptr (Ptr S2nOfferedPsk) -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPsk -> Ptr (Ptr Word8) -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> IO CBool) -> (Ptr S2nOfferedPskList -> Ptr S2nOfferedPsk -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedPskList -> Ptr S2nOfferedPsk -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Word32 -> Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nPsk -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> IO Word64) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr S2nCertSniMatch -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSize -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Ptr Word8 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> Ptr CString -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nConnection -> IO (Either S2nError CString)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nCertPrivateKey -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nConnection -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr S2nAsyncPkeyOpType -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nAsyncPkeyOp -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr S2nEarlyDataStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSsize -> Ptr CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> CSsize -> Ptr CSsize -> Ptr S2nBlockedStatus -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> Ptr Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> Ptr Word8 -> Word16 -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> IO (Either S2nError CInt)) -> (Ptr S2nOfferedEarlyData -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> (Ptr S2nConnection -> Ptr Word8 -> Word32 -> IO (Either S2nError CInt)) -> S2nTlsFfi
- S2nTls.Ffi.Types: [s2n_cert_get_x509_extension_value] :: S2nTlsFfi -> Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CInt -> IO (Either S2nError CInt)
+ S2nTls.Ffi.Types: [s2n_cert_get_x509_extension_value] :: S2nTlsFfi -> Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CBool -> IO (Either S2nError CInt)
- S2nTls.Ffi.Types: [s2n_client_hello_has_extension] :: S2nTlsFfi -> Ptr S2nClientHello -> Word16 -> Ptr CInt -> IO (Either S2nError CInt)
+ S2nTls.Ffi.Types: [s2n_client_hello_has_extension] :: S2nTlsFfi -> Ptr S2nClientHello -> Word16 -> Ptr CBool -> IO (Either S2nError CInt)
- S2nTls.Ffi.Types: type S2nCertTiebreakCallback = FunPtr Ptr S2nCertChainAndKey -> Ptr S2nCertChainAndKey -> Word8 -> Ptr Ptr S2nCertChainAndKey -> IO CInt
+ S2nTls.Ffi.Types: type S2nCertTiebreakCallback = FunPtr Ptr S2nCertChainAndKey -> Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO Ptr S2nCertChainAndKey
- S2nTls.Ffi.Types: type S2nMemMallocCallback = FunPtr Ptr Ptr () -> Word32 -> Word32 -> IO CInt
+ S2nTls.Ffi.Types: type S2nMemMallocCallback = FunPtr Ptr Ptr () -> Word32 -> Ptr Word32 -> IO CInt
Files
- CHANGELOG.md +34/−0
- cbits/s2n_wrapper.c +4/−4
- cbits/s2n_wrapper.h +4/−4
- s2n-tls-ffi.cabal +3/−3
- src/S2nTls/Ffi.hs +30/−10
- src/S2nTls/Ffi/Types.hs +4/−4
CHANGELOG.md view
@@ -1,5 +1,39 @@ # Changelog +## 0.2.0.0 -- 2026-09-08++Corrects four FFI signatures that did not match the s2n-tls C API. These were+found by auditing all 245 wrapped functions against the s2n-tls 1.6.4 header.+`cbits/s2n_wrapper.c` does not include `s2n.h`, so none of them were caught at+compile time.++### Breaking changes++* `s2n_client_hello_has_extension` and `s2n_cert_get_x509_extension_value` take+ `Ptr CBool` for their `bool *` out-parameters, previously `Ptr CInt`. s2n+ writes a single byte, so callers that allocated a `CInt` read three bytes of+ uninitialized memory and could see a nonzero result for an absent extension.+ Callers must switch to `alloca @CBool`.+* `S2nCertTiebreakCallback` is now+ `Ptr S2nCertChainAndKey -> Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Ptr S2nCertChainAndKey)`.+ The previous type took the certificate name by value instead of by pointer,+ took the name length by pointer instead of by value, and returned `CInt`+ where s2n expects a certificate chain pointer. Installing a tiebreak callback+ built against the old type would have crashed.+* `S2nMemMallocCallback` takes `Ptr Word32` for its `allocated` out-parameter,+ previously `Word32`. A custom allocator had no way to report its allocation+ size back to s2n.++### Fixed++* Missing optional symbols are recorded in `missingSymbols` again. `dlsym`+ throws an `IOError` for an absent symbol rather than returning `nullFunPtr`,+ which made the null checks in the loader dead code -- a missing optional+ symbol escaped `withS2nTlsFfi` as an opaque `user error` and `missingSymbols`+ could never report anything but `[]`.+* A missing error-reporting symbol now raises the typed `RequiredSymbolNotFound`+ instead of an untyped `IOError`.+ ## 0.1.0.0 -- 2026-04-28 * Initial release
cbits/s2n_wrapper.c view
@@ -1393,8 +1393,8 @@ } int s2n_wrap_client_hello_has_extension(- int (*fn)(void *, uint16_t, int *),- void *client_hello, uint16_t extension_iana, int *exists,+ int (*fn)(void *, uint16_t, bool *),+ void *client_hello, uint16_t extension_iana, bool *exists, const S2nErrorFuncs *err_funcs, S2nErrorInfo *err_out) { int result = fn(client_hello, extension_iana, exists);@@ -2394,8 +2394,8 @@ } int s2n_wrap_cert_get_x509_extension_value(- int (*fn)(void *, const uint8_t *, uint8_t *, uint32_t *, int *),- void *cert, const uint8_t *oid, uint8_t *value, uint32_t *length, int *critical,+ int (*fn)(void *, const uint8_t *, uint8_t *, uint32_t *, bool *),+ void *cert, const uint8_t *oid, uint8_t *value, uint32_t *length, bool *critical, const S2nErrorFuncs *err_funcs, S2nErrorInfo *err_out) { int result = fn(cert, oid, value, length, critical);
cbits/s2n_wrapper.h view
@@ -602,8 +602,8 @@ const S2nErrorFuncs *err_funcs, S2nErrorInfo *err_out); int s2n_wrap_client_hello_has_extension(- int (*fn)(void *, uint16_t, int *),- void *client_hello, uint16_t extension_iana, int *exists,+ int (*fn)(void *, uint16_t, bool *),+ void *client_hello, uint16_t extension_iana, bool *exists, const S2nErrorFuncs *err_funcs, S2nErrorInfo *err_out); int s2n_wrap_client_hello_get_session_id_length(@@ -985,8 +985,8 @@ const S2nErrorFuncs *err_funcs, S2nErrorInfo *err_out); int s2n_wrap_cert_get_x509_extension_value(- int (*fn)(void *, const uint8_t *, uint8_t *, uint32_t *, int *),- void *cert, const uint8_t *oid, uint8_t *value, uint32_t *length, int *critical,+ int (*fn)(void *, const uint8_t *, uint8_t *, uint32_t *, bool *),+ void *cert, const uint8_t *oid, uint8_t *value, uint32_t *length, bool *critical, const S2nErrorFuncs *err_funcs, S2nErrorInfo *err_out); int s2n_wrap_cert_get_utf8_string_from_extension_data_length(
s2n-tls-ffi.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: s2n-tls-ffi-version: 0.1.0.0+version: 0.2.0.0 synopsis: Low-level FFI bindings to the s2n-tls library description: Low-level FFI bindings to the s2n-tls library.@@ -12,7 +12,7 @@ copyright: 2026 Daniel Goertzen category: Cryptography, FFI, Network build-type: Simple-tested-with: GHC == 9.8.2+tested-with: GHC == 9.12.2 extra-doc-files: CHANGELOG.md README.md@@ -27,7 +27,7 @@ source-repository this type: git location: https://github.com/goertzenator/s2n-tls-ffi.git- tag: v0.1.0.0+ tag: v0.2.0.0 library exposed-modules:
src/S2nTls/Ffi.hs view
@@ -112,7 +112,7 @@ S2nErrorFuncs (..), ) where -import Control.Exception (Exception, bracket, throwIO)+import Control.Exception (Exception, IOException, bracket, catch, throwIO) import Control.Monad (when) import Data.IORef (modifyIORef', newIORef, readIORef) import Data.Word (Word16, Word32, Word64, Word8)@@ -235,13 +235,33 @@ openLib :: FilePath -> IO DL openLib path = dlopen path [RTLD_LAZY, RTLD_LOCAL] --- | Load the error functions (required for meaningful error reporting)+{- | Look up a symbol, yielding 'nullFunPtr' when it is absent.++'dlsym' signals a missing symbol by throwing an untyped 'IOError' rather than+returning 'nullFunPtr', so every caller that wants to tolerate a missing symbol+has to recover it explicitly.+-}+dlsymMaybe :: DL -> String -> IO (FunPtr a)+dlsymMaybe dl name = dlsym dl name `catch` \(_ :: IOException) -> pure nullFunPtr++{- | Load the error functions (required for meaningful error reporting).++Every wrapper calls through these unconditionally -- 's2n_send' and 's2n_recv'+do so even on the success path -- so a null here would be an immediate segfault+inside C. Fail at load time with a typed 'RequiredSymbolNotFound' instead.+-} loadErrorFuncs :: DL -> IO S2nErrorFuncs-loadErrorFuncs dl = do- el <- dlsym dl "s2n_errno_location"- sd <- dlsym dl "s2n_strerror_debug"- et <- dlsym dl "s2n_error_get_type"- pure $ S2nErrorFuncs el sd et+loadErrorFuncs dl =+ S2nErrorFuncs+ <$> loadRequired "s2n_errno_location"+ <*> loadRequired "s2n_strerror_debug"+ <*> loadRequired "s2n_error_get_type"+ where+ loadRequired :: String -> IO (FunPtr a)+ loadRequired name = do+ ptr <- dlsymMaybe dl name+ when (ptr == nullFunPtr) $ throwIO (RequiredSymbolNotFound name)+ pure ptr -- | Create a closure that throws MissingSymbol throwMissing :: String -> IO a@@ -262,7 +282,7 @@ -- Helper to load a symbol with forgiving behavior load :: String -> MethodRequirement -> IO (FunPtr a) load name req = do- ptr <- dlsym dl name+ ptr <- dlsymMaybe dl name when (ptr == nullFunPtr) $ do modifyIORef' missingRef (name :) if ptr == nullFunPtr && req == Mandatory@@ -784,7 +804,7 @@ foreign import ccall safe "s2n_wrap_client_hello_get_extensions" c_wrap_client_hello_get_extensions :: FunPtr () -> Ptr S2nClientHello -> Ptr Word8 -> Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CSsize foreign import ccall safe "s2n_wrap_client_hello_get_extension_length" c_wrap_client_hello_get_extension_length :: FunPtr () -> Ptr S2nClientHello -> S2nTlsExtensionType -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CSsize foreign import ccall safe "s2n_wrap_client_hello_get_extension_by_id" c_wrap_client_hello_get_extension_by_id :: FunPtr () -> Ptr S2nClientHello -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CSsize-foreign import ccall safe "s2n_wrap_client_hello_has_extension" c_wrap_client_hello_has_extension :: FunPtr () -> Ptr S2nClientHello -> Word16 -> Ptr CInt -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt+foreign import ccall safe "s2n_wrap_client_hello_has_extension" c_wrap_client_hello_has_extension :: FunPtr () -> Ptr S2nClientHello -> Word16 -> Ptr CBool -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt foreign import ccall safe "s2n_wrap_client_hello_get_session_id_length" c_wrap_client_hello_get_session_id_length :: FunPtr () -> Ptr S2nClientHello -> Ptr Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt foreign import ccall safe "s2n_wrap_client_hello_get_session_id" c_wrap_client_hello_get_session_id :: FunPtr () -> Ptr S2nClientHello -> Ptr Word8 -> Ptr Word32 -> Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt foreign import ccall safe "s2n_wrap_client_hello_get_compression_methods_length" c_wrap_client_hello_get_compression_methods_length :: FunPtr () -> Ptr S2nClientHello -> Ptr Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt@@ -857,7 +877,7 @@ foreign import ccall safe "s2n_wrap_cert_get_der" c_wrap_cert_get_der :: FunPtr () -> Ptr S2nCert -> Ptr (Ptr Word8) -> Ptr Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt foreign import ccall safe "s2n_wrap_connection_get_peer_cert_chain" c_wrap_connection_get_peer_cert_chain :: FunPtr () -> Ptr S2nConnection -> Ptr S2nCertChainAndKey -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt foreign import ccall safe "s2n_wrap_cert_get_x509_extension_value_length" c_wrap_cert_get_x509_extension_value_length :: FunPtr () -> Ptr S2nCert -> Ptr Word8 -> Ptr Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt-foreign import ccall safe "s2n_wrap_cert_get_x509_extension_value" c_wrap_cert_get_x509_extension_value :: FunPtr () -> Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CInt -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt+foreign import ccall safe "s2n_wrap_cert_get_x509_extension_value" c_wrap_cert_get_x509_extension_value :: FunPtr () -> Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CBool -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt foreign import ccall safe "s2n_wrap_cert_get_utf8_string_from_extension_data_length" c_wrap_cert_get_utf8_string_from_extension_data_length :: FunPtr () -> Ptr Word8 -> Word32 -> Ptr Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt foreign import ccall safe "s2n_wrap_cert_get_utf8_string_from_extension_data" c_wrap_cert_get_utf8_string_from_extension_data :: FunPtr () -> Ptr Word8 -> Word32 -> Ptr Word8 -> Ptr Word32 -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO CInt foreign import ccall safe "s2n_wrap_external_psk_new" c_wrap_external_psk_new :: FunPtr () -> Ptr S2nErrorFuncs -> Ptr S2nError -> IO (Ptr S2nPsk)
src/S2nTls/Ffi/Types.hs view
@@ -790,7 +790,7 @@ type S2nMemCleanupCallback = FunPtr (IO CInt) -- | Memory allocation callback.-type S2nMemMallocCallback = FunPtr (Ptr (Ptr ()) -> Word32 -> Word32 -> IO CInt)+type S2nMemMallocCallback = FunPtr (Ptr (Ptr ()) -> Word32 -> Ptr Word32 -> IO CInt) -- | Memory free callback. type S2nMemFreeCallback = FunPtr (Ptr () -> Word32 -> IO CInt)@@ -811,7 +811,7 @@ type S2nClientHelloFn = FunPtr (Ptr S2nConnection -> Ptr () -> IO CInt) -- | Certificate tiebreak callback.-type S2nCertTiebreakCallback = FunPtr (Ptr S2nCertChainAndKey -> Ptr S2nCertChainAndKey -> Word8 -> Ptr (Ptr S2nCertChainAndKey) -> IO CInt)+type S2nCertTiebreakCallback = FunPtr (Ptr S2nCertChainAndKey -> Ptr S2nCertChainAndKey -> Ptr Word8 -> Word32 -> IO (Ptr S2nCertChainAndKey)) -- | Verify host callback. type S2nVerifyHostFn = FunPtr (CString -> CSize -> Ptr () -> IO Word8)@@ -972,7 +972,7 @@ , s2n_client_hello_get_extensions :: Ptr S2nClientHello -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize) , s2n_client_hello_get_extension_length :: Ptr S2nClientHello -> S2nTlsExtensionType -> IO (Either S2nError CSsize) , s2n_client_hello_get_extension_by_id :: Ptr S2nClientHello -> S2nTlsExtensionType -> Ptr Word8 -> Word32 -> IO (Either S2nError CSsize)- , s2n_client_hello_has_extension :: Ptr S2nClientHello -> Word16 -> Ptr CInt -> IO (Either S2nError CInt)+ , s2n_client_hello_has_extension :: Ptr S2nClientHello -> Word16 -> Ptr CBool -> IO (Either S2nError CInt) , s2n_client_hello_get_session_id_length :: Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt) , s2n_client_hello_get_session_id :: Ptr S2nClientHello -> Ptr Word8 -> Ptr Word32 -> Word32 -> IO (Either S2nError CInt) , s2n_client_hello_get_compression_methods_length :: Ptr S2nClientHello -> Ptr Word32 -> IO (Either S2nError CInt)@@ -1062,7 +1062,7 @@ , s2n_cert_get_der :: Ptr S2nCert -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Either S2nError CInt) , s2n_connection_get_peer_cert_chain :: Ptr S2nConnection -> Ptr S2nCertChainAndKey -> IO (Either S2nError CInt) , s2n_cert_get_x509_extension_value_length :: Ptr S2nCert -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt)- , s2n_cert_get_x509_extension_value :: Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CInt -> IO (Either S2nError CInt)+ , s2n_cert_get_x509_extension_value :: Ptr S2nCert -> Ptr Word8 -> Ptr Word8 -> Ptr Word32 -> Ptr CBool -> IO (Either S2nError CInt) , s2n_cert_get_utf8_string_from_extension_data_length :: Ptr Word8 -> Word32 -> Ptr Word32 -> IO (Either S2nError CInt) , s2n_cert_get_utf8_string_from_extension_data :: Ptr Word8 -> Word32 -> Ptr Word8 -> Ptr Word32 -> IO (Either S2nError CInt) , s2n_external_psk_new :: IO (Either S2nError (Ptr S2nPsk))