{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) 'GI.Gio.Interfaces.TlsFileDatabase.TlsFileDatabase' is implemented by 'GI.Gio.Objects.TlsDatabase.TlsDatabase' objects which load their certificate information from a file. It is an interface which TLS library specific subtypes implement. /Since: 2.30/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Interfaces.TlsFileDatabase ( -- * Exported types TlsFileDatabase(..) , noTlsFileDatabase , IsTlsFileDatabase , toTlsFileDatabase , -- * Methods -- ** new #method:new# tlsFileDatabaseNew , -- * Properties -- ** anchors #attr:anchors# {- | The path to a file containing PEM encoded certificate authority root anchors. The certificates in this file will be treated as root authorities for the purpose of verifying other certificates via the 'GI.Gio.Objects.TlsDatabase.tlsDatabaseVerifyChain' operation. /Since: 2.30/ -} #if ENABLE_OVERLOADING TlsFileDatabaseAnchorsPropertyInfo , #endif clearTlsFileDatabaseAnchors , constructTlsFileDatabaseAnchors , getTlsFileDatabaseAnchors , setTlsFileDatabaseAnchors , #if ENABLE_OVERLOADING tlsFileDatabaseAnchors , #endif ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GObject.Objects.Object as GObject.Object import {-# SOURCE #-} qualified GI.Gio.Objects.TlsDatabase as Gio.TlsDatabase -- interface TlsFileDatabase -- | Memory-managed wrapper type. newtype TlsFileDatabase = TlsFileDatabase (ManagedPtr TlsFileDatabase) -- | A convenience alias for `Nothing` :: `Maybe` `TlsFileDatabase`. noTlsFileDatabase :: Maybe TlsFileDatabase noTlsFileDatabase = Nothing #if ENABLE_OVERLOADING type instance O.SignalList TlsFileDatabase = TlsFileDatabaseSignalList type TlsFileDatabaseSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif foreign import ccall "g_tls_file_database_get_type" c_g_tls_file_database_get_type :: IO GType instance GObject TlsFileDatabase where gobjectType = c_g_tls_file_database_get_type -- | Type class for types which can be safely cast to `TlsFileDatabase`, for instance with `toTlsFileDatabase`. class (GObject o, O.IsDescendantOf TlsFileDatabase o) => IsTlsFileDatabase o instance (GObject o, O.IsDescendantOf TlsFileDatabase o) => IsTlsFileDatabase o instance O.HasParentTypes TlsFileDatabase type instance O.ParentTypes TlsFileDatabase = '[GObject.Object.Object, Gio.TlsDatabase.TlsDatabase] -- | Cast to `TlsFileDatabase`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toTlsFileDatabase :: (MonadIO m, IsTlsFileDatabase o) => o -> m TlsFileDatabase toTlsFileDatabase = liftIO . unsafeCastTo TlsFileDatabase -- VVV Prop "anchors" -- Type: TBasicType TUTF8 -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@anchors@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' tlsFileDatabase #anchors @ -} getTlsFileDatabaseAnchors :: (MonadIO m, IsTlsFileDatabase o) => o -> m (Maybe T.Text) getTlsFileDatabaseAnchors obj = liftIO $ B.Properties.getObjectPropertyString obj "anchors" {- | Set the value of the “@anchors@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' tlsFileDatabase [ #anchors 'Data.GI.Base.Attributes.:=' value ] @ -} setTlsFileDatabaseAnchors :: (MonadIO m, IsTlsFileDatabase o) => o -> T.Text -> m () setTlsFileDatabaseAnchors obj val = liftIO $ B.Properties.setObjectPropertyString obj "anchors" (Just val) {- | Construct a `GValueConstruct` with valid value for the “@anchors@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructTlsFileDatabaseAnchors :: (IsTlsFileDatabase o) => T.Text -> IO (GValueConstruct o) constructTlsFileDatabaseAnchors val = B.Properties.constructObjectPropertyString "anchors" (Just val) {- | Set the value of the “@anchors@” property to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #anchors @ -} clearTlsFileDatabaseAnchors :: (MonadIO m, IsTlsFileDatabase o) => o -> m () clearTlsFileDatabaseAnchors obj = liftIO $ B.Properties.setObjectPropertyString obj "anchors" (Nothing :: Maybe T.Text) #if ENABLE_OVERLOADING data TlsFileDatabaseAnchorsPropertyInfo instance AttrInfo TlsFileDatabaseAnchorsPropertyInfo where type AttrAllowedOps TlsFileDatabaseAnchorsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint TlsFileDatabaseAnchorsPropertyInfo = (~) T.Text type AttrBaseTypeConstraint TlsFileDatabaseAnchorsPropertyInfo = IsTlsFileDatabase type AttrGetType TlsFileDatabaseAnchorsPropertyInfo = (Maybe T.Text) type AttrLabel TlsFileDatabaseAnchorsPropertyInfo = "anchors" type AttrOrigin TlsFileDatabaseAnchorsPropertyInfo = TlsFileDatabase attrGet _ = getTlsFileDatabaseAnchors attrSet _ = setTlsFileDatabaseAnchors attrConstruct _ = constructTlsFileDatabaseAnchors attrClear _ = clearTlsFileDatabaseAnchors #endif #if ENABLE_OVERLOADING instance O.HasAttributeList TlsFileDatabase type instance O.AttributeList TlsFileDatabase = TlsFileDatabaseAttributeList type TlsFileDatabaseAttributeList = ('[ '("anchors", TlsFileDatabaseAnchorsPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING tlsFileDatabaseAnchors :: AttrLabelProxy "anchors" tlsFileDatabaseAnchors = AttrLabelProxy #endif #if ENABLE_OVERLOADING type family ResolveTlsFileDatabaseMethod (t :: Symbol) (o :: *) :: * where ResolveTlsFileDatabaseMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveTlsFileDatabaseMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveTlsFileDatabaseMethod "createCertificateHandle" o = Gio.TlsDatabase.TlsDatabaseCreateCertificateHandleMethodInfo ResolveTlsFileDatabaseMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveTlsFileDatabaseMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveTlsFileDatabaseMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveTlsFileDatabaseMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificateForHandle" o = Gio.TlsDatabase.TlsDatabaseLookupCertificateForHandleMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificateForHandleAsync" o = Gio.TlsDatabase.TlsDatabaseLookupCertificateForHandleAsyncMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificateForHandleFinish" o = Gio.TlsDatabase.TlsDatabaseLookupCertificateForHandleFinishMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificateIssuer" o = Gio.TlsDatabase.TlsDatabaseLookupCertificateIssuerMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificateIssuerAsync" o = Gio.TlsDatabase.TlsDatabaseLookupCertificateIssuerAsyncMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificateIssuerFinish" o = Gio.TlsDatabase.TlsDatabaseLookupCertificateIssuerFinishMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificatesIssuedBy" o = Gio.TlsDatabase.TlsDatabaseLookupCertificatesIssuedByMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificatesIssuedByAsync" o = Gio.TlsDatabase.TlsDatabaseLookupCertificatesIssuedByAsyncMethodInfo ResolveTlsFileDatabaseMethod "lookupCertificatesIssuedByFinish" o = Gio.TlsDatabase.TlsDatabaseLookupCertificatesIssuedByFinishMethodInfo ResolveTlsFileDatabaseMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveTlsFileDatabaseMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveTlsFileDatabaseMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveTlsFileDatabaseMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveTlsFileDatabaseMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveTlsFileDatabaseMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveTlsFileDatabaseMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveTlsFileDatabaseMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveTlsFileDatabaseMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveTlsFileDatabaseMethod "verifyChain" o = Gio.TlsDatabase.TlsDatabaseVerifyChainMethodInfo ResolveTlsFileDatabaseMethod "verifyChainAsync" o = Gio.TlsDatabase.TlsDatabaseVerifyChainAsyncMethodInfo ResolveTlsFileDatabaseMethod "verifyChainFinish" o = Gio.TlsDatabase.TlsDatabaseVerifyChainFinishMethodInfo ResolveTlsFileDatabaseMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveTlsFileDatabaseMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveTlsFileDatabaseMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveTlsFileDatabaseMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveTlsFileDatabaseMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveTlsFileDatabaseMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveTlsFileDatabaseMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveTlsFileDatabaseMethod t TlsFileDatabase, O.MethodInfo info TlsFileDatabase p) => OL.IsLabel t (TlsFileDatabase -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif -- method TlsFileDatabase::new -- method type : MemberFunction -- Args : [Arg {argCName = "anchors", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "filename of anchor certificate authorities.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "TlsFileDatabase"})) -- throws : True -- Skip return : False foreign import ccall "g_tls_file_database_new" g_tls_file_database_new :: CString -> -- anchors : TBasicType TFileName Ptr (Ptr GError) -> -- error IO (Ptr TlsFileDatabase) {- | Creates a new 'GI.Gio.Interfaces.TlsFileDatabase.TlsFileDatabase' which uses anchor certificate authorities in /@anchors@/ to verify certificate chains. The certificates in /@anchors@/ must be PEM encoded. /Since: 2.30/ -} tlsFileDatabaseNew :: (B.CallStack.HasCallStack, MonadIO m) => [Char] {- ^ /@anchors@/: filename of anchor certificate authorities. -} -> m TlsFileDatabase {- ^ __Returns:__ the new 'GI.Gio.Interfaces.TlsFileDatabase.TlsFileDatabase', or 'Nothing' on error /(Can throw 'Data.GI.Base.GError.GError')/ -} tlsFileDatabaseNew anchors = liftIO $ do anchors' <- stringToCString anchors onException (do result <- propagateGError $ g_tls_file_database_new anchors' checkUnexpectedReturnNULL "tlsFileDatabaseNew" result result' <- (wrapObject TlsFileDatabase) result freeMem anchors' return result' ) (do freeMem anchors' ) #if ENABLE_OVERLOADING #endif