SECURE_RPC(3NSL)    Networking Services Library Functions   SECURE_RPC(3NSL)
NAME
       secure_rpc, authdes_getucred, authdes_seccreate, getnetname,
       host2netname, key_decryptsession, key_encryptsession, key_gendes,
       key_setsecret, key_secretkey_is_set, netname2host, netname2user,
       user2netname - library routines for secure remote procedure calls
SYNOPSIS
       cc [ 
flag... ] 
file... 
-lnsl [ 
library...]
       #include <rpc/rpc.h>
       #include <sys/types.h>       
int authdes_getucred(
const struct authdes_cred *adc, 
uid_t *uidp,            
gid_t *gidp, 
short *gidlenp, 
gid_t *gidlist);       
AUTH *authdes_seccreate(
const char *name, 
const uint_t window,            
const char *timehost, 
ckey);       
int getnetname(
char name [MAXNETNAMELEN+1]);       
int host2netname(
char name [MAXNETNAMELEN+1], 
const char *host,            
const char *domain);       
int key_decryptsession(
const char *remotename, 
des_block *deskey);       
int key_encryptsession(
const char *remotename, 
des_block *deskey);       
int key_gendes(
des_block *deskey);       
int key_setsecret(
const char *key);       
int key_secretkey_is_set(void)       
int netname2host(
const char *name, 
char *host, 
const int hostlen);       
int netname2user(
const char *name, 
uid_t *uidp, 
gid_t *gidp, 
int *gidlenp,            
gid_t *gidlist [NGRPS]);       
int user2netname(
char name [MAXNETNAMELEN+1], 
const uid_t uid,            
const char *domain);
DESCRIPTION
       The 
RPC library functions allow C programs to make procedure calls on
       other machines across the network.       
RPC supports various authentication flavors. Among them are:       
AUTH_NONE                    No authentication (none).       
AUTH_SYS                    Traditional 
UNIX-style authentication.       
AUTH_DES                    DES encryption-based authentication.
       The 
authdes_getucred() and 
authdes_seccreate() functions implement
       the 
AUTH_DES authentication style. The keyserver daemon 
keyserv(8)       must be running for the 
AUTH_DES authentication system to work and       
keylogin(1) must have been run. The 
AUTH_DES style of authentication
       is discussed here. For information about the 
AUTH_NONE and 
AUTH_SYS       flavors of authentication, refer to 
rpc_clnt_auth(3NSL).  See       
rpc(3NSL) for the definition of the 
AUTH data structure.
       The following functions documented on this page are MT-Safe. For the
       MT-levels of other authentication styles, see relevant man pages.       
authdes_getucred()                                 This is the first of two functions that
                                 interface to the 
RPC secure authentication
                                 system 
AUTH_DES. The second is the                                 
authdes_seccreate() function. The                                 
authdes_getucred() function is used on the
                                 server side to convert an 
AUTH_DES                                 credential, which is operating system
                                 independent, to an 
AUTH_SYS credential. The                                 
authdes_getucred() function returns 
1 if it
                                 succeeds, 
0 if it fails.
                                 The 
*uidp parameter is set to the user's
                                 numerical 
ID associated with 
adc. The 
*gidp                                 parameter is set to the numerical 
ID of the
                                 user's group. The 
*gidlist parameter
                                 contains the numerical 
IDs of the other
                                 groups to which the user belongs.  The                                 
*gidlenp parameter is set to the number of
                                 valid group ID entries specified by the                                 
*gidlist parameter.
                                 The 
authdes_getucred() function fails if
                                 the 
authdes_cred structure was created with
                                 the netname of a host. In such a case,                                 
netname2host() should be used to get the
                                 host name from the host netname in the                                 
authdes_cred structure.       
authdes_seccreate()                                 The second of two 
AUTH_DES authentication
                                 functions, the 
authdes_seccreate() function
                                 is used on the client side to return an
                                 authentication handle that enables the use
                                 of the secure authentication system.  The
                                 first field, 
name, specifies the network
                                 name 
netname of the owner of the server
                                 process. The field usually represents a
                                 hostname derived from the 
host2netname()                                 utility, but the field might also represent
                                 a user name converted with the                                 
user2netname() utility.
                                 The second field, 
window, specifies the
                                 validity of the client credential in
                                 seconds. If the difference in time between
                                 the client's clock and the server's clock
                                 exceeds 
window, the server rejects the
                                 client's credentials and the clock will
                                 have to be resynchronized. A small window
                                 is more secure than a large one, but
                                 choosing too small a window increases the
                                 frequency of resynchronization due to clock
                                 drift.
                                 The third parameter, 
timehost, is the
                                 host's name and is optional. If 
timehost is                                 
NULL, the authentication system assumes
                                 that the local clock is always in sync with
                                 the 
timehost clock and does not attempt
                                 resynchronization. If a timehost is
                                 supplied, the system consults the remote
                                 time service whenever resynchronization is
                                 required. The 
timehost parameter is usually
                                 the name of the host on which the server is
                                 running.
                                 The final parameter, 
ckey, is also
                                 optional. If 
ckey is 
NULL, the
                                 authentication system generates a random                                 
DES key to be used for the encryption of
                                 credentials. If 
ckey is supplied, it is
                                 used for encryption.
                                 If 
authdes_seccreate() fails, it returns                                 
NULL.       getnetname()                                 This function returns the unique, operating
                                 system independent netname of the caller in
                                 the fixed-length array 
name. The function
                                 returns 
1 if it succeeds and 
0 if it fails.       
host2netname()                                 This function converts a domain-specific
                                 hostname 
host to an operating system
                                 independent netname. The function returns 
1                                 if it succeeds and 
0 if it fails. The                                 
host2netname() function is the inverse of
                                 the 
netname2host() function. If the 
domain                                 is 
NULL, 
host2netname() uses the default
                                 domain name of the machine. If 
host is                                 
NULL, it defaults to that machine itself.
                                 If 
domain is 
NULL and 
host is an NIS name
                                 such as 
myhost.sun.example.com, the                                 
host2netname() function uses the domain                                 
sun.example.com rather than the default
                                 domain name of the machine.       
key_decryptsession()                                 This function is an interface to the
                                 keyserver daemon, which is associated with                                 
RPC's secure authentication system
                                 (
AUTH_DES authentication). User programs
                                 rarely need to call 
key_decryptsession() or
                                 the associated functions                                 
key_encryptsession(), 
key_gendes(), and                                 
key_setsecret().
                                 The 
key_decryptsession() function takes a
                                 server netname 
remotename and a 
DES key                                 
deskey, and decrypts the key by using the
                                 public key of the server and the secret key
                                 associated with the effective 
UID of the
                                 calling process. The 
key_decryptsession()                                 function is the inverse of                                 
key_encryptsession() function.       
key_encryptsession()                                 This function is a keyserver interface that
                                 takes a server netname 
remotename and a 
DES                                 key 
deskey, and encrypts the key using the
                                 public key of the server and the secret key
                                 associated with the effective 
UID of the
                                 calling process. If the keyserver does not
                                 have a key registered for the UID, it falls
                                 back to using the secret key for the
                                 netname 
nobody unless this feature has been
                                 disabled. See 
keyserv(8). The                                 
key_encryptsession() function is the
                                 inverse of 
key_decryptsession() function.
                                 The 
key_encryptsession() function returns 
0                                 if it succeeds, 
-1 if it fails.       
key_gendes()                                 This is a keyserver interface function used
                                 to ask the keyserver for a secure
                                 conversation key. Selecting a conversion
                                 key at random is generally not secure
                                 because the common ways of choosing random
                                 numbers are too easy to guess. The                                 
key_gendes() function returns 
0 if it
                                 succeeds, 
-1 if it fails.       
key_setsecret()                                 This is a keyserver interface function used
                                 to set the key for the effective 
UID of the
                                 calling process. This function returns 
0 if
                                 it succeeds, 
-1 if it fails.       
key_secretkey_is_set()                                 This is a keyserver interface function used
                                 to determine if a key has been set for the
                                 effective 
UID of the calling process. If
                                 the keyserver has a key stored for the
                                 effective 
UID of the calling process, the                                 
key_secretkey_is_set() function returns 
1.
                                 Otherwise it returns 
0.       
netname2host()                                 This function converts an operating system
                                 independent netname 
name to a domain-
                                 specific hostname 
host. The 
hostlen                                 parameter is the maximum size of 
host. The                                 
netname2host() function returns 
1 if it
                                 succeeds and 
0 if it fails. The function is
                                 the inverse of the 
host2netname() function.       
netname2user()                                 This function converts an operating system
                                 independent netname to a domain-specific
                                 user 
ID. The 
netname2user() function
                                 returns 
1 if it succeeds and 
0 if it
                                 fails.The function is the inverse of the                                 
user2netname() function.
                                 The 
*uidp parameter is set to the user's
                                 numerical 
ID associated with 
name. The                                 
*gidp parameter is set to the numerical 
ID                                 of the user's group. The 
gidlist parameter
                                 contains the numerical 
IDs of the other
                                 groups to which the user belongs. The                                 
*gidlenp parameter is set to the number of
                                 valid group 
ID entries specified by the                                 
gidlist parameter.       
user2netname()                                 This function converts a domain-specific
                                 username to an operating system independent
                                 netname. The 
user2netname() function
                                 returns 
1 if it succeeds and 
0 if it fails.
                                 The function is the inverse of                                 
netname2user() function.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +---------------+-----------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE |
       +---------------+-----------------+
       |MT-Level       | MT-Safe         |
       +---------------+-----------------+
SEE ALSO
       chkey(1), 
keylogin(1), 
rpc(3NSL), 
rpc_clnt_auth(3NSL), 
attributes(7),       
keyserv(8), 
newkey(8)                                April 9, 2016               SECURE_RPC(3NSL)