From 717ee55db215241bd5efd8502667baf4c099e998 Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Tue, 26 Jun 2007 05:32:27 +0000 Subject: Checkpoint svn path=/scripts/xml-parse-test.py; revision=687 --- scripts/xml-parse-test.py | 83 ++++++++++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 30 deletions(-) (limited to 'scripts/xml-parse-test.py') diff --git a/scripts/xml-parse-test.py b/scripts/xml-parse-test.py index 4445e90a..aac272f1 100755 --- a/scripts/xml-parse-test.py +++ b/scripts/xml-parse-test.py @@ -54,7 +54,7 @@ class rpki_updown_cert(object): \n' \ + resource_set_ipv6="%s"' \ % (self.class_name, self.cert_url, self.cert_ski, - self.resource_set_as, self.resource_set_ipv4, self.resource_set_ipv6, - self.suggested_sia_head)) + self.resource_set_as, self.resource_set_ipv4, self.resource_set_ipv6)) + if self.suggested_sia_head != None: + xml += ('\n suggested_sia_head="%s"' % (self.suggested_sia_head)) + xml += '>\n' for cert in self.certs: xml += cert.toXML() return xml + '' + base64.b64encode(self.issuer) + '\n\n' @@ -106,44 +111,61 @@ class rpki_updown_list_response(rpki_updown_msg): def __init__(self): self.resource_classes = [] + def startElement(self, name, attrs): + if name == 'class': + self.resource_classes.append(rpki_updown_class(attrs)) + elif name == 'certificate': + self.resource_classes[-1].certs.append(rpki_updown_cert(attrs)) + + def endElement(self, name, text): + if name == 'certificate': + self.resource_classes[-1].certs[-1].cert = base64.b64decode(text) + elif name == 'issuer': + self.resource_classes[-1].issuer = base64.b64decode(text) + def innerToXML(self): + xml = '' for c in self.resource_classes: xml += c.toXML() return xml class rpki_updown_issue(rpki_updown_msg): - def __init__(self): - self.req_as = None - self_req_ipv4 = None - self.req_ipv6 = None + def startElement(self, name, attrs): + assert name == 'request' + self.class_name = attrs.getValue('class_name') + try: + self.req_resource_set_as = attrs.getValue('req_resource_set_as') + except KeyError: + self.req_resource_set_as = None + try: + self.req_resource_set_ipv4 = attrs.getValue('req_resource_set_ipv4') + except KeyError: + self.req_resource_set_ipv4 = None + try: + self.req_resource_set_ipv6 = attrs.getValue('req_resource_set_ipv6') + except KeyError: + self.req_resource_set_ipv6 = None + + def endElement(self, name, text): + assert name == 'request' + self.pkcs10 = base64.b64decode(text) def innerToXML(self): xml = (' \n' - -class rpki_updown_issue_response(rpki_updown_msg): - - def startElement(self, name, attrs): - if name == 'class': - self.resource_class = rpki_updown_class(attrs) - elif name == 'certificate': - self.resource_class.certs.append(rpki_updown_cert(attrs)) + if self.req_resource_set_as != None: + xml += ('\n req_resource_set_as="%s"' % self.req_resource_set_as.toXML()) + if self.req_resource_set_ipv4 != None: + xml += ('\n req_resource_set_ipv4="%s"' % self.req_resource_set_ipv4.toXML()) + if self.req_resource_set_ipv6 != None: + xml += ('\n req_resource_set_ipv6="%s"' % self.req_resource_set_ipv6.toXML()) + return xml + base64.b64encode(self.pkcs10) + ' \n' - def endElement(self, name, text): - if name == 'certificate': - self.resource_class.certs[-1].cert = base64.b64decode(text) - elif name == 'issuer': - self.resource_class.issuer = base64.b64decode(text) +class rpki_updown_issue_response(rpki_updown_list_response): def innerToXML(self): - self.resource_class.toXML() + assert len(self.resource_classes) < 2 + rpki_updown_list_response.innerToXML(self) class rpki_updown_revoke(rpki_updown_msg): @@ -220,6 +242,7 @@ class rpki_updown_sax_handler(xml.sax.handler.ContentHandler): assert self.obj != None if name != 'message': self.obj.endElement(name, self.text) + self.text = '' files = glob.glob("up-down-protocol-samples/*.xml") files.sort() -- cgit v1.2.3