Purpose
Maps a Data Encryption Standard (DES) credential into a UNIX credential.
Library
C Library (libc.a)
Syntax
#include <rpc/rpc.h>
authdes_getucred (adc, uid, gid, grouplen, groups)
struct authdes_cred * adc;
short * uid;
short * gid;
short * grouplen;
int * groups;
Description
The authdes_getucred subroutine interfaces to the secure authentication system known as DES. The server uses this subroutine to convert a DES credential, which is the independent operating system, into a UNIX credential. The authdes_getucred subroutine retrieves necessary information from a cache instead of using the network information service (NIS).
Parameters
Item | Description |
---|---|
adc | Points to the DES credential structure. |
uid | Specifies the caller's effective user ID (UID). |
gid | Specifies the caller's effective group ID (GID). |
grouplen | Specifies the group's length. |
groups | Points to the group's array. |
Return Values
Upon successful completion, this subroutine returns a value of 1. If unsuccessful, it returns a value of 0.
Purpose
Maps a Data Encryption Standard (DES) credential into a UNIX credential.
Library
Network Services Library (libnsl.a)
Syntax
#include <rpc/rpc.h>
int authdes_getucred (authdes_credential, user_idp, group_idp, grouplen, groups)
const struct authdes_cred *authdes_credential ;
uid_t *user_idp ;
gid_t *group_idp ;
short *grouplen ;
gid_t *groups ;
Description
Parameters
Item | Description |
---|---|
authdes_credential | Points to the DES credential structure. |
user_idp | Specifies the effective user ID (UID) of the caller. |
group_idp | Specifies the effective group ID (GID) of the caller. |
grouplen | Specifies the group's length. |
groups | Points to the group's array. |
Return Values
Item | Description |
---|---|
1 | successful |
0 | unsuccessful |
Examples
#include <rpc/rpc.h>
static void dispatch(struct svc_req *, SVCXPRT *);
main()
{
rpcprog_t RPROGNUM = 0x3fffffffL;
rpcvers_t RPROGVER = 0x1L;
/* Create service handle for RPROGNUM, RPROGVER and tcp transport */
if(!svc_create( dispatch, RPROGNUM, RPROGVER, "tcp")) {
fprintf(stderr,"\nsvc_create() failed\n");
exit(EXIT_FAILURE);
}
svc_run();
}
/* The server dispatch function */
static void dispatch(struct svc_req *rqstp, SVCXPRT *transp)
{
struct authdes_cred *des_cred;
uid_t uid;
gid_t gid;
int gidlen;
gid_t gidlist[10];
switch (rqstp->rq_cred.oa_flavor) {
case AUTH_DES :
/* AUTH_DES Authentication flavor */
des_cred = (struct authdes_cred *) rqstp->rq_clntcred;
if (!authdes_getucred(des_cred, &uid, &gid, &gidlen, gidlist)) {
svcerr_systemerr(transp);
return;
}
break;
default :
/* Other Authentication flavor */
break;
}
/* The Dispatch Routine code continues .. */
}