home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / rescue / usr / lib / rpm / tgpg < prev    next >
Text File  |  2006-11-29  |  907b  |  37 lines

  1. #!/bin/sh
  2.  
  3.  
  4. for pkg in $*
  5. do
  6.     if [ "$pkg" = "" -o ! -e "$pkg" ]; then
  7.     echo "no package supplied" 1>&2
  8.     exit 1
  9.     fi
  10.  
  11.     plaintext=`mktemp /tmp/tgpg-$$.XXXXXX`
  12.     detached=`mktemp /tmp/tgpg-$$.XXXXXX`
  13.  
  14. # --- Extract detached signature
  15.     rpm -qp -vv --qf '%{siggpg:armor}' $pkg > $detached
  16.  
  17. # --- Figger the offset of header+payload in the package
  18.     leadsize=96
  19.     o=`expr $leadsize + 8`
  20.  
  21.     set `od -j $o -N 8 -t u1 $pkg`
  22.     il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
  23.     dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
  24.  
  25.     sigsize=`expr 8 + 16 \* $il + $dl`
  26.     o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8`
  27.  
  28. # --- Extract header+payload
  29.     dd if=$pkg ibs=$o skip=1 2>/dev/null > $plaintext
  30.  
  31. # --- Verify DSA signature using gpg
  32.     gpg --batch -vv --debug 0xfc02 --verify $detached $plaintext
  33.  
  34. # --- Clean up
  35.     rm -f $detached $plaintext
  36. done
  37.