canonix 0.1.5 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,29 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ canonix (0.1.5)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ git (1.2.5)
10
+ jeweler (1.8.4)
11
+ bundler (~> 1.0)
12
+ git (>= 1.2.5)
13
+ rake
14
+ rdoc
15
+ json (1.8.0)
16
+ rake (10.0.4)
17
+ rdoc (4.0.1)
18
+ json (~> 1.4)
19
+ thoughtbot-shoulda (2.11.1)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ canonix!
26
+ jeweler
27
+ rake
28
+ rdoc
29
+ thoughtbot-shoulda
data/Rakefile CHANGED
@@ -40,11 +40,9 @@ rescue LoadError
40
40
  end
41
41
  end
42
42
 
43
- task :test => :check_dependencies
44
-
45
43
  task :default => :test
46
44
 
47
- require 'rake/rdoctask'
45
+ require 'rdoc/task'
48
46
  Rake::RDocTask.new do |rdoc|
49
47
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
50
48
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.5
1
+ 0.1.7
@@ -4,22 +4,22 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{canonix}
8
- s.version = "0.1.5"
7
+ s.name = "canonix"
8
+ s.version = "0.1.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brendon Muir"]
12
- s.date = %q{2011-10-04}
13
- s.description = %q{This is based on andrewferk's rewrite for Ruby 1.9 compatibility, but applies
14
- relevance's fix to ensure proper canonicalisation. It is intended that this be the new official
15
- Ruby XML Canonicaliser as the other project seems to be abandoned.}
16
- s.email = %q{brendon@spike.net.nz}
12
+ s.date = "2013-06-09"
13
+ s.description = "This is based on andrewferk's rewrite for Ruby 1.9 compatibility, but applies \n relevance's fix to ensure proper canonicalisation. It is intended that this be the new official \n Ruby XML Canonicaliser as the other project seems to be abandoned."
14
+ s.email = "brendon@spike.net.nz"
17
15
  s.extra_rdoc_files = [
18
16
  "README.rdoc"
19
17
  ]
20
18
  s.files = [
21
19
  ".document",
22
20
  ".rvmrc",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
23
  "README.rdoc",
24
24
  "Rakefile",
25
25
  "VERSION",
@@ -38,20 +38,35 @@ Gem::Specification.new do |s|
38
38
  "test/test_xmlcanonicalizer.rb",
39
39
  "tests.watchr"
40
40
  ]
41
- s.homepage = %q{http://github.com/brendon/canonix}
41
+ s.homepage = "http://github.com/brendon/canonix"
42
42
  s.require_paths = ["lib"]
43
- s.rubygems_version = %q{1.4.2}
44
- s.summary = %q{XML Canonicalizer for Ruby >= 1.9.2}
43
+ s.rubygems_version = "1.8.24"
44
+ s.summary = "XML Canonicalizer for Ruby >= 1.9.2"
45
45
 
46
46
  if s.respond_to? :specification_version then
47
47
  s.specification_version = 3
48
48
 
49
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
+ s.add_runtime_dependency(%q<canonix>, [">= 0"])
51
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
52
+ s.add_development_dependency(%q<rake>, [">= 0"])
53
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
54
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
50
55
  s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
51
56
  else
57
+ s.add_dependency(%q<canonix>, [">= 0"])
58
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
59
+ s.add_dependency(%q<rake>, [">= 0"])
60
+ s.add_dependency(%q<rdoc>, [">= 0"])
61
+ s.add_dependency(%q<jeweler>, [">= 0"])
52
62
  s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
53
63
  end
54
64
  else
65
+ s.add_dependency(%q<canonix>, [">= 0"])
66
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
67
+ s.add_dependency(%q<rake>, [">= 0"])
68
+ s.add_dependency(%q<rdoc>, [">= 0"])
69
+ s.add_dependency(%q<jeweler>, [">= 0"])
55
70
  s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
56
71
  end
57
72
  end
@@ -10,9 +10,8 @@ require "base64"
10
10
 
11
11
  module XML
12
12
  include REXML
13
-
13
+
14
14
  module Util
15
-
16
15
  class NamespaceNode
17
16
  attr_reader :prefix, :uri
18
17
  def initialize(prefix, uri)
@@ -20,21 +19,20 @@ module XML
20
19
  @uri = uri
21
20
  end
22
21
  end
23
-
22
+
24
23
  class XmlCanonicalizer
25
24
  attr_accessor :prefix_list, :logger, :inclusive_namespaces
26
-
25
+
27
26
  BEFORE_DOC_ELEMENT = 0
28
27
  INSIDE_DOC_ELEMENT = 1
29
28
  AFTER_DOC_ELEMENT = 2
30
-
29
+
31
30
  NODE_TYPE_ATTRIBUTE = 3
32
31
  NODE_TYPE_WHITESPACE = 4
33
32
  NODE_TYPE_COMMENT = 5
34
33
  NODE_TYPE_PI = 6
35
34
  NODE_TYPE_TEXT = 7
36
-
37
-
35
+
38
36
  def initialize(with_comments, excl_c14n)
39
37
  @with_comments = with_comments
40
38
  @exclusive = excl_c14n
@@ -44,7 +42,7 @@ module XML
44
42
  @prevVisibleNamespacesEnd = 0
45
43
  @visibleNamespaces = Array.new()
46
44
  end
47
-
45
+
48
46
  def add_inclusive_namespaces(prefix_list, element, visible_namespaces)
49
47
  namespaces = element.attributes()
50
48
  namespaces.each_attribute{|ns|
@@ -58,11 +56,11 @@ module XML
58
56
  add_inclusive_namespaces(prefix_list, parent, visible_namespaces) if (parent)
59
57
  visible_namespaces
60
58
  end
61
-
59
+
62
60
  def canonicalize(document)
63
61
  write_document_node(document)
64
62
  end
65
-
63
+
66
64
  def canonicalize_element(element, logging = true)
67
65
  @preserve_document = element.document()
68
66
  tmp_parent = element.parent()
@@ -76,7 +74,7 @@ module XML
76
74
  document.root().add_namespace(element.prefix(), ns)
77
75
  write_document_node(document)
78
76
  end
79
-
77
+
80
78
  def write_document_node(document)
81
79
  @res = ""
82
80
  @state = BEFORE_DOC_ELEMENT
@@ -89,7 +87,7 @@ module XML
89
87
  end
90
88
  @res
91
89
  end
92
-
90
+
93
91
  def write_node(node)
94
92
  visible = is_node_visible(node)
95
93
  if ((node.node_type() == :text) && white_text?(node.value()))
@@ -113,7 +111,7 @@ module XML
113
111
  if (node.node_type() == :comment)
114
112
  end
115
113
  end
116
-
114
+
117
115
  def write_element_node(node, visible)
118
116
  savedPrevVisibleNamespacesStart = @prevVisibleNamespacesStart
119
117
  savedPrevVisibleNamespacesEnd = @prevVisibleNamespacesEnd
@@ -133,7 +131,7 @@ module XML
133
131
  @prevVisibleNamespacesEnd = savedPrevVisibleNamespacesEnd
134
132
  @visibleNamespaces.slice!(savedVisibleNamespacesSize, @visibleNamespaces.size() - savedVisibleNamespacesSize) if (@visibleNamespaces.size() > savedVisibleNamespacesSize)
135
133
  end
136
-
134
+
137
135
  def write_namespace_axis(node, visible)
138
136
  doc = node.document()
139
137
  has_empty_namespace = false
@@ -157,14 +155,14 @@ module XML
157
155
  if (visible && !has_empty_namespace && !is_namespace_rendered(nil, nil))
158
156
  @res = @res + ' xmlns=""'
159
157
  end
160
-
158
+
161
159
  #: ns of inclusive_list
162
160
  if self.inclusive_namespaces && !self.inclusive_namespaces.empty?
163
161
  self.inclusive_namespaces.each{|prefix|
164
162
  list.push(prefix) if (!list.include?(prefix) && (node.attributes.prefixes.include?(prefix)))
165
163
  }
166
164
  end
167
-
165
+
168
166
  if list.delete('xmlns')
169
167
  list = ["xmlns"] + list.sort
170
168
  else
@@ -182,7 +180,7 @@ module XML
182
180
  @prevVisibleNamespacesEnd = @visibleNamespaces.size()
183
181
  end
184
182
  end
185
-
183
+
186
184
  def node_namespaces(node)
187
185
  ns = Array.new()
188
186
  ns.push(node.prefix())
@@ -196,7 +194,7 @@ module XML
196
194
  }
197
195
  ns
198
196
  end
199
-
197
+
200
198
  def write_attribute_axis(node)
201
199
  list = Array.new()
202
200
  node.attributes.keys.sort.each{|key|
@@ -233,11 +231,11 @@ module XML
233
231
  end
234
232
  }
235
233
  end
236
-
234
+
237
235
  def is_namespace_node(namespace_uri)
238
236
  return (namespace_uri == "http://www.w3.org/2000/xmlns/")
239
237
  end
240
-
238
+
241
239
  def is_namespace_rendered(prefix, uri)
242
240
  is_empty_ns = prefix == nil && uri == nil
243
241
  if (is_empty_ns)
@@ -259,7 +257,7 @@ module XML
259
257
  # }
260
258
  # return is_empty_ns
261
259
  end
262
-
260
+
263
261
  def is_node_visible(node)
264
262
  return true if (@xnl.size() == 0)
265
263
  @xnl.each{|element|
@@ -267,7 +265,7 @@ module XML
267
265
  }
268
266
  return false
269
267
  end
270
-
268
+
271
269
  def normalize_string(input, type)
272
270
  sb = ""
273
271
  return input
@@ -294,29 +292,29 @@ module XML
294
292
  # }
295
293
  # sb
296
294
  end
297
-
295
+
298
296
  def write_text_node(node, visible)
299
297
  if (visible)
300
- @res = @res + normalize_string(node.value(), node.node_type())
298
+ @res = @res + normalize_string(node.to_s, node.node_type())
301
299
  end
302
300
  end
303
-
301
+
304
302
  def white_text?(text)
305
303
  return true if ((text.strip() == "") || (text.strip() == nil))
306
304
  return false
307
305
  end
308
-
306
+
309
307
  def is_namespace_decl(attribute)
310
308
  # return true if (attribute.name() == "xmlns")
311
309
  return true if (attribute.prefix().index("xmlns") == 0)
312
310
  return false
313
311
  end
314
-
312
+
315
313
  def is_text_node(type)
316
314
  return true if (type == NODE_TYPE_TEXT || type == NODE_TYPE_CDATA || type == NODE_TYPE_WHITESPACE)
317
315
  return false
318
316
  end
319
-
317
+
320
318
  def remove_whitespace(string)
321
319
  new_string = ""
322
320
  in_white = false
@@ -339,12 +337,11 @@ module XML
339
337
  end #Util
340
338
  end #XML
341
339
 
342
-
343
340
  if __FILE__ == $0
344
341
  document = Document.new(File.new(ARGV[0]))
345
342
  body = nil
346
343
  c = WSS4R::Security::Util::XmlCanonicalizer.new(false, true)
347
-
344
+
348
345
  if (ARGV.size() == 3)
349
346
  body = ARGV[2]
350
347
  if (body == "true")
@@ -361,7 +358,7 @@ if __FILE__ == $0
361
358
  else
362
359
  result = c.canonicalize(document)
363
360
  end
364
-
361
+
365
362
  file = File.new(ARGV[1], "wb")
366
363
  file.write(result)
367
364
  file.close()
@@ -26,7 +26,7 @@
26
26
  <saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:anyType">00550000001b7Kf</saml:AttributeValue>
27
27
  </saml:Attribute>
28
28
  <saml:Attribute Name="username" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
29
- <saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:anyType">mail@example.com</saml:AttributeValue>
29
+ <saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:anyType">some &amp; example</saml:AttributeValue>
30
30
  </saml:Attribute>
31
31
  <saml:Attribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
32
32
  <saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:anyType">mail@example.com</saml:AttributeValue>
@@ -26,7 +26,7 @@
26
26
  <saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:anyType">00550000001b7Kf</saml:AttributeValue>
27
27
  </saml:Attribute>
28
28
  <saml:Attribute Name="username" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
29
- <saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:anyType">mail@example.com</saml:AttributeValue>
29
+ <saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:anyType">some &amp; example</saml:AttributeValue>
30
30
  </saml:Attribute>
31
31
  <saml:Attribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
32
32
  <saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:anyType">mail@example.com</saml:AttributeValue>
@@ -112,5 +112,4 @@ class TestXmlCanonicalizer < Test::Unit::TestCase
112
112
  xml_expect = fixture("saml_with_inclusive_ns_expected_canonical_form.xml")
113
113
  assert_equal xml_expect, xml_canonicalized #, (xml_canonicalized.to_s + "\n\n" + xml_expect)
114
114
  end
115
-
116
115
  end
metadata CHANGED
@@ -1,51 +1,126 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: canonix
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.7
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 5
10
- version: 0.1.5
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Brendon Muir
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-10-04 00:00:00 +13:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2013-06-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: canonix
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
22
31
  name: thoughtbot-shoulda
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rdoc
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
23
71
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: jeweler
80
+ requirement: !ruby/object:Gem::Requirement
25
81
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
33
86
  type: :development
34
- version_requirements: *id001
35
- description: |-
36
- This is based on andrewferk's rewrite for Ruby 1.9 compatibility, but applies
37
- relevance's fix to ensure proper canonicalisation. It is intended that this be the new official
38
- Ruby XML Canonicaliser as the other project seems to be abandoned.
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: thoughtbot-shoulda
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: ! "This is based on andrewferk's rewrite for Ruby 1.9 compatibility,
111
+ but applies \n relevance's fix to ensure proper canonicalisation. It is intended
112
+ that this be the new official \n Ruby XML Canonicaliser as the other project
113
+ seems to be abandoned."
39
114
  email: brendon@spike.net.nz
40
115
  executables: []
41
-
42
116
  extensions: []
43
-
44
- extra_rdoc_files:
117
+ extra_rdoc_files:
45
118
  - README.rdoc
46
- files:
119
+ files:
47
120
  - .document
48
121
  - .rvmrc
122
+ - Gemfile
123
+ - Gemfile.lock
49
124
  - README.rdoc
50
125
  - Rakefile
51
126
  - VERSION
@@ -63,39 +138,31 @@ files:
63
138
  - test/saml_with_inclusive_ns_expected_canonical_form.xml
64
139
  - test/test_xmlcanonicalizer.rb
65
140
  - tests.watchr
66
- has_rdoc: true
67
141
  homepage: http://github.com/brendon/canonix
68
142
  licenses: []
69
-
70
143
  post_install_message:
71
144
  rdoc_options: []
72
-
73
- require_paths:
145
+ require_paths:
74
146
  - lib
75
- required_ruby_version: !ruby/object:Gem::Requirement
147
+ required_ruby_version: !ruby/object:Gem::Requirement
76
148
  none: false
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- hash: 3
81
- segments:
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ segments:
82
154
  - 0
83
- version: "0"
84
- required_rubygems_version: !ruby/object:Gem::Requirement
155
+ hash: 1387874799767718647
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
157
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- hash: 3
90
- segments:
91
- - 0
92
- version: "0"
158
+ requirements:
159
+ - - ! '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
93
162
  requirements: []
94
-
95
163
  rubyforge_project:
96
- rubygems_version: 1.4.2
164
+ rubygems_version: 1.8.24
97
165
  signing_key:
98
166
  specification_version: 3
99
167
  summary: XML Canonicalizer for Ruby >= 1.9.2
100
168
  test_files: []
101
-