security-auth man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

SECURITY-AUTH(2)					      SECURITY-AUTH(2)

NAME
       Auth:  init,  client, server - authenticated connections between client
       and server

SYNOPSIS
       include "keyring.m";
       include "security.m";
       auth := load Auth Auth->PATH;

       init:   fn(): string;
       client: fn(alg: string, ai: ref Keyring->Authinfo,
		   fd: ref Sys->FD): (ref Sys->FD, string);
       server: fn(algs: list of string, ai: ref Keyring->Authinfo,
		   fd: ref Sys->FD, setid: int): (ref Sys->FD, string);

DESCRIPTION
       Auth establishes authenticated connections using the station to station
       protocol	 described  in auth(6).	 It encapsulates the use of the primi‐
       tives of keyring-auth(2) and security-ssl(2) for	 the  particular  case
       where the stations play the rôles of `client' and `server'.  The under‐
       lying primitives must still be accessed directly	 in  some  cases,  for
       instance	 when  completely  symmetric  authentication is needed between
       peers.

       Init must be called before  using  any  other  functions	 in  Auth;  it
       returns nil if successful, and a diagnostic message otherwise.

       Client  authenticates  a	 connection  with  the	server on fd using the
       authentication data in ai.  If successful, and alg is neither  nil  nor
       the  value  "none", client will set the connection to digest or encrypt
       the data, using the digest or encryption algorithm  specified  in  alg.
       It  returns  the	 file descriptor for the connection, and a string with
       information about the connection.  If an authenticated connection  can‐
       not  be	established, client returns a nil file descriptor and an error
       message.

       Server authenticates a client connection fd, as described  in  keyring-
       auth(2),	 using the server's authentication data in ai.	If successful,
       and the client requested the use of a digest or	encryption  algorithm,
       and that algorithm is listed in algs, server enables the security layer
       ssl(3) using the selected algorithm.  Furthermore,  if  setid  is  non-
       zero,  the  current  user  name is set to the newly authenticated name.
       Server returns a file descriptor for the connection, and a string  with
       information  about the connection.  If an authenticated connection can‐
       not be established, or the client's chosen  algorithm  is  not  listed,
       server returns a nil file descriptor and an error message.

       Any  string acceptable to ssl(3), including "clear", can be given as an
       alg to client, or listed in algs for server.  Furthermore, the  special
       string  "none"  tells  both functions that ssl(3) should not be used at
       all on a connection.

EXAMPLE
       This selection from /appl/cmd/mount.b illustrates client-side use.

	    au := load Auth Auth->PATH;
	    err := au->init();
	    if(err != nil){
		 sys->fprint(stderr, "mount: %s\n", err);
		 exit;
	    }
	    fd: ref Sys->FD;
	    (fd, err) = au->client("none", ai, c.dfd);
	    if(fd == nil){
		 sys->fprint(stderr, "mount: authentication failed: %s\n", err);
		 exit;
	    }
	    dir := hd argv;
	    ok = sys->mount(fd, dir, flags, "");
	    if(ok < 0)
		 sys->fprint(stderr, "mount: %r\n");

       The following example from  /appl/lib/styxd.b  shows  server-side  use;
       note that readauthinfo is called first to fetch the authentication data
       to pass to server.

	    kr := load Keyring Keyring->PATH;
	    ...
	    ai := kr->readauthinfo("/usr/"+user+"/keyring/default");
	    auth->init();
	    (fd, info_or_err) := auth->server(argv, ai, stdin, 1);
	    if(fd == nil){
		 sys->fprint(stderr, "styxd: %s\n", info_or_err);
		 exit;
	    }
	    sys->pctl(Sys->FORKNS, nil);
	    if(sys->export(fd, Sys->EXPASYNC) < 0)
		 sys->fprint(stderr, "styxd: file export: %r\n");

SOURCE
       /appl/lib/auth.b

SEE ALSO
       keyring-auth(2), security-ssl(2), ssl(3), auth(6)

							      SECURITY-AUTH(2)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net