xref: /onnv-gate/usr/src/grub/grub-0.97/util/grub-md5-crypt.in (revision 8044:b3af80bbf173)
1*8044SWilliam.Kucharski@Sun.COM#! /bin/sh
2*8044SWilliam.Kucharski@Sun.COM
3*8044SWilliam.Kucharski@Sun.COM# Encrypt a password in MD5 format
4*8044SWilliam.Kucharski@Sun.COM#   Copyright (C) 2000,2002 Free Software Foundation, Inc.
5*8044SWilliam.Kucharski@Sun.COM#
6*8044SWilliam.Kucharski@Sun.COM# This file is free software; you can redistribute it and/or modify it
7*8044SWilliam.Kucharski@Sun.COM# under the terms of the GNU General Public License as published by
8*8044SWilliam.Kucharski@Sun.COM# the Free Software Foundation; either version 2 of the License, or
9*8044SWilliam.Kucharski@Sun.COM# (at your option) any later version.
10*8044SWilliam.Kucharski@Sun.COM#
11*8044SWilliam.Kucharski@Sun.COM# This program is distributed in the hope that it will be useful, but
12*8044SWilliam.Kucharski@Sun.COM# WITHOUT ANY WARRANTY; without even the implied warranty of
13*8044SWilliam.Kucharski@Sun.COM# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14*8044SWilliam.Kucharski@Sun.COM# General Public License for more details.
15*8044SWilliam.Kucharski@Sun.COM#
16*8044SWilliam.Kucharski@Sun.COM# You should have received a copy of the GNU General Public License
17*8044SWilliam.Kucharski@Sun.COM# along with this program; if not, write to the Free Software
18*8044SWilliam.Kucharski@Sun.COM# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19*8044SWilliam.Kucharski@Sun.COM
20*8044SWilliam.Kucharski@Sun.COM# Replaced by the configure script.
21*8044SWilliam.Kucharski@Sun.COMprefix=@prefix@
22*8044SWilliam.Kucharski@Sun.COMexec_prefix=@exec_prefix@
23*8044SWilliam.Kucharski@Sun.COMsbindir=@sbindir@
24*8044SWilliam.Kucharski@Sun.COM
25*8044SWilliam.Kucharski@Sun.COM# Initialize some variables.
26*8044SWilliam.Kucharski@Sun.COMgrub_shell=${sbindir}/grub
27*8044SWilliam.Kucharski@Sun.COMprogname="grub-md5-crypt"
28*8044SWilliam.Kucharski@Sun.COM
29*8044SWilliam.Kucharski@Sun.COM# Check the arguments.
30*8044SWilliam.Kucharski@Sun.COMfor option in "$@"; do
31*8044SWilliam.Kucharski@Sun.COM    case "$option" in
32*8044SWilliam.Kucharski@Sun.COM    -h | --help)
33*8044SWilliam.Kucharski@Sun.COM	cat <<EOF
34*8044SWilliam.Kucharski@Sun.COMUsage: $progname [OPTION]
35*8044SWilliam.Kucharski@Sun.COMEncrypt a password in MD5 format.
36*8044SWilliam.Kucharski@Sun.COM
37*8044SWilliam.Kucharski@Sun.COM  -h, --help              print this message and exit
38*8044SWilliam.Kucharski@Sun.COM  -v, --version           print the version information and exit
39*8044SWilliam.Kucharski@Sun.COM  --grub-shell=FILE       use FILE as the grub shell
40*8044SWilliam.Kucharski@Sun.COM
41*8044SWilliam.Kucharski@Sun.COMReport bugs to <bug-grub@gnu.org>.
42*8044SWilliam.Kucharski@Sun.COMEOF
43*8044SWilliam.Kucharski@Sun.COM	exit 0
44*8044SWilliam.Kucharski@Sun.COM	;;
45*8044SWilliam.Kucharski@Sun.COM
46*8044SWilliam.Kucharski@Sun.COM    -v | --version)
47*8044SWilliam.Kucharski@Sun.COM	echo "$progname (GNU GRUB ${VERSION})"
48*8044SWilliam.Kucharski@Sun.COM	exit 0
49*8044SWilliam.Kucharski@Sun.COM	;;
50*8044SWilliam.Kucharski@Sun.COM
51*8044SWilliam.Kucharski@Sun.COM    --grub-shell=*)
52*8044SWilliam.Kucharski@Sun.COM	grub_shell=`echo "$option" | sed 's/--grub-shell=//'`
53*8044SWilliam.Kucharski@Sun.COM	;;
54*8044SWilliam.Kucharski@Sun.COM
55*8044SWilliam.Kucharski@Sun.COM    *)
56*8044SWilliam.Kucharski@Sun.COM	echo "$progname: unrecognized option \`$option'"
57*8044SWilliam.Kucharski@Sun.COM	echo "Usage: $progname [OPTION]"
58*8044SWilliam.Kucharski@Sun.COM	echo "Try \`$progname --help' for more information."
59*8044SWilliam.Kucharski@Sun.COM	exit 1
60*8044SWilliam.Kucharski@Sun.COM	;;
61*8044SWilliam.Kucharski@Sun.COM    esac
62*8044SWilliam.Kucharski@Sun.COMdone
63*8044SWilliam.Kucharski@Sun.COM
64*8044SWilliam.Kucharski@Sun.COM# Suppress echo backs. I don't know if this is really portable. -okuji
65*8044SWilliam.Kucharski@Sun.COMstty -echo
66*8044SWilliam.Kucharski@Sun.COM
67*8044SWilliam.Kucharski@Sun.COM# Prompt to enter a password.
68*8044SWilliam.Kucharski@Sun.COMecho -n "Password: "
69*8044SWilliam.Kucharski@Sun.COMread -r password
70*8044SWilliam.Kucharski@Sun.COMecho
71*8044SWilliam.Kucharski@Sun.COM
72*8044SWilliam.Kucharski@Sun.COM# One more time.
73*8044SWilliam.Kucharski@Sun.COMecho -n "Retype password: "
74*8044SWilliam.Kucharski@Sun.COMread -r password2
75*8044SWilliam.Kucharski@Sun.COMecho
76*8044SWilliam.Kucharski@Sun.COM
77*8044SWilliam.Kucharski@Sun.COM# Resume echo backs.
78*8044SWilliam.Kucharski@Sun.COMstty echo
79*8044SWilliam.Kucharski@Sun.COM
80*8044SWilliam.Kucharski@Sun.COMif test "x$password" = x; then
81*8044SWilliam.Kucharski@Sun.COM    echo "Empty password is not permitted."
82*8044SWilliam.Kucharski@Sun.COM    exit 1
83*8044SWilliam.Kucharski@Sun.COMfi
84*8044SWilliam.Kucharski@Sun.COM
85*8044SWilliam.Kucharski@Sun.COMif test "x$password" != "x$password2"; then
86*8044SWilliam.Kucharski@Sun.COM    echo "Sorry, passwords do not match."
87*8044SWilliam.Kucharski@Sun.COM    exit 1
88*8044SWilliam.Kucharski@Sun.COMfi
89*8044SWilliam.Kucharski@Sun.COM
90*8044SWilliam.Kucharski@Sun.COM# Run the grub shell.
91*8044SWilliam.Kucharski@Sun.COM$grub_shell --batch --device-map=/dev/null <<EOF \
92*8044SWilliam.Kucharski@Sun.COM    | grep "^Encrypted: " | sed 's/^Encrypted: //'
93*8044SWilliam.Kucharski@Sun.COMmd5crypt
94*8044SWilliam.Kucharski@Sun.COM$password
95*8044SWilliam.Kucharski@Sun.COMquit
96*8044SWilliam.Kucharski@Sun.COMEOF
97*8044SWilliam.Kucharski@Sun.COM
98*8044SWilliam.Kucharski@Sun.COM# Bye.
99*8044SWilliam.Kucharski@Sun.COMexit 0
100