packages feed

gssapi-0.1.0.0: src/Network/Security/GssTypes.hsc

{-# OPTIONS_HADDOCK hide #-}
{-# LANGUAGE CPP         #-}

-- | Implementation of FFI to gss_buffer_desc structure
module Network.Security.GssTypes where

import           Foreign
import           Foreign.C.String

#include <gssapi/gssapi.h>
#include <gssapi/gssapi_krb5.h>

data BufferDesc = BufferDesc Int CString

instance Storable BufferDesc where
  sizeOf _ = #{size gss_buffer_desc}
  alignment _ = alignment (undefined :: Ptr ())
  poke p (BufferDesc len val) = do
      #{poke gss_buffer_desc, length} p len
      #{poke gss_buffer_desc, value} p val
  peek p = BufferDesc <$> #{peek gss_buffer_desc, length} p
                      <*> #{peek gss_buffer_desc, value} p