1 /*
2  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 /*
7  * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
8  *
9  *	Openvision retains the copyright to derivative works of
10  *	this source code.  Do *NOT* create a derivative of this
11  *	source code before consulting with your legal department.
12  *	Do *NOT* integrate *ANY* of this source code into another
13  *	product before consulting with your legal department.
14  *
15  *	For further information, read the top-level Openvision
16  *	copyright which is contained in the top-level MIT Kerberos
17  *	copyright.
18  *
19  * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
20  *
21  */
22 
23 
24 /*
25  * Copyright 1993-1994 OpenVision Technologies, Inc., All Rights Reserved.
26  *
27  * $Header: /cvs/krbdev/krb5/src/kadmin/passwd/tty_kpasswd.c,v 1.9 2001/02/26 18:22:08 epeisach Exp $
28  *
29  *
30  */
31 
32 static char rcsid[] = "$Id: tty_kpasswd.c,v 1.9 2001/02/26 18:22:08 epeisach Exp $";
33 
34 #include <kadm5/admin.h>
35 #include <krb5.h>
36 
37 #include "kpasswd_strings.h"
38 #define string_text error_message
39 
40 #include "kpasswd.h"
41 #include <stdio.h>
42 #include <pwd.h>
43 #include <string.h>
44 #include <libintl.h>
45 #include <locale.h>
46 
47 char *whoami;
48 
display_intro_message(fmt_string,arg_string)49 void display_intro_message(fmt_string, arg_string)
50      const char *fmt_string;
51      const char *arg_string;
52 {
53   com_err(whoami, 0, fmt_string, arg_string);
54 }
55 
read_old_password(context,password,pwsize)56 long read_old_password(context, password, pwsize)
57      krb5_context context;
58      char *password;
59      unsigned int *pwsize;
60 {
61   long code = krb5_read_password(context,
62 	    (char *) string_text(KPW_STR_OLD_PASSWORD_PROMPT),
63 			 0, password, pwsize);
64   return code;
65 }
66 
read_new_password(server_handle,password,pwsize,msg_ret,msg_len,princ)67 long read_new_password(server_handle, password, pwsize, msg_ret, msg_len, princ)
68      void *server_handle;
69      char *password;
70      unsigned int *pwsize;
71      char *msg_ret;
72      int msg_len;
73      krb5_principal princ;
74 {
75 	return (kadm5_chpass_principal_util(server_handle, princ, NULL,
76 					   NULL /* don't need new pw back */,
77 		msg_ret, msg_len));
78 }
79 
80 
81 /*
82  * main() for tty version of kpasswd.c
83  */
84 int
main(argc,argv)85 main(argc, argv)
86      int argc;
87      char *argv[];
88 {
89   krb5_context context;
90   int retval;
91 
92   whoami = (whoami = strrchr(argv[0], '/')) ? whoami + 1 : argv[0];
93 
94 	(void) setlocale(LC_ALL, "");
95 
96 #if !defined(TEXT_DOMAIN)  /* Should be defined by cc -D */
97 #define	TEXT_DOMAIN	"SYS_TEST"	/* Use this only if it weren't */
98 #endif
99 
100 	(void) textdomain(TEXT_DOMAIN);
101 
102   retval = krb5_init_context(&context);
103   if (retval) {
104 		com_err(whoami, retval, gettext("initializing krb5 context"));
105        exit(retval);
106   }
107 	/* initialize_kpws_error_table(); SUNWresync121 */
108 
109   retval = kpasswd(context, argc, argv);
110 
111   if (!retval)
112     printf(string_text(KPW_STR_PASSWORD_CHANGED));
113 
114   exit(retval);
115 }
116