17c478bdstevel@tonic-gate/*
27c478bdstevel@tonic-gate * CDDL HEADER START
37c478bdstevel@tonic-gate *
47c478bdstevel@tonic-gate * The contents of this file are subject to the terms of the
57c478bdstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
67c478bdstevel@tonic-gate * (the "License").  You may not use this file except in compliance
77c478bdstevel@tonic-gate * with the License.
87c478bdstevel@tonic-gate *
97c478bdstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bdstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
117c478bdstevel@tonic-gate * See the License for the specific language governing permissions
127c478bdstevel@tonic-gate * and limitations under the License.
137c478bdstevel@tonic-gate *
147c478bdstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
157c478bdstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bdstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
177c478bdstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
187c478bdstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bdstevel@tonic-gate *
207c478bdstevel@tonic-gate * CDDL HEADER END
217c478bdstevel@tonic-gate */
227c478bdstevel@tonic-gate/*
237c478bdstevel@tonic-gate * Copyright 1997-2002 Sun Microsystems, Inc.  All rights reserved.
247c478bdstevel@tonic-gate * Use is subject to license terms.
257c478bdstevel@tonic-gate */
267c478bdstevel@tonic-gate
277c478bdstevel@tonic-gate/*
287c478bdstevel@tonic-gate * gsscred utility
297c478bdstevel@tonic-gate *
307c478bdstevel@tonic-gate * Manages mapping between a security principal
317c478bdstevel@tonic-gate * name and unix uid.
327c478bdstevel@tonic-gate */
337c478bdstevel@tonic-gate
347c478bdstevel@tonic-gate#ifndef	_GSSCRED_H
357c478bdstevel@tonic-gate#define	_GSSCRED_H
367c478bdstevel@tonic-gate
377c478bdstevel@tonic-gate#pragma ident	"%Z%%M%	%I%	%E% SMI"
387c478bdstevel@tonic-gate
397c478bdstevel@tonic-gate#include <libintl.h>
407c478bdstevel@tonic-gate#include <locale.h>
417c478bdstevel@tonic-gate#include <gssapi/gssapi.h>
427c478bdstevel@tonic-gate#include <pwd.h>
437c478bdstevel@tonic-gate
447c478bdstevel@tonic-gate#ifdef	__cplusplus
457c478bdstevel@tonic-gateextern "C" {
467c478bdstevel@tonic-gate#endif
477c478bdstevel@tonic-gate
487c478bdstevel@tonic-gate#if !defined(TEXT_DOMAIN)
497c478bdstevel@tonic-gate#define	TEXT_DOMAIN "SUNW_OST_OSCMD"
507c478bdstevel@tonic-gate#endif
517c478bdstevel@tonic-gate
527c478bdstevel@tonic-gate#define	GSSCRED_FLAT_FILE	-1
537c478bdstevel@tonic-gate
547c478bdstevel@tonic-gate/* Structure to hold GSS credentials for each entry */
557c478bdstevel@tonic-gatetypedef struct GssCredEntry_t {
567c478bdstevel@tonic-gate	char *principal_name;
577c478bdstevel@tonic-gate	int  unix_uid;
587c478bdstevel@tonic-gate	char *comment;
597c478bdstevel@tonic-gate	struct GssCredEntry_t *next;
607c478bdstevel@tonic-gate} GssCredEntry;
617c478bdstevel@tonic-gate
627c478bdstevel@tonic-gate/*
637c478bdstevel@tonic-gate * Misc functions in gsscred.
647c478bdstevel@tonic-gate */
657c478bdstevel@tonic-gateint gsscred_AsHex(const gss_buffer_t inBuf, gss_buffer_t outBuf);
667c478bdstevel@tonic-gateint gsscred_MakeName(const gss_OID mechOid, const char *name,
677c478bdstevel@tonic-gate		const char *nameOid, gss_buffer_t OutName);
687c478bdstevel@tonic-gateint gsscred_read_config_file(void);
697c478bdstevel@tonic-gateint gsscred_MakeNameHeader(const gss_OID mechOid, gss_buffer_t outNameHdr);
707c478bdstevel@tonic-gate
717c478bdstevel@tonic-gate
727c478bdstevel@tonic-gate/*
737c478bdstevel@tonic-gate * Flat file based gsscred functions.
747c478bdstevel@tonic-gate */
757c478bdstevel@tonic-gateint file_addGssCredEntry(const gss_buffer_t hexName, const char *uid,
767c478bdstevel@tonic-gate	const char *comment, char **errDetails);
777c478bdstevel@tonic-gateint file_getGssCredEntry(const gss_buffer_t name, const char *uid,
787c478bdstevel@tonic-gate	char **errDetails);
797c478bdstevel@tonic-gateint file_deleteGssCredEntry(const gss_buffer_t name, const char *uid,
807c478bdstevel@tonic-gate	char **errDetails);
817c478bdstevel@tonic-gateint file_getGssCredUid(const gss_buffer_t name, uid_t *uidOut);
827c478bdstevel@tonic-gate
837c478bdstevel@tonic-gate
847c478bdstevel@tonic-gate/*
857c478bdstevel@tonic-gate * GSS entry point for retrieving user uid information based on
867c478bdstevel@tonic-gate * exported name buffer.
877c478bdstevel@tonic-gate */
887c478bdstevel@tonic-gateint gss_getGssCredEntry(const gss_buffer_t expName, uid_t *uid);
897c478bdstevel@tonic-gate
907c478bdstevel@tonic-gate#ifdef	__cplusplus
917c478bdstevel@tonic-gate}
927c478bdstevel@tonic-gate#endif
937c478bdstevel@tonic-gate
947c478bdstevel@tonic-gate#endif	/* _GSSCRED_H */
95