X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FGPG.py;h=1dcc0cf4db90d5cf384462f28e28ade13d38d742;hb=9aecb8c6fde06136bef94e2fd6fce832dc3c0c10;hp=f351f276f072a10a61c2d851d34db2f0ef518cba;hpb=f7128cb26e05a7671a81b9d3940366cb139884e3;p=plcapi.git diff --git a/PLC/GPG.py b/PLC/GPG.py index f351f27..1dcc0cf 100644 --- a/PLC/GPG.py +++ b/PLC/GPG.py @@ -7,18 +7,15 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: GPG.py,v 1.4 2007/01/10 20:18:52 mlhuang Exp $ -# import os import xmlrpclib import shutil from types import StringTypes from StringIO import StringIO -from xml.dom import minidom -from xml.dom.ext import Canonicalize from subprocess import Popen, PIPE, call from tempfile import NamedTemporaryFile, mkdtemp +from lxml import etree from PLC.Faults import * @@ -30,16 +27,14 @@ def canonicalize(args, methodname = None, methodresponse = False): """ xml = xmlrpclib.dumps(args, methodname, methodresponse, encoding = 'utf-8', allow_none = 1) - dom = minidom.parseString(xml) - + dom = etree.fromstring(xml) + canonical=etree.tostring(dom) + # pre-f20 version was using Canonicalize from PyXML + # from xml.dom.ext import Canonicalize # Canonicalize(), though it claims to, does not encode unicode # nodes to UTF-8 properly and throws an exception unless you write # the stream to a file object, so just encode it ourselves. - buf = StringIO() - Canonicalize(dom, output = buf) - xml = buf.getvalue().encode('utf-8') - - return xml + return canonical.encode('utf-8') def gpg_export(keyring, armor = True): """ @@ -55,7 +50,7 @@ def gpg_export(keyring, armor = True): if armor: args.append("--armor") - p = Popen(args, stdin = PIPE, stdout = PIPE, stderr = PIPE) + p = Popen(args, stdin = PIPE, stdout = PIPE, stderr = PIPE, close_fds = True) export = p.stdout.read() err = p.stderr.read() rc = p.wait()