File:  [Qemu by Fabrice Bellard] / qemu / scripts / signrom.sh
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:42:41 2018 UTC (3 years, 3 months ago) by root
Branches: qemu, MAIN
CVS tags: qemu1001, qemu1000, qemu0151, qemu0150, qemu0141, qemu0140, HEAD
qemu 0.14.0

    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 <agraf@suse.de>
   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 -N $size "$1"`
   35: for i in ${nums}; do
   36:     # add each byte's value to sum
   37:     sum=`expr \( $sum + $i \) % 256`
   38: done
   39: 
   40: sum=$(( (256 - $sum) % 256 ))
   41: sum_octal=$( printf "%o" $sum )
   42: 
   43: # and write the output file
   44: cp "$1" "$2"
   45: printf "\\$sum_octal" | dd of="$2" bs=1 count=1 seek=$size conv=notrunc 2>/dev/null

unix.superglobalmegacorp.com