gi-gio-2.0.27: Gio bindings

Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | None
Language | Haskell2010

GI.Gio.Objects.Credentials

Contents

- Exported types
- Methods
  - Overloaded methods
  - getUnixPid
  - getUnixUser
  - isSameUser
  - new
  - setNative
  - setUnixUser
  - toString

Description

The `Credentials` type is a reference-counted wrapper for native credentials. This information is typically used for identifying, authenticating and authorizing other processes.

Some operating systems supports looking up the credentials of the remote peer of a communication endpoint - see e.g. `socketGetCredentials`.

Some operating systems supports securely sending and receiving credentials over a Unix Domain Socket, see `UnixCredentialsMessage`, `unixConnectionSendCredentials` and `unixConnectionReceiveCredentials` for details.

On Linux, the native credential type is a `struct ucred` - see the unix(7) man page for details. This corresponds to `CredentialsTypeLinuxUcred`.

On Apple operating systems (including iOS, tvOS, and macOS), the native credential type is a `struct xucred`. This corresponds to `CredentialsTypeAppleXucred`.

On FreeBSD, Debian GNU/kFreeBSD, and GNU/Hurd, the native credential type is a `struct cmsgcred`. This corresponds to `CredentialsTypeFreebsdCmsgcred`.

On NetBSD, the native credential type is a `struct unpcbid`. This corresponds to `CredentialsTypeNetbsdUnpcbid`.

On OpenBSD, the native credential type is a `struct sockpeercred`. This corresponds to `CredentialsTypeOpenbsdSockpeercred`.

On Solaris (including OpenSolaris and its derivatives), the native credential type is a `ucred_t`. This corresponds to `CredentialsTypeSolarisUcred`.

Since: 2.26

Synopsis

- newtype Credentials = Credentials (ManagedPtr Credentials)
- class (GObject o, IsDescendantOf Credentials o) => IsCredentials o
- toCredentials :: (MonadIO m, IsCredentials o) => o -> m Credentials
- credentialsGetUnixPid :: (HasCallStack, MonadIO m, IsCredentials a) => a -> m Int32
- credentialsGetUnixUser :: (HasCallStack, MonadIO m, IsCredentials a) => a -> m Word32
- credentialsIsSameUser :: (HasCallStack, MonadIO m, IsCredentials a, IsCredentials b) => a -> b -> m ()
- credentialsNew :: (HasCallStack, MonadIO m) => m Credentials
- credentialsSetNative :: (HasCallStack, MonadIO m, IsCredentials a) => a -> CredentialsType -> Ptr () -> m ()
- credentialsSetUnixUser :: (HasCallStack, MonadIO m, IsCredentials a) => a -> Word32 -> m ()
- credentialsToString :: (HasCallStack, MonadIO m, IsCredentials a) => a -> m Text

# Exported types

newtype Credentials Source #

Memory-managed wrapper type.

Constructors

Credentials (ManagedPtr Credentials) |

#### Instances

Instances details

Eq Credentials Source # |
Instance details Defined in GI.Gio.Objects.Credentials Methods (==) :: Credentials -> Credentials -> Bool # (/=) :: Credentials -> Credentials -> Bool #
GObject Credentials Source # |
Instance details Defined in GI.Gio.Objects.Credentials
TypedObject Credentials Source # |
Instance details Defined in GI.Gio.Objects.Credentials Methods glibType :: IO GType Source #
ManagedPtrNewtype Credentials Source # |
Instance details Defined in GI.Gio.Objects.Credentials Methods toManagedPtr :: Credentials -> ManagedPtr Credentials Source #
IsGValue Credentials Source # | Convert `Credentials` to and from `GValue` with `toGValue` and `fromGValue`.
Instance details Defined in GI.Gio.Objects.Credentials Methods toGValue :: Credentials -> IO GValue Source # fromGValue :: GValue -> IO Credentials Source #
HasParentTypes Credentials Source # |
Instance details Defined in GI.Gio.Objects.Credentials
type ParentTypes Credentials Source # |
Instance details Defined in GI.Gio.Objects.Credentials type ParentTypes Credentials = '[Object]

class (GObject o, IsDescendantOf Credentials o) => IsCredentials o Source #

Type class for types which can be safely cast to `Credentials`, for instance with `toCredentials`.

#### Instances

Instances details

(GObject o, IsDescendantOf Credentials o) => IsCredentials o Source # |
Instance details Defined in GI.Gio.Objects.Credentials

toCredentials :: (MonadIO m, IsCredentials o) => o -> m Credentials Source #

Cast to `Credentials`, for types for which this is known to be safe. For general casts, use `castTo`.

# Methods

## Overloaded methods

## getUnixPid

credentialsGetUnixPid Source #

Arguments

:: (HasCallStack, MonadIO m, IsCredentials a) |
=> a | `credentials`: A `Credentials`
-> m Int32 | Returns: The UNIX process ID, or -1 if `error` is set. (Can throw `GError`)

Tries to get the UNIX process identifier from `credentials`. This method is only available on UNIX platforms.

This operation can fail if `Credentials` is not supported on the OS or if the native credentials type does not contain information about the UNIX process ID (for example this is the case for `CredentialsTypeAppleXucred`).

Since: 2.36

## getUnixUser

credentialsGetUnixUser Source #

Arguments

:: (HasCallStack, MonadIO m, IsCredentials a) |
=> a | `credentials`: A `Credentials`
-> m Word32 | Returns: The UNIX user identifier or -1 if `error` is set. (Can throw `GError`)

Tries to get the UNIX user identifier from `credentials`. This method is only available on UNIX platforms.

This operation can fail if `Credentials` is not supported on the OS or if the native credentials type does not contain information about the UNIX user.

Since: 2.26

## isSameUser

credentialsIsSameUser Source #

Arguments

:: (HasCallStack, MonadIO m, IsCredentials a, IsCredentials b) |
=> a | `credentials`: A `Credentials`.
-> b | `otherCredentials`: A `Credentials`.
-> m () | (Can throw `GError`)

Checks if `credentials` and `otherCredentials` is the same user.

This operation can fail if `Credentials` is not supported on the the OS.

Since: 2.26

## new

credentialsNew Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> m Credentials | Returns: A `Credentials`. Free with `objectUnref`.

Creates a new `Credentials` object with credentials matching the the current process.

Since: 2.26

## setNative

credentialsSetNative Source #

Arguments

:: (HasCallStack, MonadIO m, IsCredentials a) |
=> a | `credentials`: A `Credentials`.
-> CredentialsType | `nativeType`: The type of native credentials to set.
-> Ptr () | `native`: A pointer to native credentials.
-> m () |

Copies the native credentials of type `nativeType` from `native` into `credentials`.

It is a programming error (which will cause a warning to be logged) to use this method if there is no `Credentials` support for the OS or if `nativeType` isn't supported by the OS.

Since: 2.26

## setUnixUser

credentialsSetUnixUser Source #

Arguments

:: (HasCallStack, MonadIO m, IsCredentials a) |
=> a | `credentials`: A `Credentials`.
-> Word32 | `uid`: The UNIX user identifier to set.
-> m () | (Can throw `GError`)

Tries to set the UNIX user identifier on `credentials`. This method is only available on UNIX platforms.

This operation can fail if `Credentials` is not supported on the OS or if the native credentials type does not contain information about the UNIX user. It can also fail if the OS does not allow the use of "spoofed" credentials.

Since: 2.26

## toString

credentialsToString Source #

Arguments

:: (HasCallStack, MonadIO m, IsCredentials a) |
=> a | `credentials`: A `Credentials` object.
-> m Text | Returns: A string that should be freed with `free`.

Creates a human-readable textual representation of `credentials` that can be used in logging and debug messages. The format of the returned string may change in future GLib release.

Since: 2.26