RPC_GSS_SECCREATE(3)

🌸 RPCSEC_GSS β€” GSS-API based authentication for RPC πŸ’…

okay bestie, welcome to RPC_GSS_SECCREATE(3), a page from the Library Functions Manual section, and no, the title and the manual name are the same thing twice, that's just how manpages are, don't question it πŸŽ€


✨ SYNOPSIS ✨

#include <rpc/rpcsec_gss.h>

πŸ’– DESCRIPTION πŸ’–

so like. RPCSEC_GSS is a security mechanism for the RPC protocol. it uses the Generic Security Service API (GSS-API) to establish a security context between a client and a server, and to make sure that literally all subsequent communication between client and server is properly authenticated. and then, optionally, extra protection can be applied to the connection, because why stop at good when you can go iconic πŸ’…

  • the integrity service uses checksums to make sure all data sent by a peer is received without modification β€” no sneaky edits, periodt.
  • the privacy service uses encryption to make sure no third party can access the data for a connection. it's giving ✨none of your business✨.
To use this system, an application must first use rpc_gss_seccreate() to establish a security context.

that's the whole vibe. step one is always rpc_gss_seccreate(). no cap 🫢


πŸ¦‹ DATA STRUCTURES πŸ¦‹

Data structures used by RPCSEC_GSS appear below. buckle up, there's a whole lineup πŸŽ€

rpc_gss_service_t

This type defines the types of security service required for rpc_gss_seccreate().

typedef enum {
        rpc_gss_svc_default     = 0,
        rpc_gss_svc_none        = 1,
        rpc_gss_svc_integrity   = 2,
        rpc_gss_svc_privacy     = 3
} rpc_gss_service_t;

rpc_gss_options_ret_t

This structure contains various optional values which are used while creating a security context.

typedef struct {
        int             req_flags;      /* GSS request bits */
        int             time_req;       /* requested lifetime */
        gss_cred_id_t   my_cred;        /* GSS credential */
        gss_channel_bindings_t input_channel_bindings;
} rpc_gss_options_req_t;

rpc_gss_options_ret_t

Various details of the created security context are returned using this structure.

typedef struct {
        int             major_status;
        int             minor_status;
        u_int           rpcsec_version;
        int             ret_flags;
        int             time_req;
        gss_ctx_id_t    gss_context;
        char            actual_mechanism[MAX_GSS_MECH];
} rpc_gss_options_ret_t;

rpc_gss_principal_t

This type is used to refer to an client principal which is represented in GSS-API exported name form (see gss_export_name(3) for more details). Names in this format may be stored in access control lists or compared with other names in exported name form. This structure is returned by rpc_gss_get_principal_name() and is also referenced by the rpc_gss_rawcred_t structure.

typedef struct {
        int             len;
        char            name[1];
} *rpc_gss_principal_t;

rpc_gss_rawcred_t

This structure is used to access the raw credentials associated with a security context.

typedef struct {
        u_int           version;        /* RPC version number */
        const char      *mechanism;     /* security mechanism */
        const char      *qop;           /* quality of protection */
        rpc_gss_principal_t client_principal; /* client name */
        const char      *svc_principal; /* server name */
        rpc_gss_service_t service;      /* service type */
} rpc_gss_rawcred_t;

rpc_gss_ucred_t

Unix credentials which are derived form the raw credentials, accessed via rpc_gss_getcred().

typedef struct {
        uid_t           uid;            /* user ID */
        gid_t           gid;            /* group ID */
        short           gidlen;
        gid_t           *gidlist;       /* list of groups */
} rpc_gss_ucred_t;

rpc_gss_lock_t

Structure used to enforce a particular QOP and service.

typedef struct {
        bool_t          locked;
        rpc_gss_rawcred_t *raw_cred;
} rpc_gss_lock_t;

rpc_gss_callback_t

Callback structure used by rpc_gss_set_callback().

typedef struct {
        u_int           program;        /* RPC program number */
        u_int           version;        /* RPC version number */
                                        /* user defined callback */
        bool_t          (*callback)(struct svc_req *req,
                                    gss_cred_id_t deleg,
                                    gss_ctx_id_t gss_context,
                                    rpc_gss_lock_t *lock,
                                    void **cookie);
} rpc_gss_callback_t;

rpc_gss_error_t

Structure used to return error information by rpc_gss_get_error().

typedef struct {
        int             rpc_gss_error;
        int             system_error;   /* same as errno */
} rpc_gss_error_t;

/*
 * Values for rpc_gss_error
 */
#define RPC_GSS_ER_SUCCESS      0       /* no error */
#define RPC_GSS_ER_SYSTEMERROR  1       /* system error */

πŸ‘‘ INDEX πŸ‘‘

the whole friend group, one by one πŸ’œ


🌈 AVAILABILITY 🌈

These functions are part of libtirpc. slay 🫢


πŸ”₯ SEE ALSO πŸ”₯

rpc(3), gssapi(3)


πŸ’œ AUTHORS πŸ’œ

This manual page was written by Doug Rabson <dfr@FreeBSD.org>.


and that's the whole page bestie β€” this one came to you from <strong>Debian</strong>, dated <strong>January 26, 2010</strong>, and it lives in the <strong>Library Functions Manual</strong> section as <strong>RPC_GSS_SECCREATE(3)</strong>. go forth and authenticate responsibly πŸ’…βœ¨

πŸ“¦ where this page comes from