|
|
1.1 root 1: #!/bin/sh
2:
3: # Option ROM Signing utility
4: #
5: # This program is free software; you can redistribute it and/or modify
6: # it under the terms of the GNU General Public License as published by
7: # the Free Software Foundation; either version 2 of the License, or
8: # (at your option) any later version.
9: #
10: # This program is distributed in the hope that it will be useful,
11: # but WITHOUT ANY WARRANTY; without even the implied warranty of
12: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: # GNU General Public License for more details.
14: #
15: # You should have received a copy of the GNU General Public License
16: # along with this program; if not, see <http://www.gnu.org/licenses/>.
17: #
18: # Copyright Novell Inc, 2009
19: # Authors: Alexander Graf <[email protected]>
20: #
21: # Syntax: signrom.sh <input> <output>
22:
23: # did we get proper arguments?
24: test "$1" -a "$2" || exit 1
25:
26: sum=0
27:
28: # find out the file size
29: x=`dd if="$1" bs=1 count=1 skip=2 2>/dev/null | od -t u1 -A n`
30: #size=`expr $x \* 512 - 1`
31: size=$(( $x * 512 - 1 ))
32:
33: # now get the checksum
34: nums=`od -A n -t u1 -v "$1"`
35: for i in ${nums}; do
36: # add each byte's value to sum
37: sum=`expr $sum + $i`
38: done
39:
40: sum=$(( $sum % 256 ))
41: sum=$(( 256 - $sum ))
42: sum_octal=$( printf "%o" $sum )
43:
44: # and write the output file
45: cp "$1" "$2"
46: printf "\\$sum_octal" | dd of="$2" bs=1 count=1 seek=$size conv=notrunc 2>/dev/null
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.