checksum revision 219903
1104349Sphk#!/bin/sh
2104349Sphk#-
3104349Sphk# Copyright (c) 2011 Nathan Whitehorn
4104349Sphk# All rights reserved.
5104349Sphk#
6104349Sphk# Redistribution and use in source and binary forms, with or without
7104349Sphk# modification, are permitted provided that the following conditions
8104349Sphk# are met:
9104349Sphk# 1. Redistributions of source code must retain the above copyright
10104349Sphk#    notice, this list of conditions and the following disclaimer.
11104349Sphk# 2. Redistributions in binary form must reproduce the above copyright
12104349Sphk#    notice, this list of conditions and the following disclaimer in the
13104349Sphk#    documentation and/or other materials provided with the distribution.
14104349Sphk#
15104349Sphk# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16104349Sphk# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17104349Sphk# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18104349Sphk# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19104349Sphk# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20104349Sphk# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21104349Sphk# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22104349Sphk# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23104349Sphk# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24104349Sphk# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25104349Sphk# SUCH DAMAGE.
26104349Sphk#
27104349Sphk# $FreeBSD: head/usr.sbin/bsdinstall/scripts/checksum 219903 2011-03-23 13:43:56Z nwhitehorn $
28104349Sphk
29104349Sphktest -f $BSDINSTALL_DISTDIR/MANIFEST || exit 0
30104349Sphk
31104349Sphkpercentage=0
32104349Sphkfor dist in $DISTRIBUTIONS; do
33104349Sphk	distname=$(basename $dist .txz)
34104349Sphk	eval "status_$distname=7"
35104349Sphk	
36104349Sphk	items=""
37104349Sphk	for i in $DISTRIBUTIONS; do
38104349Sphk		items="$items $i `eval echo \\\${status_$(basename $i .txz):-Pending}`"
39104349Sphk	done
40104349Sphk	dialog --backtitle "FreeBSD Installer" --title "Checksum Verification" \
41104349Sphk	    --mixedgauge "Verifying checksums of selected distributions." \
42104349Sphk	    0 0 $percentage $items
43104349Sphk
44104349Sphk	CK=`sha256 -q $BSDINSTALL_DISTDIR/$dist`
45104349Sphk	awk -v checksum=$CK -v dist=$dist -v found=0 '{
46104349Sphk		if (dist == $1) {
47104349Sphk			found = 1
48104349Sphk			if (checksum == $2)
49104349Sphk				exit(0)
50104349Sphk			else
51104349Sphk				exit(2)
52104349Sphk		}
53104349Sphk	} END {if (!found) exit(1);}' $BSDINSTALL_DISTDIR/MANIFEST
54104349Sphk
55104349Sphk	CK_VALID=$?
56104349Sphk	if [ $CK_VALID -le 1 ]; then
57104349Sphk		if [ $CK_VALID -eq 0 ]; then
58104349Sphk			eval "status_$distname=2"
59104349Sphk		else
60104349Sphk			eval "status_$distname=6"
61104349Sphk		fi
62104349Sphk		percentage=$(echo $percentage + 100/`echo $DISTRIBUTIONS | wc -w` | bc)
63104349Sphk	else
64104349Sphk		eval "status_$distname=1"
65104349Sphk		dialog --backtitle "FreeBSD Installer" --title "Error" \
66104349Sphk		    --msgbox "The checksum for $dist does not match. It may have become corrupted, and should be redownloaded." 0 0
67104349Sphk		exit 1
68104349Sphk	fi
69104349Sphkdone
70104349Sphk
71104349Sphkexit 0
72104349Sphk