18d7e4166Sjose borrego /*
28d7e4166Sjose borrego  * CDDL HEADER START
38d7e4166Sjose borrego  *
48d7e4166Sjose borrego  * The contents of this file are subject to the terms of the
58d7e4166Sjose borrego  * Common Development and Distribution License (the "License").
68d7e4166Sjose borrego  * You may not use this file except in compliance with the License.
78d7e4166Sjose borrego  *
88d7e4166Sjose borrego  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
98d7e4166Sjose borrego  * or http://www.opensolaris.org/os/licensing.
108d7e4166Sjose borrego  * See the License for the specific language governing permissions
118d7e4166Sjose borrego  * and limitations under the License.
128d7e4166Sjose borrego  *
138d7e4166Sjose borrego  * When distributing Covered Code, include this CDDL HEADER in each
148d7e4166Sjose borrego  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
158d7e4166Sjose borrego  * If applicable, add the following below this CDDL HEADER, with the
168d7e4166Sjose borrego  * fields enclosed by brackets "[]" replaced with your own identifying
178d7e4166Sjose borrego  * information: Portions Copyright [yyyy] [name of copyright owner]
188d7e4166Sjose borrego  *
198d7e4166Sjose borrego  * CDDL HEADER END
208d7e4166Sjose borrego  */
218d7e4166Sjose borrego /*
227f667e74Sjose borrego  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
238d7e4166Sjose borrego  * Use is subject to license terms.
248d7e4166Sjose borrego  */
258d7e4166Sjose borrego 
267f667e74Sjose borrego #ifndef _SAMLIB_H
277f667e74Sjose borrego #define	_SAMLIB_H
288d7e4166Sjose borrego 
298d7e4166Sjose borrego /*
308d7e4166Sjose borrego  * Prototypes for the SAM library and RPC client side library interface.
318d7e4166Sjose borrego  * There are two levels of interface defined here: sam_xxx and samr_xxx.
328d7e4166Sjose borrego  * The sam_xxx functions provide a high level interface which make
338d7e4166Sjose borrego  * multiple RPC calls and do all the work necessary to obtain and return
348d7e4166Sjose borrego  * the requested information. The samr_xxx functions provide a low level
358d7e4166Sjose borrego  * interface in which each function maps to a single underlying RPC.
368d7e4166Sjose borrego  */
378d7e4166Sjose borrego 
388d7e4166Sjose borrego #include <smbsrv/ndl/samrpc.ndl>
398d7e4166Sjose borrego 
408d7e4166Sjose borrego 
418d7e4166Sjose borrego #ifdef __cplusplus
428d7e4166Sjose borrego extern "C" {
438d7e4166Sjose borrego #endif
448d7e4166Sjose borrego 
458d7e4166Sjose borrego /*
468d7e4166Sjose borrego  * Account Control Flags
478d7e4166Sjose borrego  * Use in SAMR Query Display Information RPC
488d7e4166Sjose borrego  */
498d7e4166Sjose borrego #define	ACF_DISABLED	0x001	/* account disable */
508d7e4166Sjose borrego #define	ACF_HOMEDIRREQ	0x002	/* home dir required */
518d7e4166Sjose borrego #define	ACF_PWDNOTREQ	0x004	/* password not required */
528d7e4166Sjose borrego #define	ACF_TEMPDUP	0x008	/* temp dup account */
538d7e4166Sjose borrego #define	ACF_NORMUSER	0x010	/* normal user */
548d7e4166Sjose borrego #define	ACF_MNS		0x020	/* MNS account */
558d7e4166Sjose borrego #define	ACF_DOMTRUST	0x040	/* Domain trust acct */
568d7e4166Sjose borrego #define	ACF_WSTRUST	0x080	/* WKST trust acct */
578d7e4166Sjose borrego #define	ACF_SVRTRUST	0x100	/* Server trust acct */
588d7e4166Sjose borrego #define	ACF_PWDNOEXP	0x200	/* password no expire */
598d7e4166Sjose borrego #define	ACF_AUTOLOCK	0x400	/* acct auto lock */
608d7e4166Sjose borrego 
618d7e4166Sjose borrego /*
628d7e4166Sjose borrego  * samlib.c
638d7e4166Sjose borrego  */
64*e3f2c991SKeyur Desai DWORD sam_create_trust_account(char *, char *);
65*e3f2c991SKeyur Desai DWORD sam_create_account(char *, char *, char *, DWORD);
667f667e74Sjose borrego DWORD sam_remove_trust_account(char *, char *);
677f667e74Sjose borrego DWORD sam_delete_account(char *, char *, char *);
687f667e74Sjose borrego DWORD sam_get_local_domains(char *, char *);
697f667e74Sjose borrego DWORD sam_check_user(char *, char *, char *);
708d7e4166Sjose borrego 
718d7e4166Sjose borrego /*
728d7e4166Sjose borrego  * samr_open.c
738d7e4166Sjose borrego  */
747f667e74Sjose borrego int samr_open(char *, char *, char *, DWORD, mlsvc_handle_t *);
757f667e74Sjose borrego int samr_connect(char *, char *, char *, DWORD, mlsvc_handle_t *);
767f667e74Sjose borrego int samr_close_handle(mlsvc_handle_t *);
777f667e74Sjose borrego DWORD samr_open_domain(mlsvc_handle_t *, DWORD, struct samr_sid *,
787f667e74Sjose borrego     mlsvc_handle_t *);
797f667e74Sjose borrego DWORD samr_open_user(mlsvc_handle_t *, DWORD, DWORD, mlsvc_handle_t *);
807f667e74Sjose borrego DWORD samr_delete_user(mlsvc_handle_t *);
817f667e74Sjose borrego int samr_open_group(mlsvc_handle_t *, DWORD, mlsvc_handle_t *);
827f667e74Sjose borrego DWORD samr_create_user(mlsvc_handle_t *, char *, DWORD, DWORD *,
837f667e74Sjose borrego     mlsvc_handle_t *);
848d7e4166Sjose borrego 
858d7e4166Sjose borrego /*
868d7e4166Sjose borrego  * samr_lookup.c
878d7e4166Sjose borrego  */
888d7e4166Sjose borrego union samr_user_info {
898d7e4166Sjose borrego 	struct info1 {
908d7e4166Sjose borrego 		char *username;
918d7e4166Sjose borrego 		char *fullname;
928d7e4166Sjose borrego 		DWORD group_rid;
938d7e4166Sjose borrego 		char *description;
948d7e4166Sjose borrego 		char *unknown;
958d7e4166Sjose borrego 	} info1;
968d7e4166Sjose borrego 
978d7e4166Sjose borrego 	struct info6 {
988d7e4166Sjose borrego 		char *username;
998d7e4166Sjose borrego 		char *fullname;
1008d7e4166Sjose borrego 	} info6;
1018d7e4166Sjose borrego 
1028d7e4166Sjose borrego 	struct info7 {
1038d7e4166Sjose borrego 		char *username;
1048d7e4166Sjose borrego 	} info7;
1058d7e4166Sjose borrego 
1068d7e4166Sjose borrego 	struct info8 {
1078d7e4166Sjose borrego 		char *fullname;
1088d7e4166Sjose borrego 	} info8;
1098d7e4166Sjose borrego 
1108d7e4166Sjose borrego 	struct info9 {
1118d7e4166Sjose borrego 		DWORD group_rid;
1128d7e4166Sjose borrego 	} info9;
1138d7e4166Sjose borrego 
1148d7e4166Sjose borrego 	struct info16 {
1158d7e4166Sjose borrego 		DWORD unknown;
1168d7e4166Sjose borrego 	} info16;
1178d7e4166Sjose borrego };
1188d7e4166Sjose borrego 
1198d7e4166Sjose borrego 
1207f667e74Sjose borrego smb_sid_t *samr_lookup_domain(mlsvc_handle_t *, char *);
1217f667e74Sjose borrego DWORD samr_enum_local_domains(mlsvc_handle_t *);
1227f667e74Sjose borrego uint32_t samr_lookup_domain_names(mlsvc_handle_t *, char *, smb_account_t *);
1237f667e74Sjose borrego int samr_query_user_info(mlsvc_handle_t *, WORD, union samr_user_info *);
1247f667e74Sjose borrego DWORD samr_get_user_pwinfo(mlsvc_handle_t *);
1258d7e4166Sjose borrego 
1268d7e4166Sjose borrego typedef struct oem_password {
1278d7e4166Sjose borrego 	BYTE data[512];
1288d7e4166Sjose borrego 	DWORD length;
1298d7e4166Sjose borrego } oem_password_t;
1308d7e4166Sjose borrego 
1318d7e4166Sjose borrego 
1327f667e74Sjose borrego int sam_oem_password(oem_password_t *, unsigned char *, unsigned char *);
1338d7e4166Sjose borrego 
1348d7e4166Sjose borrego #ifdef __cplusplus
1358d7e4166Sjose borrego }
1368d7e4166Sjose borrego #endif
1378d7e4166Sjose borrego 
1388d7e4166Sjose borrego 
1397f667e74Sjose borrego #endif /* _SAMLIB_H */
140