#!/bin/sh

# BEGIN PARAMETERS
OUTDIR=keygraphs
KEYSERVER=subkeys.pgp.net
KEYRING=linuxnantes
# END PARAMETERS

GPG="gpg --no-options --keyserver $KEYSERVER --no-default-keyring"

# Create output directory
mkdir -p $OUTDIR

# Refresh keyring
echo "----- Refresh $KEYRING keyring -----"
$GPG --keyring ./$KEYRING.keyring --refresh-keys
rm ./$KEYRING.keyring~

# Create global graphs and get all directly signed keys
echo "----- Generate global graph for $KEYRING keyring -----"
$GPG --with-colons --keyring ./$KEYRING.keyring --list-sigs | grep ^sig | cut -d':' -f5 | sort | uniq > ./$OUTDIR/global.ids
$GPG --keyring ./$OUTDIR/all.keyring --recv-keys `cat ./$OUTDIR/global.ids`
rm ./$OUTDIR/all.keyring~ ./$OUTDIR/global.ids
$GPG --keyring ./$OUTDIR/all.keyring --list-sigs | sig2dot | springgraph > ./$OUTDIR/global.png

# Create individual graphs
echo "----- Generate indivuals graphs -----"
$GPG --fingerprint --with-colons --keyring ./$KEYRING.keyring --list-keys | grep ^fpr | cut -d':' -f10 | cut -d'/' -f2 | sort | uniq > ./$OUTDIR/$KEYRING.ids
keyringkeys=`cat ./$OUTDIR/$KEYRING.ids`
rm ./$OUTDIR/$KEYRING.ids
for current_key in $keyringkeys
do
	echo "----- Generate graph for $current_key key -----"
	$GPG --with-colons --keyring ./$KEYRING.keyring --list-sigs $current_key | grep ^sig | cut -d':' -f5 | sort | uniq > ./$OUTDIR/$current_key.ids
	$GPG --keyring ./$OUTDIR/$current_key.keyring --recv-keys `cat ./$OUTDIR/$current_key.ids`
	rm ./$OUTDIR/$current_key.keyring~ ./$OUTDIR/$current_key.ids
	$GPG --keyring ./$OUTDIR/$current_key.keyring --list-sigs | sig2dot | springgraph > ./$OUTDIR/$current_key.png
done

