lib/xml/util/xmlcanonicalizer.rb in canonix-0.1.1 vs lib/xml/util/xmlcanonicalizer.rb in canonix-0.1.2

- old
+ new

@@ -84,11 +84,11 @@ @uri = uri end end class XmlCanonicalizer - attr_accessor :prefix_list, :logger + attr_accessor :prefix_list, :logger, :inclusive_namespaces BEFORE_DOC_ELEMENT = 0 INSIDE_DOC_ELEMENT = 1 AFTER_DOC_ELEMENT = 2 @@ -106,12 +106,10 @@ @state = BEFORE_DOC_ELEMENT @xnl = Array.new() @prevVisibleNamespacesStart = 0 @prevVisibleNamespacesEnd = 0 @visibleNamespaces = Array.new() - @inclusive_namespaces = Array.new() - @prefix_list = nil end def add_inclusive_namespaces(prefix_list, element, visible_namespaces) namespaces = element.attributes() namespaces.each_attribute{|ns| @@ -130,11 +128,10 @@ write_document_node(document) @res end def canonicalize_element(element, logging = true) - @inclusive_namespaces = add_inclusive_namespaces(@prefix_list, element, @inclusive_namespaces) if (@prefix_list) @preserve_document = element.document() tmp_parent = element.parent() body_string = remove_whitespace(element.to_s().gsub("\n","").gsub("\t","").gsub("\r","")) document = Document.new(body_string) tmp_parent.delete_element(element) @@ -174,11 +171,11 @@ write_text_node(node, visible) return end if (node.node_type() == :element) write_element_node(node, visible) if (!node.rendered?()) - node.rendered=(true) + node.rendered=(true) end if (node.node_type() == :processing_instruction) end if (node.node_type() == :comment) end @@ -193,12 +190,12 @@ @res = @res + "<" + node.expanded_name() if (visible) write_namespace_axis(node, visible) write_attribute_axis(node) @res = @res + ">" if (visible) node.each_child{|child| - write_node(child) - } + write_node(child) + } @res = @res + "</" +node.expanded_name() + ">" if (visible) @state = AFTER_DOC_ELEMENT if (visible && state == BEFORE_DOC_ELEMENT) @prevVisibleNamespacesStart = savedPrevVisibleNamespacesStart @prevVisibleNamespacesEnd = savedPrevVisibleNamespacesEnd @visibleNamespaces.slice!(savedVisibleNamespacesSize, @visibleNamespaces.size() - savedVisibleNamespacesSize) if (@visibleNamespaces.size() > savedVisibleNamespacesSize) @@ -226,21 +223,18 @@ has_empty_namespace = true if (prefix == nil) } if (visible && !has_empty_namespace && !is_namespace_rendered(nil, nil)) @res = @res + ' xmlns=""' end - #TODO: ns of inclusive_list -#=begin - if ((@prefix_list) && (node.to_s() == node.parent().to_s())) - #list.push(node.prefix()) - @inclusive_namespaces.each{|ns| - prefix = ns.prefix().split(":")[1] - list.push(prefix) if (!list.include?(prefix) && (!node.attributes.prefixes.include?(prefix))) + + #: ns of inclusive_list + if self.inclusive_namespaces && !self.inclusive_namespaces.empty? + self.inclusive_namespaces.each{|prefix| + list.push(prefix) if (!list.include?(prefix) && (node.attributes.prefixes.include?(prefix))) } - @prefix_list = nil end -#=end + list.sort!() list.each{|prefix| next if (prefix == "") ns = node.namespace(prefix) ns = @preserve_element.namespace(prefix) if (ns == nil) @@ -410,17 +404,17 @@ element = XPath.first(document, "/soap:Envelope/soap:Header/wsse:Security/Signature/SignedInfo") result = c.canonicalize_element(element) puts("-----") puts(result) puts("-----") - puts(result.size()) + puts(result.size()) puts("-----") puts(CryptHash.new().digest_b64(result)) end else result = c.canonicalize(document) end - + file = File.new(ARGV[1], "wb") file.write(result) file.close() -end +end \ No newline at end of file