diff options
author | Guido Guenther <agx@sigxcpu.org> | 2007-11-19 17:28:47 +0100 |
---|---|---|
committer | Guido Guenther <agx@sigxcpu.org> | 2007-11-19 17:28:47 +0100 |
commit | 347225c68836d1942d897d01bcb66b964fb3cd3a (patch) | |
tree | e156728ed3e46995a70505b4656e8bc98ef10b49 /src | |
download | krb5-auth-dialog-347225c68836d1942d897d01bcb66b964fb3cd3a.tar.gz krb5-auth-dialog-347225c68836d1942d897d01bcb66b964fb3cd3a.tar.bz2 krb5-auth-dialog-347225c68836d1942d897d01bcb66b964fb3cd3a.zip |
Imported upstream version 0.6
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 27 | ||||
-rw-r--r-- | src/Makefile.in | 621 | ||||
-rw-r--r-- | src/dummy-strings.c | 649 | ||||
-rw-r--r-- | src/krb5-auth-dialog.1.in | 37 | ||||
-rw-r--r-- | src/krb5-auth-dialog.c | 592 | ||||
-rw-r--r-- | src/krb5-auth-dialog.desktop.in | 9 | ||||
-rw-r--r-- | src/krb5-auth-dialog.glade | 252 |
7 files changed, 2187 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..282e938 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,27 @@ +INCLUDES = \ + -DGLADEDIR=\""$(datadir)/krb5-auth-dialog/"\" + +bin_PROGRAMS = krb5-auth-dialog +man_MANS = krb5-auth-dialog.1 + +autostartdir = $(sysconfdir)/xdg/autostart +autostart_in_files = krb5-auth-dialog.desktop.in +autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) +@INTLTOOL_DESKTOP_RULE@ + +krb5_auth_dialog_SOURCES = \ + krb5-auth-dialog.c \ + dummy-strings.c + +krb5_auth_dialog_LDADD = @NETWORK_MANAGER_LIBS@ @KRB5_LIBS@ @GNOME_LIBS@ + +gladedir = $(datadir)/krb5-auth-dialog +glade_DATA = \ + krb5-auth-dialog.glade + +EXTRA_DIST = \ + $(glade_DATA) \ + $(autostart_in_files) \ + krb5-auth-dialog.1.in + +DISTCLEANFILES = krb5-auth-dialog.desktop diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..630ddd3 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,621 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_NETWORK_MANAGER_FALSE = @ENABLE_NETWORK_MANAGER_FALSE@ +ENABLE_NETWORK_MANAGER_TRUE = @ENABLE_NETWORK_MANAGER_TRUE@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GNOME_CFLAGS = @GNOME_CFLAGS@ +GNOME_LIBS = @GNOME_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +KRB5_CFLAGS = @KRB5_CFLAGS@ +KRB5_CONFIG = @KRB5_CONFIG@ +KRB5_LIBS = @KRB5_LIBS@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +NETWORK_MANAGER_CFLAGS = @NETWORK_MANAGER_CFLAGS@ +NETWORK_MANAGER_LIBS = @NETWORK_MANAGER_LIBS@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +YACC = @YACC@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +check_interval = @check_interval@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +minimum_lifetime = @minimum_lifetime@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = \ + -DGLADEDIR=\""$(datadir)/krb5-auth-dialog/"\" + + +bin_PROGRAMS = krb5-auth-dialog +man_MANS = krb5-auth-dialog.1 + +autostartdir = $(sysconfdir)/xdg/autostart +autostart_in_files = krb5-auth-dialog.desktop.in +autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) + +krb5_auth_dialog_SOURCES = \ + krb5-auth-dialog.c \ + dummy-strings.c + + +krb5_auth_dialog_LDADD = @NETWORK_MANAGER_LIBS@ @KRB5_LIBS@ @GNOME_LIBS@ + +gladedir = $(datadir)/krb5-auth-dialog +glade_DATA = \ + krb5-auth-dialog.glade + + +EXTRA_DIST = \ + $(glade_DATA) \ + $(autostart_in_files) \ + krb5-auth-dialog.1.in + + +DISTCLEANFILES = krb5-auth-dialog.desktop +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = krb5-auth-dialog.1 +bin_PROGRAMS = krb5-auth-dialog$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_krb5_auth_dialog_OBJECTS = krb5-auth-dialog.$(OBJEXT) \ + dummy-strings.$(OBJEXT) +krb5_auth_dialog_OBJECTS = $(am_krb5_auth_dialog_OBJECTS) +krb5_auth_dialog_DEPENDENCIES = +krb5_auth_dialog_LDFLAGS = + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dummy-strings.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/krb5-auth-dialog.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(krb5_auth_dialog_SOURCES) + +NROFF = nroff +MANS = $(man_MANS) +DATA = $(autostart_DATA) $(glade_DATA) + +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am krb5-auth-dialog.1.in +SOURCES = $(krb5_auth_dialog_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +krb5-auth-dialog.1: $(top_builddir)/config.status krb5-auth-dialog.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +krb5-auth-dialog$(EXEEXT): $(krb5_auth_dialog_OBJECTS) $(krb5_auth_dialog_DEPENDENCIES) + @rm -f krb5-auth-dialog$(EXEEXT) + $(LINK) $(krb5_auth_dialog_LDFLAGS) $(krb5_auth_dialog_OBJECTS) $(krb5_auth_dialog_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy-strings.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5-auth-dialog.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +autostartDATA_INSTALL = $(INSTALL_DATA) +install-autostartDATA: $(autostart_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(autostartdir) + @list='$(autostart_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(autostartDATA_INSTALL) $$d$$p $(DESTDIR)$(autostartdir)/$$f"; \ + $(autostartDATA_INSTALL) $$d$$p $(DESTDIR)$(autostartdir)/$$f; \ + done + +uninstall-autostartDATA: + @$(NORMAL_UNINSTALL) + @list='$(autostart_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(autostartdir)/$$f"; \ + rm -f $(DESTDIR)$(autostartdir)/$$f; \ + done +gladeDATA_INSTALL = $(INSTALL_DATA) +install-gladeDATA: $(glade_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(gladedir) + @list='$(glade_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \ + $(gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \ + done + +uninstall-gladeDATA: + @$(NORMAL_UNINSTALL) + @list='$(glade_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \ + rm -f $(DESTDIR)$(gladedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) $(DESTDIR)$(autostartdir) $(DESTDIR)$(gladedir) +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-autostartDATA install-gladeDATA install-man + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-autostartDATA uninstall-binPROGRAMS \ + uninstall-gladeDATA uninstall-info-am uninstall-man + +uninstall-man: uninstall-man1 + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-autostartDATA \ + install-binPROGRAMS install-data install-data-am install-exec \ + install-exec-am install-gladeDATA install-info install-info-am \ + install-man install-man1 install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-autostartDATA \ + uninstall-binPROGRAMS uninstall-gladeDATA uninstall-info-am \ + uninstall-man uninstall-man1 + +@INTLTOOL_DESKTOP_RULE@ +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/dummy-strings.c b/src/dummy-strings.c new file mode 100644 index 0000000..adc8ea4 --- /dev/null +++ b/src/dummy-strings.c @@ -0,0 +1,649 @@ +/* This file is generated by hand from kerberos 1.3.4 by running + * + * ./etpo /path/to/krb5-1.3.4/ > dummy-strings.c + * + * It was then stripped of the meaningless messages (such as "Reserved + * error message [60-254]"). It is expected that not all these + * messages are translated. + */ + +#include <glib/gi18n.h> + +const char *dummy[] = { + N_("Can't read ticket file"), /* test1.et:krb:KRB_MK_AP_TKFIL */ + N_("Can't find ticket or TGT"), /* test1.et:krb:KRB_MK_AP_NOTKT */ + N_("TGT expired"), /* test1.et:krb:KRB_MK_AP_TGTEXP */ + N_("Can't decode authenticator"), /* test1.et:krb:KRB_RD_AP_UNDEC */ + N_("Ticket expired"), /* test1.et:krb:KRB_RD_AP_EXP */ + N_("Repeated request"), /* test1.et:krb:KRB_RD_AP_REPEAT */ + N_("The ticket isn't for us"), /* test1.et:krb:KRB_RD_AP_NOT_US */ + N_("Request is inconsistent"), /* test1.et:krb:KRB_RD_AP_INCON */ + N_("Delta-T too big"), /* test1.et:krb:KRB_RD_AP_TIME */ + N_("Incorrect net address"), /* test1.et:krb:KRB_RD_AP_BADD */ + N_("Protocol version mismatch"), /* test1.et:krb:KRB_RD_AP_VERSION */ + N_("Invalid message type"), /* test1.et:krb:KRB_RD_AP_MSG_TYPE */ + N_("Message stream modified"), /* test1.et:krb:KRB_RD_AP_MODIFIED */ + N_("Message out of order"), /* test1.et:krb:KRB_RD_AP_ORDER */ + N_("Unauthorized request"), /* test1.et:krb:KRB_RD_AP_UNAUTHOR */ + N_("Current password is null"), /* test1.et:krb:KRB_GT_PW_NULL */ + N_("Incorrect current password"), /* test1.et:krb:KRB_GT_PW_BADPW */ + N_("Protocol error"), /* test1.et:krb:KRB_GT_PW_PROT */ + N_("Error returned by KDC"), /* test1.et:krb:KRB_GT_PW_KDCERR */ + N_("Null ticket returned by KDC"), /* test1.et:krb:KRB_GT_PW_NULLTKT */ + N_("Retry count exceeded"), /* test1.et:krb:KRB_SKDC_RETRY */ + N_("Can't send request"), /* test1.et:krb:KRB_SKDC_CANT */ + N_("Subsystem aborted"), /* ss_err.et:ss:SS_ET_SUBSYSTEM_ABORTED */ + N_("Version mismatch"), /* ss_err.et:ss:SS_ET_VERSION_MISMATCH */ + N_("No current invocation"), /* ss_err.et:ss:SS_ET_NULL_INV */ + N_("No info directory"), /* ss_err.et:ss:SS_ET_NO_INFO_DIR */ + N_("Command not found"), /* ss_err.et:ss:SS_ET_COMMAND_NOT_FOUND */ + N_("Command line aborted"), /* ss_err.et:ss:SS_ET_LINE_ABORTED */ + N_("End-of-file reached"), /* ss_err.et:ss:SS_ET_EOF */ + N_("Permission denied"), /* ss_err.et:ss:SS_ET_PERMISSION_DENIED */ + N_("Request table not found"), /* ss_err.et:ss:SS_ET_TABLE_NOT_FOUND */ + N_("No info available"), /* ss_err.et:ss:SS_ET_NO_HELP_FILE */ + N_("Shell escapes are disabled"), /* ss_err.et:ss:SS_ET_ESCAPE_DISABLED */ + N_("Sorry, this request is not yet implemented"), /* ss_err.et:ss:SS_ET_UNIMPLEMENTED */ + N_("Profile version 0.0"), /* prof_err.et:prof:PROF_VERSION */ + N_("Bad magic value in profile_node"), /* prof_err.et:prof:PROF_MAGIC_NODE */ + N_("Profile section not found"), /* prof_err.et:prof:PROF_NO_SECTION */ + N_("Profile relation not found"), /* prof_err.et:prof:PROF_NO_RELATION */ + N_("Attempt to add a relation to node which is not a section"), /* prof_err.et:prof:PROF_ADD_NOT_SECTION */ + N_("A profile section header has a non-zero value"), /* prof_err.et:prof:PROF_SECTION_WITH_VALUE */ + N_("Bad linked list in profile structures"), /* prof_err.et:prof:PROF_BAD_LINK_LIST */ + N_("Bad group level in profile strctures"), /* prof_err.et:prof:PROF_BAD_GROUP_LVL */ + N_("Bad parent pointer in profile strctures"), /* prof_err.et:prof:PROF_BAD_PARENT_PTR */ + N_("Bad magic value in profile iterator"), /* prof_err.et:prof:PROF_MAGIC_ITERATOR */ + N_("Can't set value on section node"), /* prof_err.et:prof:PROF_SET_SECTION_VALUE */ + N_("Invalid argument passed to profile library"), /* prof_err.et:prof:PROF_EINVAL */ + N_("Attempt to modify read-only profile"), /* prof_err.et:prof:PROF_READ_ONLY */ + N_("Profile section header not at top level"), /* prof_err.et:prof:PROF_SECTION_NOTOP */ + N_("Syntax error in profile section header"), /* prof_err.et:prof:PROF_SECTION_SYNTAX */ + N_("Syntax error in profile relation"), /* prof_err.et:prof:PROF_RELATION_SYNTAX */ + N_("Extra closing brace in profile"), /* prof_err.et:prof:PROF_EXTRA_CBRACE */ + N_("Missing open brace in profile"), /* prof_err.et:prof:PROF_MISSING_OBRACE */ + N_("Bad magic value in profile_t"), /* prof_err.et:prof:PROF_MAGIC_PROFILE */ + N_("Bad magic value in profile_section_t"), /* prof_err.et:prof:PROF_MAGIC_SECTION */ + N_("Iteration through all top level section not supported"), /* prof_err.et:prof:PROF_TOPSECTION_ITER_NOSUPP */ + N_("Invalid profile_section object"), /* prof_err.et:prof:PROF_INVALID_SECTION */ + N_("No more sections"), /* prof_err.et:prof:PROF_END_OF_SECTIONS */ + N_("Bad nameset passed to query routine"), /* prof_err.et:prof:PROF_BAD_NAMESET */ + N_("No profile file open"), /* prof_err.et:prof:PROF_NO_PROFILE */ + N_("Bad magic value in profile_file_t"), /* prof_err.et:prof:PROF_MAGIC_FILE */ + N_("Couldn't open profile file"), /* prof_err.et:prof:PROF_FAIL_OPEN */ + N_("Section already exists"), /* prof_err.et:prof:PROF_EXISTS */ + N_("Invalid boolean value"), /* prof_err.et:prof:PROF_BAD_BOOLEAN */ + N_("Invalid integer value"), /* prof_err.et:prof:PROF_BAD_INTEGER */ + N_("Bad magic value in profile_file_data_t"), /* prof_err.et:prof:PROF_MAGIC_FILE_DATA */ + N_("Failed to unlock or grant streams pty."), /* pty_err.et:pty:PTY_GETPTY_STREAMS */ + N_("fstat of master pty failed"), /* pty_err.et:pty:PTY_GETPTY_FSTAT */ + N_("All terminal ports in use"), /* pty_err.et:pty:PTY_GETPTY_NOPTY */ + N_("buffer to hold slave pty name is too short"), /* pty_err.et:pty:PTY_GETPTY_SLAVE_TOOLONG */ + N_("Failed to open slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_OPENFAIL */ + N_("Failed to chmod slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_CHMODFAIL */ + N_("Unable to set controlling terminal"), /* pty_err.et:pty:PTY_OPEN_SLAVE_NOCTTY */ + N_("Failed to chown slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_CHOWNFAIL */ + N_("Call to line_push failed to push streams on slave pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_LINE_PUSHFAIL */ + N_("Failed to push stream on slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_PUSH_FAIL */ + N_("Failed to revoke slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_REVOKEFAIL */ + N_("bad process type passed to pty_update_utmp"), /* pty_err.et:pty:PTY_UPDATE_UTMP_PROCTYPE_INVALID */ + N_("Slave pty name is zero-length"), /* pty_err.et:pty:PTY_OPEN_SLAVE_TOOSHORT */ + N_("Usage: kpasswd [principal_name]."), /* kpasswd_strings.et:kpws:KPW_STR_USAGE */ + N_("Kerberos principal name %s is not recognized."), /* kpasswd_strings.et:kpws:KPW_STR_PRIN_UNKNOWN */ + N_("while reading principal name from credential cache."), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_LOOKING_AT_CC */ + N_("Old Kerberos password is incorrect. Please try again."), /* kpasswd_strings.et:kpws:KPW_STR_OLD_PASSWORD_INCORRECT */ + N_("Cannot establish a session with the Kerberos administrative server for\n\ +realm %s. %s."), /* kpasswd_strings.et:kpws:KPW_STR_CANT_OPEN_ADMIN_SERVER */ + N_("New passwords do not match - password not changed.\n"), /* kpasswd_strings.et:kpws:KPW_STR_NEW_PASSWORD_MISMATCH */ + N_("Kerberos password changed.\n"), /* kpasswd_strings.et:kpws:KPW_STR_PASSWORD_CHANGED */ + N_("Password not changed."), /* kpasswd_strings.et:kpws:KPW_STR_PASSWORD_NOT_CHANGED */ + N_("when parsing name %s."), /* kpasswd_strings.et:kpws:KPW_STR_PARSE_NAME */ + N_("when unparsing name."), /* kpasswd_strings.et:kpws:KPW_STR_UNPARSE_NAME */ + N_("Unable to identify user from password file."), /* kpasswd_strings.et:kpws:KPW_STR_NOT_IN_PASSWD_FILE */ + N_("Changing password for %s."), /* kpasswd_strings.et:kpws:KPW_STR_CHANGING_PW_FOR */ + N_("Old password"), /* kpasswd_strings.et:kpws:KPW_STR_OLD_PASSWORD_PROMPT */ + N_("while reading new password."), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_READING_PASSWORD */ + N_("You must type a password. Passwords must be at least one character long."), /* kpasswd_strings.et:kpws:KPW_STR_NO_PASSWORD_READ */ + N_("while trying to change password."), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_TRYING_TO_CHANGE */ + N_("while closing session with admin server and destroying tickets."), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_DESTROYING_ADMIN_SESSION */ + N_("while freeing admin principal entry"), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_FREEING_PRINCIPAL */ + N_("while freeing admin policy entry"), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_FREEING_POLICY */ + N_("Could not get password policy information for principal %s."), /* kpasswd_strings.et:kpws:KPW_STR_CANT_GET_POLICY_INFO */ + N_("%s's password is controlled by the policy %s, which\nrequires a minimum of %u characters from at least %u classes (the five classes\nare lowercase, uppercase, numbers, punctuation, and all other characters)."), /* kpasswd_strings.et:kpws:KPW_STR_POLICY_EXPLANATION */ + N_("Successfully imported %d record%s.\n"), /* import_err.et:imp:IMPORT_NO_ERR */ + N_("Input not recognized as database dump"), /* import_err.et:imp:IMPORT_BAD_FILE */ + N_("Bad token in dump file."), /* import_err.et:imp:IMPORT_BAD_TOKEN */ + N_("Bad version in dump file"), /* import_err.et:imp:IMPORT_BAD_VERSION */ + N_("Defective record encountered: "), /* import_err.et:imp:IMPORT_BAD_RECORD */ + N_("Truncated input file detected."), /* import_err.et:imp:IMPORT_BAD_FOOTER */ + N_("Import of dump failed"), /* import_err.et:imp:IMPORT_FAILED */ + N_("Mismatched record count: %d record%s indicated, %d record%s scanned.\n"), /* import_err.et:imp:IMPORT_COUNT_MESSAGE */ + N_("Number of records imported does not match count"), /* import_err.et:imp:IMPORT_MISMATCH_COUNT */ + N_("Unknown command line option.\nUsage: ovsec_adm_import [filename]"), /* import_err.et:imp:IMPORT_UNK_OPTION */ + N_("Warning -- continuing to import will overwrite existing databases!"), /* import_err.et:imp:IMPORT_WARN_DB */ + N_("Database rename Failed!!"), /* import_err.et:imp:IMPORT_RENAME_FAILED */ + N_("Extra data after footer is ignored."), /* import_err.et:imp:IMPORT_EXTRA_DATA */ + N_("Proceed <y|n>?"), /* import_err.et:imp:IMPORT_CONFIRM */ + N_("while opening input file"), /* import_err.et:imp:IMPORT_OPEN_DUMP */ + N_("while importing databases"), /* import_err.et:imp:IMPORT_IMPORT */ + N_("cannot open /dev/tty!!"), /* import_err.et:imp:IMPORT_TTY */ + N_("while opening databases"), /* import_err.et:imp:IMPORT_RENAME_OPEN */ + N_("while acquiring permanent lock"), /* import_err.et:imp:IMPORT_RENAME_LOCK */ + N_("while releasing permanent lock"), /* import_err.et:imp:IMPORT_RENAME_UNLOCK */ + N_("while closing databases"), /* import_err.et:imp:IMPORT_RENAME_CLOSE */ + N_("while retrieving configuration parameters"), /* import_err.et:imp:IMPORT_GET_PARAMS */ + N_("$Id: dummy-strings.c,v 1.2 2005/10/31 21:55:46 caillon Exp $"), /* kdc5_err.et:kdc5:KDC5_RCSID */ + N_("No server port found"), /* kdc5_err.et:kdc5:KDC5_NOPORT */ + N_("Network not initialized"), /* kdc5_err.et:kdc5:KDC5_NONET */ + N_("Short write while sending response"), /* kdc5_err.et:kdc5:KDC5_IO_RESPONSE */ + N_("Cannot convert V5 keyblock"), /* krb524_err.et:k524:KRB524_BADKEY */ + N_("Cannot convert V5 address information"), /* krb524_err.et:k524:KRB524_BADADDR */ + N_("Cannot convert V5 principal"), /* krb524_err.et:k524:KRB524_BADPRINC */ + N_("V5 realm name longer than V4 maximum"), /* krb524_err.et:k524:KRB524_BADREALM */ + N_("Kerberos V4 error"), /* krb524_err.et:k524:KRB524_V4ERR */ + N_("Encoding too large"), /* krb524_err.et:k524:KRB524_ENCFULL */ + N_("Decoding out of data"), /* krb524_err.et:k524:KRB524_DECEMPTY */ + N_("Service not responding"), /* krb524_err.et:k524:KRB524_NOTRESP */ + N_("Kerberos version 4 support is disabled"), /* krb524_err.et:k524:KRB524_KRB4_DISABLED */ + N_("No error"), /* krb5_err.et:krb5:KRB5KDC_ERR_NONE */ + N_("Client's entry in database has expired"), /* krb5_err.et:krb5:KRB5KDC_ERR_NAME_EXP */ + N_("Server's entry in database has expired"), /* krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_EXP */ + N_("Requested protocol version not supported"), /* krb5_err.et:krb5:KRB5KDC_ERR_BAD_PVNO */ + N_("Client's key is encrypted in an old master key"), /* krb5_err.et:krb5:KRB5KDC_ERR_C_OLD_MAST_KVNO */ + N_("Server's key is encrypted in an old master key"), /* krb5_err.et:krb5:KRB5KDC_ERR_S_OLD_MAST_KVNO */ + N_("Client not found in Kerberos database"), /* krb5_err.et:krb5:KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN */ + N_("Server not found in Kerberos database"), /* krb5_err.et:krb5:KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN */ + N_("Principal has multiple entries in Kerberos database"), /* krb5_err.et:krb5:KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE */ + N_("Client or server has a null key"), /* krb5_err.et:krb5:KRB5KDC_ERR_NULL_KEY */ + N_("Ticket is ineligible for postdating"), /* krb5_err.et:krb5:KRB5KDC_ERR_CANNOT_POSTDATE */ + N_("Requested effective lifetime is negative or too short"), /* krb5_err.et:krb5:KRB5KDC_ERR_NEVER_VALID */ + N_("KDC policy rejects request"), /* krb5_err.et:krb5:KRB5KDC_ERR_POLICY */ + N_("KDC can't fulfill requested option"), /* krb5_err.et:krb5:KRB5KDC_ERR_BADOPTION */ + N_("KDC has no support for encryption type"), /* krb5_err.et:krb5:KRB5KDC_ERR_ETYPE_NOSUPP */ + N_("KDC has no support for checksum type"), /* krb5_err.et:krb5:KRB5KDC_ERR_SUMTYPE_NOSUPP */ + N_("KDC has no support for padata type"), /* krb5_err.et:krb5:KRB5KDC_ERR_PADATA_TYPE_NOSUPP */ + N_("KDC has no support for transited type"), /* krb5_err.et:krb5:KRB5KDC_ERR_TRTYPE_NOSUPP */ + N_("Clients credentials have been revoked"), /* krb5_err.et:krb5:KRB5KDC_ERR_CLIENT_REVOKED */ + N_("Credentials for server have been revoked"), /* krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_REVOKED */ + N_("TGT has been revoked"), /* krb5_err.et:krb5:KRB5KDC_ERR_TGT_REVOKED */ + N_("Client not yet valid - try again later"), /* krb5_err.et:krb5:KRB5KDC_ERR_CLIENT_NOTYET */ + N_("Server not yet valid - try again later"), /* krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_NOTYET */ + N_("Password has expired"), /* krb5_err.et:krb5:KRB5KDC_ERR_KEY_EXP */ + N_("Preauthentication failed"), /* krb5_err.et:krb5:KRB5KDC_ERR_PREAUTH_FAILED */ + N_("Additional pre-authentication required"), /* krb5_err.et:krb5:KRB5KDC_ERR_PREAUTH_REQUIRED */ + N_("Requested server and ticket don't match"), /* krb5_err.et:krb5:KRB5KDC_ERR_SERVER_NOMATCH */ + N_("Decrypt integrity check failed"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BAD_INTEGRITY */ + N_("Ticket expired"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_EXPIRED */ + N_("Ticket not yet valid"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_NYV */ + N_("Request is a replay"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_REPEAT */ + N_("The ticket isn't for us"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_NOT_US */ + N_("Ticket/authenticator don't match"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADMATCH */ + N_("Clock skew too great"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_SKEW */ + N_("Incorrect net address"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADADDR */ + N_("Protocol version mismatch"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADVERSION */ + N_("Invalid message type"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_MSG_TYPE */ + N_("Message stream modified"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_MODIFIED */ + N_("Message out of order"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADORDER */ + N_("Illegal cross-realm ticket"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_ILL_CR_TKT */ + N_("Key version is not available"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADKEYVER */ + N_("Service key not available"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_NOKEY */ + N_("Mutual authentication failed"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_MUT_FAIL */ + N_("Incorrect message direction"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADDIRECTION */ + N_("Alternative authentication method required"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_METHOD */ + N_("Incorrect sequence number in message"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADSEQ */ + N_("Inappropriate type of checksum in message"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_INAPP_CKSUM */ + N_("Policy rejects transited path"), /* krb5_err.et:krb5:KRB5KRB_AP_PATH_NOT_ACCEPTED */ + N_("Response too big for UDP, retry with TCP"), /* krb5_err.et:krb5:KRB5KRB_ERR_RESPONSE_TOO_BIG */ + N_("Generic error (see e-text)"), /* krb5_err.et:krb5:KRB5KRB_ERR_GENERIC */ + N_("Field is too long for this implementation"), /* krb5_err.et:krb5:KRB5KRB_ERR_FIELD_TOOLONG */ + N_("Invalid flag for file lock mode"), /* krb5_err.et:krb5:KRB5_LIBOS_BADLOCKFLAG */ + N_("Cannot read password"), /* krb5_err.et:krb5:KRB5_LIBOS_CANTREADPWD */ + N_("Password mismatch"), /* krb5_err.et:krb5:KRB5_LIBOS_BADPWDMATCH */ + N_("Password read interrupted"), /* krb5_err.et:krb5:KRB5_LIBOS_PWDINTR */ + N_("Illegal character in component name"), /* krb5_err.et:krb5:KRB5_PARSE_ILLCHAR */ + N_("Malformed representation of principal"), /* krb5_err.et:krb5:KRB5_PARSE_MALFORMED */ + N_("Can't open/find Kerberos configuration file"), /* krb5_err.et:krb5:KRB5_CONFIG_CANTOPEN */ + N_("Improper format of Kerberos configuration file"), /* krb5_err.et:krb5:KRB5_CONFIG_BADFORMAT */ + N_("Insufficient space to return complete information"), /* krb5_err.et:krb5:KRB5_CONFIG_NOTENUFSPACE */ + N_("Invalid message type specified for encoding"), /* krb5_err.et:krb5:KRB5_BADMSGTYPE */ + N_("Credential cache name malformed"), /* krb5_err.et:krb5:KRB5_CC_BADNAME */ + N_("Unknown credential cache type"), /* krb5_err.et:krb5:KRB5_CC_UNKNOWN_TYPE */ + N_("Matching credential not found"), /* krb5_err.et:krb5:KRB5_CC_NOTFOUND */ + N_("End of credential cache reached"), /* krb5_err.et:krb5:KRB5_CC_END */ + N_("Request did not supply a ticket"), /* krb5_err.et:krb5:KRB5_NO_TKT_SUPPLIED */ + N_("Wrong principal in request"), /* krb5_err.et:krb5:KRB5KRB_AP_WRONG_PRINC */ + N_("Ticket has invalid flag set"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_INVALID */ + N_("Requested principal and ticket don't match"), /* krb5_err.et:krb5:KRB5_PRINC_NOMATCH */ + N_("KDC reply did not match expectations"), /* krb5_err.et:krb5:KRB5_KDCREP_MODIFIED */ + N_("Clock skew too great in KDC reply"), /* krb5_err.et:krb5:KRB5_KDCREP_SKEW */ + N_("Client/server realm mismatch in initial ticket request"), /* krb5_err.et:krb5:KRB5_IN_TKT_REALM_MISMATCH */ + N_("Program lacks support for encryption type"), /* krb5_err.et:krb5:KRB5_PROG_ETYPE_NOSUPP */ + N_("Program lacks support for key type"), /* krb5_err.et:krb5:KRB5_PROG_KEYTYPE_NOSUPP */ + N_("Requested encryption type not used in message"), /* krb5_err.et:krb5:KRB5_WRONG_ETYPE */ + N_("Program lacks support for checksum type"), /* krb5_err.et:krb5:KRB5_PROG_SUMTYPE_NOSUPP */ + N_("Cannot find KDC for requested realm"), /* krb5_err.et:krb5:KRB5_REALM_UNKNOWN */ + N_("Kerberos service unknown"), /* krb5_err.et:krb5:KRB5_SERVICE_UNKNOWN */ + N_("Cannot contact any KDC for requested realm"), /* krb5_err.et:krb5:KRB5_KDC_UNREACH */ + N_("No local name found for principal name"), /* krb5_err.et:krb5:KRB5_NO_LOCALNAME */ + N_("Mutual authentication failed"), /* krb5_err.et:krb5:KRB5_MUTUAL_FAILED */ + N_("Replay cache type is already registered"), /* krb5_err.et:krb5:KRB5_RC_TYPE_EXISTS */ + N_("No more memory to allocate (in replay cache code)"), /* krb5_err.et:krb5:KRB5_RC_MALLOC */ + N_("Replay cache type is unknown"), /* krb5_err.et:krb5:KRB5_RC_TYPE_NOTFOUND */ + N_("Generic unknown RC error"), /* krb5_err.et:krb5:KRB5_RC_UNKNOWN */ + N_("Message is a replay"), /* krb5_err.et:krb5:KRB5_RC_REPLAY */ + N_("Replay I/O operation failed XXX"), /* krb5_err.et:krb5:KRB5_RC_IO */ + N_("Replay cache type does not support non-volatile storage"), /* krb5_err.et:krb5:KRB5_RC_NOIO */ + N_("Replay cache name parse/format error"), /* krb5_err.et:krb5:KRB5_RC_PARSE */ + N_("End-of-file on replay cache I/O"), /* krb5_err.et:krb5:KRB5_RC_IO_EOF */ + N_("No more memory to allocate (in replay cache I/O code)"), /* krb5_err.et:krb5:KRB5_RC_IO_MALLOC */ + N_("Permission denied in replay cache code"), /* krb5_err.et:krb5:KRB5_RC_IO_PERM */ + N_("I/O error in replay cache i/o code"), /* krb5_err.et:krb5:KRB5_RC_IO_IO */ + N_("Generic unknown RC/IO error"), /* krb5_err.et:krb5:KRB5_RC_IO_UNKNOWN */ + N_("Insufficient system space to store replay information"), /* krb5_err.et:krb5:KRB5_RC_IO_SPACE */ + N_("Can't open/find realm translation file"), /* krb5_err.et:krb5:KRB5_TRANS_CANTOPEN */ + N_("Improper format of realm translation file"), /* krb5_err.et:krb5:KRB5_TRANS_BADFORMAT */ + N_("Can't open/find lname translation database"), /* krb5_err.et:krb5:KRB5_LNAME_CANTOPEN */ + N_("No translation available for requested principal"), /* krb5_err.et:krb5:KRB5_LNAME_NOTRANS */ + N_("Improper format of translation database entry"), /* krb5_err.et:krb5:KRB5_LNAME_BADFORMAT */ + N_("Cryptosystem internal error"), /* krb5_err.et:krb5:KRB5_CRYPTO_INTERNAL */ + N_("Key table name malformed"), /* krb5_err.et:krb5:KRB5_KT_BADNAME */ + N_("Unknown Key table type"), /* krb5_err.et:krb5:KRB5_KT_UNKNOWN_TYPE */ + N_("Key table entry not found"), /* krb5_err.et:krb5:KRB5_KT_NOTFOUND */ + N_("End of key table reached"), /* krb5_err.et:krb5:KRB5_KT_END */ + N_("Cannot write to specified key table"), /* krb5_err.et:krb5:KRB5_KT_NOWRITE */ + N_("Error writing to key table"), /* krb5_err.et:krb5:KRB5_KT_IOERR */ + N_("Cannot find ticket for requested realm"), /* krb5_err.et:krb5:KRB5_NO_TKT_IN_RLM */ + N_("DES key has bad parity"), /* krb5_err.et:krb5:KRB5DES_BAD_KEYPAR */ + N_("DES key is a weak key"), /* krb5_err.et:krb5:KRB5DES_WEAK_KEY */ + N_("Bad encryption type"), /* krb5_err.et:krb5:KRB5_BAD_ENCTYPE */ + N_("Key size is incompatible with encryption type"), /* krb5_err.et:krb5:KRB5_BAD_KEYSIZE */ + N_("Message size is incompatible with encryption type"), /* krb5_err.et:krb5:KRB5_BAD_MSIZE */ + N_("Credentials cache type is already registered."), /* krb5_err.et:krb5:KRB5_CC_TYPE_EXISTS */ + N_("Key table type is already registered."), /* krb5_err.et:krb5:KRB5_KT_TYPE_EXISTS */ + N_("Credentials cache I/O operation failed XXX"), /* krb5_err.et:krb5:KRB5_CC_IO */ + N_("Credentials cache permissions incorrect"), /* krb5_err.et:krb5:KRB5_FCC_PERM */ + N_("No credentials cache found"), /* krb5_err.et:krb5:KRB5_FCC_NOFILE */ + N_("Internal credentials cache error"), /* krb5_err.et:krb5:KRB5_FCC_INTERNAL */ + N_("Error writing to credentials cache"), /* krb5_err.et:krb5:KRB5_CC_WRITE */ + N_("No more memory to allocate (in credentials cache code)"), /* krb5_err.et:krb5:KRB5_CC_NOMEM */ + N_("Bad format in credentials cache"), /* krb5_err.et:krb5:KRB5_CC_FORMAT */ + N_("No credentials found with supported encryption types"), /* krb5_err.et:krb5:KRB5_CC_NOT_KTYPE */ + N_("Invalid KDC option combination (library internal error)"), /* krb5_err.et:krb5:KRB5_INVALID_FLAGS */ + N_("Request missing second ticket"), /* krb5_err.et:krb5:KRB5_NO_2ND_TKT */ + N_("No credentials supplied to library routine"), /* krb5_err.et:krb5:KRB5_NOCREDS_SUPPLIED */ + N_("Bad sendauth version was sent"), /* krb5_err.et:krb5:KRB5_SENDAUTH_BADAUTHVERS */ + N_("Bad application version was sent (via sendauth)"), /* krb5_err.et:krb5:KRB5_SENDAUTH_BADAPPLVERS */ + N_("Bad response (during sendauth exchange)"), /* krb5_err.et:krb5:KRB5_SENDAUTH_BADRESPONSE */ + N_("Server rejected authentication (during sendauth exchange)"), /* krb5_err.et:krb5:KRB5_SENDAUTH_REJECTED */ + N_("Unsupported preauthentication type"), /* krb5_err.et:krb5:KRB5_PREAUTH_BAD_TYPE */ + N_("Required preauthentication key not supplied"), /* krb5_err.et:krb5:KRB5_PREAUTH_NO_KEY */ + N_("Generic preauthentication failure"), /* krb5_err.et:krb5:KRB5_PREAUTH_FAILED */ + N_("Unsupported replay cache format version number"), /* krb5_err.et:krb5:KRB5_RCACHE_BADVNO */ + N_("Unsupported credentials cache format version number"), /* krb5_err.et:krb5:KRB5_CCACHE_BADVNO */ + N_("Unsupported key table format version number"), /* krb5_err.et:krb5:KRB5_KEYTAB_BADVNO */ + N_("Program lacks support for address type"), /* krb5_err.et:krb5:KRB5_PROG_ATYPE_NOSUPP */ + N_("Message replay detection requires rcache parameter"), /* krb5_err.et:krb5:KRB5_RC_REQUIRED */ + N_("Hostname cannot be canonicalized"), /* krb5_err.et:krb5:KRB5_ERR_BAD_HOSTNAME */ + N_("Cannot determine realm for host"), /* krb5_err.et:krb5:KRB5_ERR_HOST_REALM_UNKNOWN */ + N_("Conversion to service principal undefined for name type"), /* krb5_err.et:krb5:KRB5_SNAME_UNSUPP_NAMETYPE */ + N_("Initial Ticket response appears to be Version 4 error"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_V4_REPLY */ + N_("Cannot resolve network address for KDC in requested realm"), /* krb5_err.et:krb5:KRB5_REALM_CANT_RESOLVE */ + N_("Requesting ticket can't get forwardable tickets"), /* krb5_err.et:krb5:KRB5_TKT_NOT_FORWARDABLE */ + N_("Bad principal name while trying to forward credentials"), /* krb5_err.et:krb5:KRB5_FWD_BAD_PRINCIPAL */ + N_("Looping detected inside krb5_get_in_tkt"), /* krb5_err.et:krb5:KRB5_GET_IN_TKT_LOOP */ + N_("Configuration file does not specify default realm"), /* krb5_err.et:krb5:KRB5_CONFIG_NODEFREALM */ + N_("Bad SAM flags in obtain_sam_padata"), /* krb5_err.et:krb5:KRB5_SAM_UNSUPPORTED */ + N_("Invalid encryption type in SAM challenge"), /* krb5_err.et:krb5:KRB5_SAM_INVALID_ETYPE */ + N_("Missing checksum in SAM challenge"), /* krb5_err.et:krb5:KRB5_SAM_NO_CHECKSUM */ + N_("Bad checksum in SAM challenge"), /* krb5_err.et:krb5:KRB5_SAM_BAD_CHECKSUM */ + N_("Keytab name too long"), /* krb5_err.et:krb5:KRB5_KT_NAME_TOOLONG */ + N_("Key version number for principal in key table is incorrect"), /* krb5_err.et:krb5:KRB5_KT_KVNONOTFOUND */ + N_("This application has expired"), /* krb5_err.et:krb5:KRB5_APPL_EXPIRED */ + N_("This Krb5 library has expired"), /* krb5_err.et:krb5:KRB5_LIB_EXPIRED */ + N_("New password cannot be zero length"), /* krb5_err.et:krb5:KRB5_CHPW_PWDNULL */ + N_("Password change failed"), /* krb5_err.et:krb5:KRB5_CHPW_FAIL */ + N_("Bad format in keytab"), /* krb5_err.et:krb5:KRB5_KT_FORMAT */ + N_("Encryption type not permitted"), /* krb5_err.et:krb5:KRB5_NOPERM_ETYPE */ + N_("No supported encryption types (config file error?)"), /* krb5_err.et:krb5:KRB5_CONFIG_ETYPE_NOSUPP */ + N_("Program called an obsolete, deleted function"), /* krb5_err.et:krb5:KRB5_OBSOLETE_FN */ + N_("unknown getaddrinfo failure"), /* krb5_err.et:krb5:KRB5_EAI_FAIL */ + N_("no data available for host/domain name"), /* krb5_err.et:krb5:KRB5_EAI_NODATA */ + N_("host/domain name not found"), /* krb5_err.et:krb5:KRB5_EAI_NONAME */ + N_("service name unknown"), /* krb5_err.et:krb5:KRB5_EAI_SERVICE */ + N_("Cannot determine realm for numeric host address"), /* krb5_err.et:krb5:KRB5_ERR_NUMERIC_REALM */ + N_("Invalid key generation parameters from KDC"), /* krb5_err.et:krb5:KRB5_ERR_BAD_S2K_PARAMS */ + N_("service not available"), /* krb5_err.et:krb5:KRB5_ERR_NO_SERVICE */ + N_("Ccache function not supported: read-only ccache type"), /* krb5_err.et:krb5:KRB5_CC_READONLY */ + N_("Ccache function not supported: not implemented"), /* krb5_err.et:krb5:KRB5_CC_NOSUPP */ + N_("ASN.1 failed call to system time library"), /* asn1_err.et:asn1:ASN1_BAD_TIMEFORMAT */ + N_("ASN.1 structure is missing a required field"), /* asn1_err.et:asn1:ASN1_MISSING_FIELD */ + N_("ASN.1 unexpected field number"), /* asn1_err.et:asn1:ASN1_MISPLACED_FIELD */ + N_("ASN.1 type numbers are inconsistent"), /* asn1_err.et:asn1:ASN1_TYPE_MISMATCH */ + N_("ASN.1 value too large"), /* asn1_err.et:asn1:ASN1_OVERFLOW */ + N_("ASN.1 encoding ended unexpectedly"), /* asn1_err.et:asn1:ASN1_OVERRUN */ + N_("ASN.1 identifier doesn't match expected value"), /* asn1_err.et:asn1:ASN1_BAD_ID */ + N_("ASN.1 length doesn't match expected value"), /* asn1_err.et:asn1:ASN1_BAD_LENGTH */ + N_("ASN.1 badly-formatted encoding"), /* asn1_err.et:asn1:ASN1_BAD_FORMAT */ + N_("ASN.1 parse error"), /* asn1_err.et:asn1:ASN1_PARSE_ERROR */ + N_("ASN.1 bad return from gmtime"), /* asn1_err.et:asn1:ASN1_BAD_GMTIME */ + N_("ASN.1 non-constructed indefinite encoding"), /* asn1_err.et:asn1:ASN1_MISMATCH_INDEF */ + N_("ASN.1 missing expected EOC"), /* asn1_err.et:asn1:ASN1_MISSING_EOC */ + N_("Kerberos V5 magic number table"), /* kv5m_err.et:kv5m:KV5M_NONE */ + N_("Bad magic number for krb5_principal structure"), /* kv5m_err.et:kv5m:KV5M_PRINCIPAL */ + N_("Bad magic number for krb5_data structure"), /* kv5m_err.et:kv5m:KV5M_DATA */ + N_("Bad magic number for krb5_keyblock structure"), /* kv5m_err.et:kv5m:KV5M_KEYBLOCK */ + N_("Bad magic number for krb5_checksum structure"), /* kv5m_err.et:kv5m:KV5M_CHECKSUM */ + N_("Bad magic number for krb5_encrypt_block structure"), /* kv5m_err.et:kv5m:KV5M_ENCRYPT_BLOCK */ + N_("Bad magic number for krb5_enc_data structure"), /* kv5m_err.et:kv5m:KV5M_ENC_DATA */ + N_("Bad magic number for krb5_cryptosystem_entry structure"), /* kv5m_err.et:kv5m:KV5M_CRYPTOSYSTEM_ENTRY */ + N_("Bad magic number for krb5_cs_table_entry structure"), /* kv5m_err.et:kv5m:KV5M_CS_TABLE_ENTRY */ + N_("Bad magic number for krb5_checksum_entry structure"), /* kv5m_err.et:kv5m:KV5M_CHECKSUM_ENTRY */ + N_("Bad magic number for krb5_authdata structure"), /* kv5m_err.et:kv5m:KV5M_AUTHDATA */ + N_("Bad magic number for krb5_transited structure"), /* kv5m_err.et:kv5m:KV5M_TRANSITED */ + N_("Bad magic number for krb5_enc_tkt_part structure"), /* kv5m_err.et:kv5m:KV5M_ENC_TKT_PART */ + N_("Bad magic number for krb5_ticket structure"), /* kv5m_err.et:kv5m:KV5M_TICKET */ + N_("Bad magic number for krb5_authenticator structure"), /* kv5m_err.et:kv5m:KV5M_AUTHENTICATOR */ + N_("Bad magic number for krb5_tkt_authent structure"), /* kv5m_err.et:kv5m:KV5M_TKT_AUTHENT */ + N_("Bad magic number for krb5_creds structure"), /* kv5m_err.et:kv5m:KV5M_CREDS */ + N_("Bad magic number for krb5_last_req_entry structure"), /* kv5m_err.et:kv5m:KV5M_LAST_REQ_ENTRY */ + N_("Bad magic number for krb5_pa_data structure"), /* kv5m_err.et:kv5m:KV5M_PA_DATA */ + N_("Bad magic number for krb5_kdc_req structure"), /* kv5m_err.et:kv5m:KV5M_KDC_REQ */ + N_("Bad magic number for krb5_enc_kdc_rep_part structure"), /* kv5m_err.et:kv5m:KV5M_ENC_KDC_REP_PART */ + N_("Bad magic number for krb5_kdc_rep structure"), /* kv5m_err.et:kv5m:KV5M_KDC_REP */ + N_("Bad magic number for krb5_error structure"), /* kv5m_err.et:kv5m:KV5M_ERROR */ + N_("Bad magic number for krb5_ap_req structure"), /* kv5m_err.et:kv5m:KV5M_AP_REQ */ + N_("Bad magic number for krb5_ap_rep structure"), /* kv5m_err.et:kv5m:KV5M_AP_REP */ + N_("Bad magic number for krb5_ap_rep_enc_part structure"), /* kv5m_err.et:kv5m:KV5M_AP_REP_ENC_PART */ + N_("Bad magic number for krb5_response structure"), /* kv5m_err.et:kv5m:KV5M_RESPONSE */ + N_("Bad magic number for krb5_safe structure"), /* kv5m_err.et:kv5m:KV5M_SAFE */ + N_("Bad magic number for krb5_priv structure"), /* kv5m_err.et:kv5m:KV5M_PRIV */ + N_("Bad magic number for krb5_priv_enc_part structure"), /* kv5m_err.et:kv5m:KV5M_PRIV_ENC_PART */ + N_("Bad magic number for krb5_cred structure"), /* kv5m_err.et:kv5m:KV5M_CRED */ + N_("Bad magic number for krb5_cred_info structure"), /* kv5m_err.et:kv5m:KV5M_CRED_INFO */ + N_("Bad magic number for krb5_cred_enc_part structure"), /* kv5m_err.et:kv5m:KV5M_CRED_ENC_PART */ + N_("Bad magic number for krb5_pwd_data structure"), /* kv5m_err.et:kv5m:KV5M_PWD_DATA */ + N_("Bad magic number for krb5_address structure"), /* kv5m_err.et:kv5m:KV5M_ADDRESS */ + N_("Bad magic number for krb5_keytab_entry structure"), /* kv5m_err.et:kv5m:KV5M_KEYTAB_ENTRY */ + N_("Bad magic number for krb5_context structure"), /* kv5m_err.et:kv5m:KV5M_CONTEXT */ + N_("Bad magic number for krb5_os_context structure"), /* kv5m_err.et:kv5m:KV5M_OS_CONTEXT */ + N_("Bad magic number for krb5_alt_method structure"), /* kv5m_err.et:kv5m:KV5M_ALT_METHOD */ + N_("Bad magic number for krb5_etype_info_entry structure"), /* kv5m_err.et:kv5m:KV5M_ETYPE_INFO_ENTRY */ + N_("Bad magic number for krb5_db_context structure"), /* kv5m_err.et:kv5m:KV5M_DB_CONTEXT */ + N_("Bad magic number for krb5_auth_context structure"), /* kv5m_err.et:kv5m:KV5M_AUTH_CONTEXT */ + N_("Bad magic number for krb5_keytab structure"), /* kv5m_err.et:kv5m:KV5M_KEYTAB */ + N_("Bad magic number for krb5_rcache structure"), /* kv5m_err.et:kv5m:KV5M_RCACHE */ + N_("Bad magic number for krb5_ccache structure"), /* kv5m_err.et:kv5m:KV5M_CCACHE */ + N_("Bad magic number for krb5_preauth_ops"), /* kv5m_err.et:kv5m:KV5M_PREAUTH_OPS */ + N_("Bad magic number for krb5_sam_challenge"), /* kv5m_err.et:kv5m:KV5M_SAM_CHALLENGE */ + N_("Bad magic number for krb5_sam_challenge_2"), /* kv5m_err.et:kv5m:KV5M_SAM_CHALLENGE_2 */ + N_("Bad magic number for krb5_sam_key"), /* kv5m_err.et:kv5m:KV5M_SAM_KEY */ + N_("Bad magic number for krb5_enc_sam_response_enc"), /* kv5m_err.et:kv5m:KV5M_ENC_SAM_RESPONSE_ENC */ + N_("Bad magic number for krb5_enc_sam_response_enc"), /* kv5m_err.et:kv5m:KV5M_ENC_SAM_RESPONSE_ENC_2 */ + N_("Bad magic number for krb5_sam_response"), /* kv5m_err.et:kv5m:KV5M_SAM_RESPONSE */ + N_("Bad magic number for krb5_sam_response 2"), /* kv5m_err.et:kv5m:KV5M_SAM_RESPONSE_2 */ + N_("Bad magic number for krb5_predicted_sam_response"), /* kv5m_err.et:kv5m:KV5M_PREDICTED_SAM_RESPONSE */ + N_("Bad magic number for passwd_phrase_element"), /* kv5m_err.et:kv5m:KV5M_PASSWD_PHRASE_ELEMENT */ + N_("Bad magic number for GSSAPI OID"), /* kv5m_err.et:kv5m:KV5M_GSS_OID */ + N_("Bad magic number for GSSAPI QUEUE"), /* kv5m_err.et:kv5m:KV5M_GSS_QUEUE */ + N_("$Id: dummy-strings.c,v 1.2 2005/10/31 21:55:46 caillon Exp $"), /* kdb5_err.et:kdb5:KRB5_KDB_RCSID */ + N_("Entry already exists in database"), /* kdb5_err.et:kdb5:KRB5_KDB_INUSE */ + N_("Database store error"), /* kdb5_err.et:kdb5:KRB5_KDB_UK_SERROR */ + N_("Database read error"), /* kdb5_err.et:kdb5:KRB5_KDB_UK_RERROR */ + N_("Insufficient access to perform requested operation"), /* kdb5_err.et:kdb5:KRB5_KDB_UNAUTH */ + N_("No such entry in the database"), /* kdb5_err.et:kdb5:KRB5_KDB_NOENTRY */ + N_("Illegal use of wildcard"), /* kdb5_err.et:kdb5:KRB5_KDB_ILL_WILDCARD */ + N_("Database is locked or in use--try again later"), /* kdb5_err.et:kdb5:KRB5_KDB_DB_INUSE */ + N_("Database was modified during read"), /* kdb5_err.et:kdb5:KRB5_KDB_DB_CHANGED */ + N_("Database record is incomplete or corrupted"), /* kdb5_err.et:kdb5:KRB5_KDB_TRUNCATED_RECORD */ + N_("Attempt to lock database twice"), /* kdb5_err.et:kdb5:KRB5_KDB_RECURSIVELOCK */ + N_("Attempt to unlock database when not locked"), /* kdb5_err.et:kdb5:KRB5_KDB_NOTLOCKED */ + N_("Invalid kdb lock mode"), /* kdb5_err.et:kdb5:KRB5_KDB_BADLOCKMODE */ + N_("Database has not been initialized"), /* kdb5_err.et:kdb5:KRB5_KDB_DBNOTINITED */ + N_("Database has already been initialized"), /* kdb5_err.et:kdb5:KRB5_KDB_DBINITED */ + N_("Bad direction for converting keys"), /* kdb5_err.et:kdb5:KRB5_KDB_ILLDIRECTION */ + N_("Cannot find master key record in database"), /* kdb5_err.et:kdb5:KRB5_KDB_NOMASTERKEY */ + N_("Master key does not match database"), /* kdb5_err.et:kdb5:KRB5_KDB_BADMASTERKEY */ + N_("Key size in database is invalid"), /* kdb5_err.et:kdb5:KRB5_KDB_INVALIDKEYSIZE */ + N_("Cannot find/read stored master key"), /* kdb5_err.et:kdb5:KRB5_KDB_CANTREAD_STORED */ + N_("Stored master key is corrupted"), /* kdb5_err.et:kdb5:KRB5_KDB_BADSTORED_MKEY */ + N_("Insufficient access to lock database"), /* kdb5_err.et:kdb5:KRB5_KDB_CANTLOCK_DB */ + N_("Database format error"), /* kdb5_err.et:kdb5:KRB5_KDB_DB_CORRUPT */ + N_("Unsupported version in database entry"), /* kdb5_err.et:kdb5:KRB5_KDB_BAD_VERSION */ + N_("Unsupported salt type"), /* kdb5_err.et:kdb5:KRB5_KDB_BAD_SALTTYPE */ + N_("Unsupported encryption type"), /* kdb5_err.et:kdb5:KRB5_KDB_BAD_ENCTYPE */ + N_("Bad database creation flags"), /* kdb5_err.et:kdb5:KRB5_KDB_BAD_CREATEFLAGS */ + N_("No matching key in entry having a permitted enctype"), /* kdb5_err.et:kdb5:KRB5_KDB_NO_PERMITTED_KEY */ + N_("No matching key in entry"), /* kdb5_err.et:kdb5:KRB5_KDB_NO_MATCHING_KEY */ + N_("No Error"), /* adb_err.et:adb:OSA_ADB_NOERR */ + N_("Principal or policy already exists"), /* adb_err.et:adb:OSA_ADB_DUP */ + N_("Principal or policy does not exist"), /* adb_err.et:adb:OSA_ADB_NOENT */ + N_("Database not initialized"), /* adb_err.et:adb:OSA_ADB_DBINIT */ + N_("Invalid policy name"), /* adb_err.et:adb:OSA_ADB_BAD_POLICY */ + N_("Invalid principal name"), /* adb_err.et:adb:OSA_ADB_BAD_PRINC */ + N_("Database inconsistency detected"), /* adb_err.et:adb:OSA_ADB_BAD_DB */ + N_("XDR encoding error"), /* adb_err.et:adb:OSA_ADB_XDR_FAILURE */ + N_("Failure!"), /* adb_err.et:adb:OSA_ADB_FAILURE */ + N_("Bad lock mode"), /* adb_err.et:adb:OSA_ADB_BADLOCKMODE */ + N_("Cannot lock database"), /* adb_err.et:adb:OSA_ADB_CANTLOCK_DB */ + N_("Database not locked"), /* adb_err.et:adb:OSA_ADB_NOTLOCKED */ + N_("KADM5 administration database lock file missing"), /* adb_err.et:adb:OSA_ADB_NOLOCKFILE */ + N_("Insufficient permission to lock file"), /* adb_err.et:adb:OSA_ADB_NOEXCL_PERM */ + N_("Operation failed for unspecified reason"), /* kadm_err.et:ovk:KADM5_FAILURE */ + N_("Operation requires ``get'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_GET */ + N_("Operation requires ``add'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_ADD */ + N_("Operation requires ``modify'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_MODIFY */ + N_("Operation requires ``delete'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_DELETE */ + N_("Insufficient authorization for operation"), /* kadm_err.et:ovk:KADM5_AUTH_INSUFFICIENT */ + N_("Database inconsistency detected"), /* kadm_err.et:ovk:KADM5_BAD_DB */ + N_("Principal or policy already exists"), /* kadm_err.et:ovk:KADM5_DUP */ + N_("Communication failure with server"), /* kadm_err.et:ovk:KADM5_RPC_ERROR */ + N_("No administration server found for realm"), /* kadm_err.et:ovk:KADM5_NO_SRV */ + N_("Password history principal key version mismatch"), /* kadm_err.et:ovk:KADM5_BAD_HIST_KEY */ + N_("Connection to server not initialized"), /* kadm_err.et:ovk:KADM5_NOT_INIT */ + N_("Principal does not exist"), /* kadm_err.et:ovk:KADM5_UNK_PRINC */ + N_("Policy does not exist"), /* kadm_err.et:ovk:KADM5_UNK_POLICY */ + N_("Invalid field mask for operation"), /* kadm_err.et:ovk:KADM5_BAD_MASK */ + N_("Invalid number of character classes"), /* kadm_err.et:ovk:KADM5_BAD_CLASS */ + N_("Invalid password length"), /* kadm_err.et:ovk:KADM5_BAD_LENGTH */ + N_("Illegal policy name"), /* kadm_err.et:ovk:KADM5_BAD_POLICY */ + N_("Illegal principal name"), /* kadm_err.et:ovk:KADM5_BAD_PRINCIPAL */ + N_("Invalid auxillary attributes"), /* kadm_err.et:ovk:KADM5_BAD_AUX_ATTR */ + N_("Invalid password history count"), /* kadm_err.et:ovk:KADM5_BAD_HISTORY */ + N_("Password minimum life is greater than password maximum life"), /* kadm_err.et:ovk:KADM5_BAD_MIN_PASS_LIFE */ + N_("Password is too short"), /* kadm_err.et:ovk:KADM5_PASS_Q_TOOSHORT */ + N_("Password does not contain enough character classes"), /* kadm_err.et:ovk:KADM5_PASS_Q_CLASS */ + N_("Password is in the password dictionary"), /* kadm_err.et:ovk:KADM5_PASS_Q_DICT */ + N_("Cannot reuse password"), /* kadm_err.et:ovk:KADM5_PASS_REUSE */ + N_("Current password's minimum life has not expired"), /* kadm_err.et:ovk:KADM5_PASS_TOOSOON */ + N_("Policy is in use"), /* kadm_err.et:ovk:KADM5_POLICY_REF */ + N_("Connection to server already initialized"), /* kadm_err.et:ovk:KADM5_INIT */ + N_("Incorrect password"), /* kadm_err.et:ovk:KADM5_BAD_PASSWORD */ + N_("Cannot change protected principal"), /* kadm_err.et:ovk:KADM5_PROTECT_PRINCIPAL */ + N_("Programmer error! Bad Admin server handle"), /* kadm_err.et:ovk:KADM5_BAD_SERVER_HANDLE */ + N_("Programmer error! Bad API structure version"), /* kadm_err.et:ovk:KADM5_BAD_STRUCT_VERSION */ + N_("API structure version specified by application is no longer supported (to fix, recompile application against current KADM5 API header files and libraries)"), /* kadm_err.et:ovk:KADM5_OLD_STRUCT_VERSION */ + N_("API structure version specified by application is unknown to libraries (to fix, obtain current KADM5 API header files and libraries and recompile application)"), /* kadm_err.et:ovk:KADM5_NEW_STRUCT_VERSION */ + N_("Programmer error! Bad API version"), /* kadm_err.et:ovk:KADM5_BAD_API_VERSION */ + N_("API version specified by application is no longer supported by libraries (to fix, update application to adhere to current API version and recompile)"), /* kadm_err.et:ovk:KADM5_OLD_LIB_API_VERSION */ + N_("API version specified by application is no longer supported by server (to fix, update application to adhere to current API version and recompile)"), /* kadm_err.et:ovk:KADM5_OLD_SERVER_API_VERSION */ + N_("API version specified by application is unknown to libraries (to fix, obtain current KADM5 API header files and libraries and recompile application)"), /* kadm_err.et:ovk:KADM5_NEW_LIB_API_VERSION */ + N_("API version specified by application is unknown to server (to fix, obtain and install newest KADM5 Admin Server)"), /* kadm_err.et:ovk:KADM5_NEW_SERVER_API_VERSION */ + N_("Database error! Required KADM5 principal missing"), /* kadm_err.et:ovk:KADM5_SECURE_PRINC_MISSING */ + N_("The salt type of the specified principal does not support renaming"), /* kadm_err.et:ovk:KADM5_NO_RENAME_SALT */ + N_("Illegal configuration parameter for remote KADM5 client"), /* kadm_err.et:ovk:KADM5_BAD_CLIENT_PARAMS */ + N_("Illegal configuration parameter for local KADM5 client"), /* kadm_err.et:ovk:KADM5_BAD_SERVER_PARAMS */ + N_("Operation requires ``list'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_LIST */ + N_("Operation requires ``change-password'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_CHANGEPW */ + N_("GSS-API (or Kerberos) error"), /* kadm_err.et:ovk:KADM5_GSS_ERROR */ + N_("Programmer error! Illegal tagged data list type"), /* kadm_err.et:ovk:KADM5_BAD_TL_TYPE */ + N_("Required parameters in kdc.conf missing"), /* kadm_err.et:ovk:KADM5_MISSING_CONF_PARAMS */ + N_("Bad krb5 admin server hostname"), /* kadm_err.et:ovk:KADM5_BAD_SERVER_NAME */ + N_("Operation requires ``set-key'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_SETKEY */ + N_("Multiple values for single or folded enctype"), /* kadm_err.et:ovk:KADM5_SETKEY_DUP_ENCTYPES */ + N_("Invalid enctype for setv4key"), /* kadm_err.et:ovk:KADM5_SETV4KEY_INVAL_ENCTYPE */ + N_("Mismatched enctypes for setkey3"), /* kadm_err.et:ovk:KADM5_SETKEY3_ETYPE_MISMATCH */ + N_("Missing parameters in krb5.conf required for kadmin client"), /* kadm_err.et:ovk:KADM5_MISSING_KRB5_CONF_PARAMS */ + N_("while getting policy info."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_GET_POLICY_INFO */ + N_("while getting principal info."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_GET_PRINC_INFO */ + N_("New passwords do not match - password not changed.\n"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NEW_PASSWORD_MISMATCH */ + N_("New password"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NEW_PASSWORD_PROMPT */ + N_("New password (again)"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT */ + N_("You must type a password. Passwords must be at least one character long.\n"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NO_PASSWORD_READ */ + N_("yet no policy set! Contact your system security administrator."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NO_POLICY_YET_Q_ERROR */ + N_("Password changed.\n"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_CHANGED */ + N_("New password was found in a dictionary of possible passwords and\n\ +therefore may be easily guessed. Please choose another password.\n\ +See the ovpasswd man page for help in choosing a good password."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_IN_DICTIONARY */ + N_("Password not changed."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_NOT_CHANGED */ + N_("New password is too short.\n\ +Please choose a password which is at least %d characters long."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_TOO_SHORT */ + N_("New password does not have enough character classes.\n\ +The character classes are:\n\ + - lower-case letters,\n\ + - upper-case letters,\n\ + - digits,\n\ + - punctuation, and\n\ + - all other characters (e.g., control characters).\n\ +Please choose a password with at least %d character classes."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_TOO_FEW_CLASSES */ + N_("Password cannot be changed because it was changed too recently.\n\ +Please wait until %s before you change it.\n\ +If you need to change your password before then, contact your system\n\ +security administrator."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_TOO_SOON */ + N_("New password was used previously. Please choose a different password."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_REUSE */ + N_("while trying to change password."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_WHILE_TRYING_TO_CHANGE */ + N_("while reading new password."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_WHILE_READING_PASSWORD */ + N_("$Header: /cvs/gnome/krb5-auth-dialog/src/dummy-strings.c,v 1.2 2005/10/31 21:55:46 caillon Exp $"), /* kadm_err.et:kadm:KADM_RCSID */ + N_("Cannot fetch local realm"), /* kadm_err.et:kadm:KADM_NO_REALM */ + N_("Unable to fetch credentials"), /* kadm_err.et:kadm:KADM_NO_CRED */ + N_("Bad key supplied"), /* kadm_err.et:kadm:KADM_BAD_KEY */ + N_("Can't encrypt data"), /* kadm_err.et:kadm:KADM_NO_ENCRYPT */ + N_("Cannot encode/decode authentication info"), /* kadm_err.et:kadm:KADM_NO_AUTH */ + N_("Principal attemping change is in wrong realm"), /* kadm_err.et:kadm:KADM_WRONG_REALM */ + N_("Packet is too large"), /* kadm_err.et:kadm:KADM_NO_ROOM */ + N_("Version number is incorrect"), /* kadm_err.et:kadm:KADM_BAD_VER */ + N_("Checksum does not match"), /* kadm_err.et:kadm:KADM_BAD_CHK */ + N_("Unsealing private data failed"), /* kadm_err.et:kadm:KADM_NO_READ */ + N_("Unsupported operation"), /* kadm_err.et:kadm:KADM_NO_OPCODE */ + N_("Could not find administrating host"), /* kadm_err.et:kadm:KADM_NO_HOST */ + N_("Administrating host name is unknown"), /* kadm_err.et:kadm:KADM_UNK_HOST */ + N_("Could not find service name in services database"), /* kadm_err.et:kadm:KADM_NO_SERV */ + N_("Could not create socket"), /* kadm_err.et:kadm:KADM_NO_SOCK */ + N_("Could not connect to server"), /* kadm_err.et:kadm:KADM_NO_CONN */ + N_("Could not fetch local socket address"), /* kadm_err.et:kadm:KADM_NO_HERE */ + N_("Could not fetch master key"), /* kadm_err.et:kadm:KADM_NO_MAST */ + N_("Could not verify master key"), /* kadm_err.et:kadm:KADM_NO_VERI */ + N_("Entry already exists in database"), /* kadm_err.et:kadm:KADM_INUSE */ + N_("Database store error"), /* kadm_err.et:kadm:KADM_UK_SERROR */ + N_("Database read error"), /* kadm_err.et:kadm:KADM_UK_RERROR */ + N_("Insufficient access to perform requested operation"), /* kadm_err.et:kadm:KADM_UNAUTH */ + N_("Data is available for return to client"), /* kadm_err.et:kadm:KADM_DATA */ + N_("No such entry in the database"), /* kadm_err.et:kadm:KADM_NOENTRY */ + N_("Memory exhausted"), /* kadm_err.et:kadm:KADM_NOMEM */ + N_("Could not fetch system hostname"), /* kadm_err.et:kadm:KADM_NO_HOSTNAME */ + N_("Could not bind port"), /* kadm_err.et:kadm:KADM_NO_BIND */ + N_("Length mismatch problem"), /* kadm_err.et:kadm:KADM_LENGTH_ERROR */ + N_("Illegal use of wildcard"), /* kadm_err.et:kadm:KADM_ILL_WILDCARD */ + N_("Database locked or in use"), /* kadm_err.et:kadm:KADM_DB_INUSE */ + N_("Insecure password rejected"), /* kadm_err.et:kadm:KADM_INSECURE_PW */ + N_("Cleartext password and DES key did not match"), /* kadm_err.et:kadm:KADM_PW_MISMATCH */ + N_("Invalid principal for change srvtab request"), /* kadm_err.et:kadm:KADM_NOT_SERV_PRINC */ + N_("Realm name too long"), /* kadm_err.et:kadm:KADM_REALM_TOO_LONG */ + N_("Kerberos successful"), /* krb_err.et:krb:KRBET_KSUCCESS */ + N_("Kerberos principal expired"), /* krb_err.et:krb:KRBET_KDC_NAME_EXP */ + N_("Kerberos service expired"), /* krb_err.et:krb:KRBET_KDC_SERVICE_EXP */ + N_("Kerberos auth expired"), /* krb_err.et:krb:KRBET_KDC_AUTH_EXP */ + N_("Unknown kerberos protocol version"), /* krb_err.et:krb:KRBET_KDC_PKT_VER */ + N_("Incorrect kerberos master key version for principal"), /* krb_err.et:krb:KRBET_KDC_P_MKEY_VER */ + N_("Incorrect kerberos master key version for service"), /* krb_err.et:krb:KRBET_KDC_S_MKEY_VER */ + N_("Bad byte order (kerberos)"), /* krb_err.et:krb:KRBET_KDC_BYTE_ORDER */ + N_("Kerberos principal unknown"), /* krb_err.et:krb:KRBET_KDC_PR_UNKNOWN */ + N_("Kerberos principal not unique"), /* krb_err.et:krb:KRBET_KDC_PR_N_UNIQUE */ + N_("Kerberos principal has null key"), /* krb_err.et:krb:KRBET_KDC_NULL_KEY */ + N_("Reserved error message 11 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES11 */ + N_("Reserved error message 12 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES12 */ + N_("Reserved error message 13 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES13 */ + N_("Reserved error message 14 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES14 */ + N_("Reserved error message 15 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES15 */ + N_("Reserved error message 16 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES16 */ + N_("Reserved error message 17 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES17 */ + N_("Reserved error message 18 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES18 */ + N_("Reserved error message 19 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES19 */ + N_("Generic error from Kerberos KDC"), /* krb_err.et:krb:KRBET_KDC_GEN_ERR */ + N_("Can't read Kerberos ticket file"), /* krb_err.et:krb:KRBET_GC_TKFIL */ + N_("Can't find Kerberos ticket or TGT"), /* krb_err.et:krb:KRBET_GC_NOTKT */ + N_("Reserved error message 23 (krb_get_cred)"), /* krb_err.et:krb:KRBET_KRB_RES23 */ + N_("Reserved error message 24 (krb_get_cred)"), /* krb_err.et:krb:KRBET_KRB_RES24 */ + N_("Reserved error message 25 (krb_get_cred)"), /* krb_err.et:krb:KRBET_KRB_RES25 */ + N_("Kerberos TGT Expired"), /* krb_err.et:krb:KRBET_MK_AP_TGTEXP */ + N_("Reserved error message 27 (krb_mk_req)"), /* krb_err.et:krb:KRBET_KRB_RES27 */ + N_("Reserved error message 28 (krb_mk_req)"), /* krb_err.et:krb:KRBET_KRB_RES28 */ + N_("Reserved error message 29 (krb_mk_req)"), /* krb_err.et:krb:KRBET_KRB_RES29 */ + N_("Reserved error message 30 (krb_mk_req)"), /* krb_err.et:krb:KRBET_KRB_RES30 */ + N_("Can't decode authenticator (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_UNDEC */ + N_("Kerberos ticket expired (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_EXP */ + N_("Kerberos ticket not yet valid (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_NYV */ + N_("Repeated request (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_REPEAT */ + N_("Kerberos ticket is for wrong server (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_NOT_US */ + N_("Kerberos request inconsistent"), /* krb_err.et:krb:KRBET_RD_AP_INCON */ + N_("Time is out of bounds (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_TIME */ + N_("Incorrect net address (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_BADD */ + N_("Kerberos protocol version mismatch (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_VERSION */ + N_("Invalid msg type (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_MSG_TYPE */ + N_("Message integrity error (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_MODIFIED */ + N_("Message out of order (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_ORDER */ + N_("Unauthorized request (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_UNAUTHOR */ + N_("Current password is null (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_NULL */ + N_("Incorrect current password (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_BADPW */ + N_("Protocol error (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_PROT */ + N_("Error returned by KDC (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_KDCERR */ + N_("Null Kerberos ticket returned by KDC (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_NULLTKT */ + N_("Retry count exceeded (send_to_kdc)"), /* krb_err.et:krb:KRBET_SKDC_RETRY */ + N_("Can't send request (send_to_kdc)"), /* krb_err.et:krb:KRBET_SKDC_CANT */ + N_("Reserved error message 58 (send_to_kdc)"), /* krb_err.et:krb:KRBET_KRB_RES58 */ + N_("Reserved error message 59 (send_to_kdc)"), /* krb_err.et:krb:KRBET_KRB_RES59 */ + N_("Reserved error message 60 (send_to_kdc)"), /* krb_err.et:krb:KRBET_KRB_RES60 */ + N_("Kerberos error: not all tickets returned"), /* krb_err.et:krb:KRBET_INTK_W_NOTALL */ + N_("Incorrect password (get_in_tkt)"), /* krb_err.et:krb:KRBET_INTK_BADPW */ + N_("Protocol error (get_in_tkt)"), /* krb_err.et:krb:KRBET_INTK_PROT */ + N_("Other error (get_in_tkt)"), /* krb_err.et:krb:KRBET_INTK_ERR */ + N_("Don't have Kerberos ticket-granting ticket (get_ad_tkt)"), /* krb_err.et:krb:KRBET_AD_NOTGT */ + N_("You have no tickets cached"), /* krb_err.et:krb:KRBET_NO_TKT_FIL */ + N_("Couldn't access ticket file (tf_util)"), /* krb_err.et:krb:KRBET_TKT_FIL_ACC */ + N_("Couldn't lock ticket file (tf_util)"), /* krb_err.et:krb:KRBET_TKT_FIL_LCK */ + N_("Bad ticket file format (tf_util)"), /* krb_err.et:krb:KRBET_TKT_FIL_FMT */ + N_("tf_init not called before reading from ticket file (tf_util)"), /* krb_err.et:krb:KRBET_TKT_FIL_INI */ + N_("Bad Kerberos name format (kname_parse)"), /* krb_err.et:krb:KRBET_KNAME_FMT */ + N_("Generic kerberos error (kfailure)"), /* krb_err.et:krb:KRBET_KFAILURE */ + N_("Principal in credential cache does not match desired name"), /* gssapi_err_krb5.et:k5g:KG_CCACHE_NOMATCH */ + N_("No principal in keytab matches desired name"), /* gssapi_err_krb5.et:k5g:KG_KEYTAB_NOMATCH */ + N_("Credential cache has no TGT"), /* gssapi_err_krb5.et:k5g:KG_TGT_MISSING */ + N_("Authenticator has no subkey"), /* gssapi_err_krb5.et:k5g:KG_NO_SUBKEY */ + N_("Context is already fully established"), /* gssapi_err_krb5.et:k5g:KG_CONTEXT_ESTABLISHED */ + N_("Unknown signature type in token"), /* gssapi_err_krb5.et:k5g:KG_BAD_SIGN_TYPE */ + N_("Invalid field length in token"), /* gssapi_err_krb5.et:k5g:KG_BAD_LENGTH */ + N_("Attempt to use incomplete security context"), /* gssapi_err_krb5.et:k5g:KG_CTX_INCOMPLETE */ + N_("Bad magic number for krb5_gss_ctx_id_t"), /* gssapi_err_krb5.et:k5g:KG_CONTEXT */ + N_("Bad magic number for krb5_gss_cred_id_t"), /* gssapi_err_krb5.et:k5g:KG_CRED */ + N_("Bad magic number for krb5_gss_enc_desc"), /* gssapi_err_krb5.et:k5g:KG_ENC_DESC */ + N_("Sequence number in token is corrupt"), /* gssapi_err_krb5.et:k5g:KG_BAD_SEQ */ + N_("Credential cache is empty"), /* gssapi_err_krb5.et:k5g:KG_EMPTY_CCACHE */ + N_("Acceptor and Initiator share no checksum types"), /* gssapi_err_krb5.et:k5g:KG_NO_CTYPES */ + N_("No @ in SERVICE-NAME name string"), /* gssapi_err_generic.et:ggss:G_BAD_SERVICE_NAME */ + N_("STRING-UID-NAME contains nondigits"), /* gssapi_err_generic.et:ggss:G_BAD_STRING_UID */ + N_("UID does not resolve to username"), /* gssapi_err_generic.et:ggss:G_NOUSER */ + N_("Validation error"), /* gssapi_err_generic.et:ggss:G_VALIDATE_FAILED */ + N_("Couldn't allocate gss_buffer_t data"), /* gssapi_err_generic.et:ggss:G_BUFFER_ALLOC */ + N_("Message context invalid"), /* gssapi_err_generic.et:ggss:G_BAD_MSG_CTX */ + N_("Buffer is the wrong size"), /* gssapi_err_generic.et:ggss:G_WRONG_SIZE */ + N_("Credential usage type is unknown"), /* gssapi_err_generic.et:ggss:G_BAD_USAGE */ + N_("Unknown quality of protection specified"), /* gssapi_err_generic.et:ggss:G_UNKNOWN_QOP */ + N_("Local host name could not be determined"), /* gssapi_err_generic.et:ggss:G_NO_HOSTNAME */ + N_("Hostname in SERVICE-NAME string could not be canonicalized"), /* gssapi_err_generic.et:ggss:G_BAD_HOSTNAME */ + N_("Mechanism is incorrect"), /* gssapi_err_generic.et:ggss:G_WRONG_MECH */ + N_("Token header is malformed or corrupt"), /* gssapi_err_generic.et:ggss:G_BAD_TOK_HEADER */ + N_("Packet was replayed in wrong direction"), /* gssapi_err_generic.et:ggss:G_BAD_DIRECTION */ + N_("Token is missing data"), /* gssapi_err_generic.et:ggss:G_TOK_TRUNC */ + N_("Token was reflected"), /* gssapi_err_generic.et:ggss:G_REFLECT */ + N_("Received token ID does not match expected token ID"), /* gssapi_err_generic.et:ggss:G_WRONG_TOKID */ + NULL +}; diff --git a/src/krb5-auth-dialog.1.in b/src/krb5-auth-dialog.1.in new file mode 100644 index 0000000..7f83138 --- /dev/null +++ b/src/krb5-auth-dialog.1.in @@ -0,0 +1,37 @@ +.TH krb5-auth-dialog 2005/11/02 "GNOME" "System Administrator's Manual" + +.SH NAME +krb5-auth-dialog \- Kerberos 5 credential checking + +.SH SYNOPSIS +.B krb5-auth-dialog [--always|--auto] + +.SH DESCRIPTION +The krb5-auth-dialog application will periodically check (every +@check_interval@ seconds) if the user has Kerberos credentials, and if so, if +they will expire soon (in less than @minimum_lifetime@ minutes). If it +determines that this is the case, krb5-auth-dialog will attempt to obtain fresh +credentials, prompting the user for whatever information is necessary. + +.SH ARGUMENTS + +.IP --always +By default, krb5-auth-dialog will exit if it finds that the user has no +Kerberos credentials. If this option is specified, then it will instead +attempt to get credentials. + +.IP --auto +Overrides the --always option, restoring the default behavior. + +.SH "SEE ALSO" +.BR krb5.conf (5) + +.SH BUGS +Probably, but let's hope not. If you find any, please file them in the +bug database at http://bugzilla.gnome.org/ against the +"krb5-auth-dialog" component. + +.SH AUTHORS +Christopher Aillon <caillon@redhat.com> +.br +Jonathan Blandford <jrb@redhat.com> diff --git a/src/krb5-auth-dialog.c b/src/krb5-auth-dialog.c new file mode 100644 index 0000000..81f4f38 --- /dev/null +++ b/src/krb5-auth-dialog.c @@ -0,0 +1,592 @@ +/* + * Copyright (C) 2004,2005 Red Hat, Inc. + * Authored by Christopher Aillon <caillon@redhat.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <gtk/gtk.h> +#include <glade/glade.h> +#include <gnome.h> +#include <stdlib.h> +#include <time.h> +#include <krb5.h> +#include <stdio.h> +#include <sys/wait.h> +#include <string.h> + + +#ifdef ENABLE_NETWORK_MANAGER +#include <libnm_glib.h> +#endif + +static GladeXML *xml = NULL; +static krb5_context kcontext; +static krb5_principal kprincipal; +static gboolean invalid_password; +static gboolean always_run; +static gint creds_expiry; + +static int renew_credentials (); +static gboolean get_tgt_from_ccache (krb5_context context, krb5_creds *creds); + +static gchar* minutes_to_expiry_text (int minutes) +{ + gchar *expiry_text; + gchar *tmp; + + if (minutes > 0) + expiry_text = g_strdup_printf (ngettext("Your credentials expire in %d minute", + "Your credentials expire in %d minutes", + minutes), + minutes); + else + { + expiry_text = g_strdup (_("Your credentials have expired")); + tmp = g_strdup_printf ("<span foreground=\"red\">%s</span>", expiry_text); + g_free (expiry_text); + expiry_text = tmp; + } + + return expiry_text; +} + +static gboolean +krb5_auth_dialog_wrong_label_update_expiry (gpointer data) +{ + GtkWidget *label = GTK_WIDGET(data); + int minutes_left; + gchar *expiry_text; + gchar *expiry_markup; + + g_return_val_if_fail (label != NULL, FALSE); + + minutes_left = (creds_expiry - time(0)) / 60; + + expiry_text = minutes_to_expiry_text (minutes_left); + + expiry_markup = g_strdup_printf ("<span size=\"smaller\" style=\"italic\">%s</span>", expiry_text); + gtk_label_set_markup (GTK_LABEL (label), expiry_markup); + g_free (expiry_text); + g_free (expiry_markup); + + return TRUE; +} + +static void +krb5_auth_dialog_setup (GtkWidget *dialog, + const gchar *krb5prompt, + gboolean hide_password) +{ + GtkWidget *entry; + GtkWidget *label; + GtkWidget *wrong_label; + gchar *wrong_text; + gchar *wrong_markup; + gchar *prompt; + int pw4len; + + if (krb5prompt == NULL) + prompt = g_strdup (_("Please enter your Kerberos password.")); + else + { + /* Kerberos's prompts are a mess, and basically impossible to + * translate. There's basically no way short of doing a lot of + * string parsing to translate them. The most common prompt is + * "Password for $uid:". We special case that one at least. We + * cannot do any of the fancier strings (like challenges), + * though. */ + pw4len = strlen ("Password for "); + if (strncmp (krb5prompt, "Password for ", pw4len) == 0) + { + gchar *uid = (gchar *) (krb5prompt + pw4len); + prompt = g_strdup_printf (_("Please enter the password for '%s'"), uid); + } + else + prompt = g_strdup (krb5prompt); + } + + /* Clear the password entry field */ + entry = glade_xml_get_widget (xml, "krb5_entry"); + gtk_entry_set_text (GTK_ENTRY (entry), ""); + gtk_entry_set_visibility (GTK_ENTRY (entry), !hide_password); + + /* Use the prompt label that krb5 provides us */ + label = glade_xml_get_widget (xml, "krb5_message_label"); + gtk_label_set_text (GTK_LABEL (label), prompt); + + /* Add our extra message hints, if any */ + wrong_label = glade_xml_get_widget (xml, "krb5_wrong_label"); + wrong_text = NULL; + + if (wrong_label) + { + if (invalid_password) + wrong_text = g_strdup (_("The password you entered is invalid")); + else + { + int minutes_left = (creds_expiry - time(0)) / 60; + + wrong_text = minutes_to_expiry_text (minutes_left); + } + } + + if (wrong_text) + { + wrong_markup = g_strdup_printf ("<span size=\"smaller\" style=\"italic\">%s</span>", wrong_text); + gtk_label_set_markup (GTK_LABEL (wrong_label), wrong_markup); + g_free(wrong_text); + g_free(wrong_markup); + } + else + gtk_label_set_text (GTK_LABEL (wrong_label), ""); + + g_free (prompt); +} + +static krb5_error_code +krb5_gtk_prompter (krb5_context ctx, + void *data, + const char *name, + const char *banner, + int num_prompts, + krb5_prompt prompts[]) +{ + GtkWidget *dialog; + GtkWidget *wrong_label; + krb5_error_code errcode; + int i; + + errcode = KRB5_LIBOS_CANTREADPWD; + + dialog = glade_xml_get_widget (xml, "krb5_dialog"); + + for (i = 0; i < num_prompts; i++) + { + const gchar *password = NULL; + int password_len = 0; + int response; + guint32 source_id = 0; + + GtkWidget *entry; + + errcode = KRB5_LIBOS_CANTREADPWD; + + entry = glade_xml_get_widget(xml, "krb5_entry"); + krb5_auth_dialog_setup (dialog, (gchar *) prompts[i].prompt, prompts[i].hidden); + + wrong_label = glade_xml_get_widget (xml, "krb5_wrong_label"); + source_id = g_timeout_add (5000, (GSourceFunc)krb5_auth_dialog_wrong_label_update_expiry, + wrong_label); + + response = gtk_dialog_run (GTK_DIALOG (dialog)); + switch (response) + { + case GTK_RESPONSE_OK: + password = gtk_entry_get_text (GTK_ENTRY (entry)); + password_len = strlen (password); + errcode = 0; + break; + case GTK_RESPONSE_CANCEL: + case GTK_RESPONSE_DELETE_EVENT: + break; + default: + g_assert_not_reached (); + } + + g_source_remove (source_id); + + prompts[i].reply->data = (char *) password; + prompts[i].reply->length = password_len; + } + + /* Reset this, so we know the next time we get a TRUE value, it is accurate. */ + gtk_widget_hide (dialog); + invalid_password = FALSE; + + return errcode; +} + +static gboolean is_online = TRUE; + +#ifdef ENABLE_NETWORK_MANAGER +static void +network_state_cb (libnm_glib_ctx *context, + gpointer data) +{ + gboolean *online = (gboolean*) data; + + libnm_glib_state state; + + state = libnm_glib_get_network_state (context); + + switch (state) + { + case LIBNM_NO_DBUS: + case LIBNM_NO_NETWORKMANAGER: + case LIBNM_INVALID_CONTEXT: + /* do nothing */ + break; + case LIBNM_NO_NETWORK_CONNECTION: + *online = FALSE; + break; + case LIBNM_ACTIVE_NETWORK_CONNECTION: + *online = TRUE; + break; + } +} +#endif + +static gboolean +credentials_expiring_real (void) +{ + krb5_creds my_creds; + gboolean retval = FALSE; + + if (!get_tgt_from_ccache (kcontext, &my_creds)) { + creds_expiry = 0; + return TRUE; + } + + if (krb5_principal_compare (kcontext, my_creds.client, kprincipal)) { + krb5_free_principal(kcontext, kprincipal); + krb5_copy_principal(kcontext, my_creds.client, &kprincipal); + } + creds_expiry = my_creds.times.endtime; + if (time(NULL) + MINUTES_BEFORE_PROMPTING * 60 > my_creds.times.endtime) + retval = TRUE; + + krb5_free_cred_contents(kcontext, &my_creds); + + return retval; +} + +static gboolean +credentials_expiring (gpointer *data) +{ + if (credentials_expiring_real () && is_online) + renew_credentials (); + + return TRUE; +} + +#if defined(HAVE_KRB5_CREDS_TICKET_FLAGS) && defined(TKT_FLG_FORWARDABLE) +static int +get_cred_forwardable(krb5_creds *creds) +{ + return creds->ticket_flags & TKT_FLG_FORWARDABLE; +} +#elif defined(HAVE_KRB5_CREDS_FLAGS_B_FORWARDABLE) +static int +get_cred_forwardable(krb5_creds *creds) +{ + return creds->flags.b.forwardable; +} +#elif defined(HAVE_KRB5_CREDS_FLAGS) && defined(KDC_OPT_FORWARDABLE) +static int +get_cred_forwardable(krb5_creds *creds) +{ + return creds->flags & KDC_OPT_FORWARDABLE; +} +#endif + +#if defined(HAVE_KRB5_CREDS_TICKET_FLAGS) && defined(TKT_FLG_RENEWABLE) +static int +get_cred_renewable(krb5_creds *creds) +{ + return creds->ticket_flags & TKT_FLG_RENEWABLE; +} +#elif defined(HAVE_KRB5_CREDS_FLAGS_B_RENEWABLE) +static int +get_cred_renewable(krb5_creds *creds) +{ + return creds->flags.b.renewable; +} +#elif defined(HAVE_KRB5_CREDS_FLAGS) && defined(KDC_OPT_RENEWABLE) +static int +get_cred_renewable(krb5_creds *creds) +{ + return creds->flags & KDC_OPT_RENEWABLE; +} +#endif + +#if defined(HAVE_KRB5_CREDS_TICKET_FLAGS) && defined(TKT_FLG_PROXIABLE) +static int +get_cred_proxiable(krb5_creds *creds) +{ + return creds->ticket_flags & TKT_FLG_PROXIABLE; +} +#elif defined(HAVE_KRB5_CREDS_FLAGS_B_PROXIABLE) +static int +get_cred_proxiable(krb5_creds *creds) +{ + return creds->flags.b.proxiable; +} +#elif defined(HAVE_KRB5_CREDS_FLAGS) && defined(KDC_OPT_PROXIABLE) +static int +get_cred_proxiable(krb5_creds *creds) +{ + return creds->flags & KDC_OPT_PROXIABLE; +} +#endif + +static void +set_options_using_creds(krb5_context context, + krb5_creds *creds, + krb5_get_init_creds_opt *opts) +{ + krb5_deltat renew_lifetime; + int flag; + + flag = get_cred_forwardable(creds) != 0; + krb5_get_init_creds_opt_set_forwardable(opts, flag); + flag = get_cred_proxiable(creds) != 0; + krb5_get_init_creds_opt_set_proxiable(opts, flag); + flag = get_cred_renewable(creds) != 0; + if (flag && (creds->times.renew_till > creds->times.starttime)) { + renew_lifetime = creds->times.renew_till - + creds->times.starttime; + krb5_get_init_creds_opt_set_renew_life(opts, + renew_lifetime); + } + if (creds->times.endtime > + creds->times.starttime + MINUTES_BEFORE_PROMPTING * 60) { + krb5_get_init_creds_opt_set_tkt_life(opts, + creds->times.endtime - + creds->times.starttime); + } + /* This doesn't do a deep copy -- fix it later. */ + /* krb5_get_init_creds_opt_set_address_list(opts, creds->addresses); */ +} + +static int +renew_credentials (void) +{ + krb5_error_code retval; + krb5_creds my_creds; + krb5_ccache ccache; + krb5_get_init_creds_opt opts; + + if (kprincipal == NULL) { + retval = krb5_parse_name(kcontext, g_get_user_name (), + &kprincipal); + if (retval) { + return retval; + } + } + + krb5_get_init_creds_opt_init(&opts); + if (get_tgt_from_ccache (kcontext, &my_creds)) + { + set_options_using_creds(kcontext, &my_creds, &opts); + creds_expiry = my_creds.times.endtime; + krb5_free_cred_contents(kcontext, &my_creds); + } else { + creds_expiry = 0; + } + + retval = krb5_get_init_creds_password(kcontext, &my_creds, kprincipal, + NULL, krb5_gtk_prompter, 0, + 0, NULL, &opts); + if (retval) + { + switch (retval) { + case KRB5KDC_ERR_PREAUTH_FAILED: + case KRB5KRB_AP_ERR_BAD_INTEGRITY: + /* Invalid password, try again. */ + invalid_password = TRUE; + return renew_credentials(); + default: + break; + } + return retval; + } + + retval = krb5_cc_default(kcontext, &ccache); + if (retval) + return retval; + + retval = krb5_cc_initialize(kcontext, ccache, kprincipal); + if (retval) + goto out; + + retval = krb5_cc_store_cred(kcontext, ccache, &my_creds); + if (retval) + goto out; + + creds_expiry = my_creds.times.endtime; + +out: + krb5_cc_close (kcontext, ccache); + + return retval; +} + +#if defined(HAVE_KRB5_PRINCIPAL_REALM_AS_STRING) +static size_t +get_principal_realm_length(krb5_principal p) +{ + return strlen(p->realm); +} +static const char * +get_principal_realm_data(krb5_principal p) +{ + return p->realm; +} +#elif defined(HAVE_KRB5_PRINCIPAL_REALM_AS_DATA) +static size_t +get_principal_realm_length(krb5_principal p) +{ + return p->realm.length; +} +static const char * +get_principal_realm_data(krb5_principal p) +{ + return p->realm.data; +} +#endif + +static gboolean +get_tgt_from_ccache (krb5_context context, krb5_creds *creds) +{ + krb5_ccache ccache; + krb5_creds mcreds; + krb5_principal principal, tgt_principal; + gboolean ret; + + memset(&ccache, 0, sizeof(ccache)); + ret = FALSE; + if (krb5_cc_default(context, &ccache) == 0) + { + memset(&principal, 0, sizeof(principal)); + if (krb5_cc_get_principal(context, ccache, &principal) == 0) + { + memset(&tgt_principal, 0, sizeof(tgt_principal)); + if (krb5_build_principal_ext(context, &tgt_principal, + get_principal_realm_length(principal), + get_principal_realm_data(principal), + KRB5_TGS_NAME_SIZE, + KRB5_TGS_NAME, + get_principal_realm_length(principal), + get_principal_realm_data(principal), + 0) == 0) { + memset(creds, 0, sizeof(*creds)); + memset(&mcreds, 0, sizeof(mcreds)); + mcreds.client = principal; + mcreds.server = tgt_principal; + if (krb5_cc_retrieve_cred(context, ccache, + 0, + &mcreds, + creds) == 0) + { + ret = TRUE; + } else { + memset(creds, 0, sizeof(*creds)); + } + krb5_free_principal(context, tgt_principal); + } + krb5_free_principal(context, principal); + } + krb5_cc_close(context, ccache); + } + return ret; +} + +static gboolean +using_krb5() +{ + krb5_error_code err; + gboolean have_tgt = FALSE; + krb5_creds creds; + + err = krb5_init_context(&kcontext); + if (err) + return TRUE; + + have_tgt = get_tgt_from_ccache(kcontext, &creds); + if (have_tgt) { + krb5_copy_principal(kcontext, creds.client, &kprincipal); + krb5_free_cred_contents (kcontext, &creds); + } + + return have_tgt; +} + +int +main (int argc, char *argv[]) +{ + GtkWidget *dialog; + GnomeClient *client; + int run_auto = 0, run_always = 0; + struct poptOption options[] = { + {"auto", 'a', 0, &run_auto, 0, + "Only run if an initialized ccache is found (default)", NULL}, + {"always", 'A', 0, &run_always, 0, + "Always run", NULL}, + {NULL}, + }; + +#ifdef ENABLE_NETWORK_MANAGER + libnm_glib_ctx *nm_context; + guint32 nm_callback_id; +#endif + + gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE, + argc, argv, GNOME_PARAM_POPT_TABLE, options, + GNOME_PARAM_NONE); + + client = gnome_master_client (); + gnome_client_set_restart_style (client, GNOME_RESTART_ANYWAY); + + if (run_always && !run_auto) + always_run++; + if (using_krb5 () || always_run) + { + g_signal_connect (G_OBJECT (client), "die", + G_CALLBACK (gtk_main_quit), NULL); + + g_set_application_name (_("Network Authentication")); + +#ifdef ENABLE_NETWORK_MANAGER + nm_context = libnm_glib_init (); + if (!nm_context) + g_warning ("Could not initialize libnm_glib"); + else + { + nm_callback_id = libnm_glib_register_callback (nm_context, network_state_cb, &is_online, NULL); + if (nm_callback_id == 0) + { + libnm_glib_shutdown (nm_context); + nm_context = NULL; + + g_warning ("Could not connect to NetworkManager, connection status will not be managed!"); + } + } +#endif /* ENABLE_NETWORK_MANAGER */ + + xml = glade_xml_new (GLADEDIR "krb5-auth-dialog.glade", NULL, NULL); + dialog = glade_xml_get_widget (xml, "krb5_dialog"); + + if (credentials_expiring (NULL)) + g_timeout_add (CREDENTIAL_CHECK_INTERVAL * 1000, (GSourceFunc)credentials_expiring, NULL); + + gtk_main (); + } + + return 0; +} diff --git a/src/krb5-auth-dialog.desktop.in b/src/krb5-auth-dialog.desktop.in new file mode 100644 index 0000000..223aaf9 --- /dev/null +++ b/src/krb5-auth-dialog.desktop.in @@ -0,0 +1,9 @@ +[Desktop Entry] +_Name=Network Authentication +_Comments=Kerberos Network Authentication Dialog +Exec=krb5-auth-dialog +Encoding=UTF-8 +Exec=krb5-auth-dialog +Terminal=false +Type=Application + diff --git a/src/krb5-auth-dialog.glade b/src/krb5-auth-dialog.glade new file mode 100644 index 0000000..ef4ff7c --- /dev/null +++ b/src/krb5-auth-dialog.glade @@ -0,0 +1,252 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> +<requires lib="gnome"/> + +<widget class="GtkDialog" id="krb5_dialog"> + <property name="border_width">6</property> + <property name="visible">False</property> + <property name="title" translatable="yes">Network Authentication</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="cancelbutton1"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="krb5_renew_button"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Renew Ticket</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-authentication</property> + <property name="icon_size">6</property> + <property name="xalign">0.5</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkAlignment" id="alignment4"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + <property name="top_padding">0</property> + <property name="bottom_padding">10</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="krb5_message_label"> + <property name="width_request">333</property> + <property name="visible">True</property> + <property name="label" translatable="no"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">3</property> + + <child> + <widget class="GtkHBox" id="hbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">3</property> + + <child> + <widget class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Password:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">krb5_entry</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="krb5_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">False</property> + <property name="max_length">0</property> + <property name="text" translatable="no"></property> + <property name="has_frame">True</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="krb5_wrong_label"> + <property name="visible">True</property> + <property name="label" translatable="no"><span size="smaller"> </span></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> |