# $Id$
import os
def run(func, arg, *cmd):
i, o = func(cmd)
i.write(arg)
i.close()
value = o.read()
o.close()
return value
def encode(xml, cer, key):
return run(os.popen2, xml, "openssl", "smime", "-sign", "-nodetach", "-outform", "PEM", "-signer", cer, "-inkey", key)
def decode(cms, dir):
return run(os.popen2, cms, "openssl", "smime", "-verify", "-inform", "PEM", "-CApath", dir)
def relaxng(xml, rng):
return run(os.popen4, xml, "xmllint", "--noout", "--relaxng", rng, "-")
def main():
dir = "biz-certs"
cer = "biz-certs/Alice-EE.cer"
key = "biz-certs/Alice-EE.key"
rng = "up-down-schema.rng"
for x in xml:
print x
e = encode(x, cer, key)
print e
d = decode(e, dir)
print d
v = relaxng(d, rng)
print v
print "=====\n"
# Ugly inline stuff here for initial testing
xml = [
'''
2001
17
[Readable text]
''',
'''
deadbeef
''',
'''
deadbeef
deadbeef
''',
'''
''',
'''
deadbeef
deadbeef
''',
'''
''',
'''
'''
]
main()