#!/usr/bin/python

# This script was written by Ewan MacMahon and had a little tinkering by Colin Tuckley.

import os
import sys
import random
import cgi

keysfound=[]


output=os.popen("/usr/bin/gpg --fixed-list-mode --with-colons --list-keys --with-fingerprint "+sys.argv[1],'r').readlines()

for line in output:
    fields=line.split(':')
    if fields[0] == 'pub':
        keysfound.append({'id':fields[4][-8:], 'fpr':"", 'uids':[]})
        currentkey=len(keysfound)-1
    if fields[0] == 'fpr':
        keysfound[currentkey]['fpr']=" ".join(fields[9][i:i+4] for i in xrange(0,len(fields[9]),4))
    if fields[0] == 'uid' and fields[1] not in 'idre':
        keysfound[currentkey]['uids'].append(fields[9])

if len(keysfound) != 1:
    print "More or less than one key found for that ID; aborting"
    sys.exit()


print """<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>GPG keysigning party sheet</title>
<style type="text/css">   <!-- 
 table { width: 100% ; font-family: monospace ; font-size: 10pt}
 td {border: 1px solid #000 ; vertical-align: top}

  --> 
</style>

  </head>

<body>

<table >
"""

for i in range(30):
    secret=hex(random.randint(0,0xFFFFFFFF))
    print "<tr><td>KeyID: "+keysfound[0]['id']+"<br />Secret: "+secret+"<br />Given to :<br /></td>"
    print "<td>KeyID: "+keysfound[0]['id']+"<br />Fingerprint: "+keysfound[0]['fpr']+"<br />"
    print "Photo ID checked [ ]<br />"
    print "Secret: "+secret+"<br />"
    for uid in keysfound[0]['uids']:
        print "UID: "+cgi.escape(uid)+"<br />"
    print "</td></tr>"

print """</table>
</body>
</html>
"""
