ruby-saml-mod 0.1.28 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. data/lib/xml_sec.rb +41 -4
  2. data/ruby-saml-mod.gemspec +1 -1
  3. metadata +18 -12
  4. checksums.yaml +0 -7
data/lib/xml_sec.rb CHANGED
@@ -84,7 +84,7 @@ module XMLSecurity
84
84
 
85
85
  class XmlSecPtrList < FFI::Struct
86
86
  layout \
87
- :id, :string,
87
+ :id, :pointer,
88
88
  :data, :pointer, # xmlSecPtr*
89
89
  :use, :uint,
90
90
  :max, :uint,
@@ -120,6 +120,19 @@ module XMLSecurity
120
120
  :reserved1, :pointer # void *
121
121
  end
122
122
 
123
+ class XmlSecTransformUriType
124
+ None = 0x0000
125
+ Empty = 0x0001
126
+ SameDocument = 0x0002
127
+ Local = 0x0004
128
+ Remote = 0x0008
129
+ Any = 0xFFFF
130
+
131
+ def self.conservative
132
+ (Empty | SameDocument)
133
+ end
134
+ end
135
+
123
136
  class XmlSecKeyInfoCtx < FFI::Struct
124
137
  layout \
125
138
  :userDate, :pointer,
@@ -152,7 +165,7 @@ module XMLSecurity
152
165
  :keyInfoWriteCtx, XmlSecKeyInfoCtx.by_value,
153
166
  :transformCtx, XmlSecTransformCtx.by_value,
154
167
  :enabledReferenceUris, :uint, # xmlSecTransformUriType
155
- :enabledReferenceTransforms, :pointer, # xmlSecPtrListPtr
168
+ :enabledReferenceTransforms, XmlSecPtrList.by_ref, # xmlSecPtrListPtr
156
169
  :referencePreExecuteCallback, :pointer, # xmlSecTransformCtxPreExecuteCallback
157
170
  :defSignMethodId, :string, # xmlSecTransformId
158
171
  :defC14NMethodId, :string, # xmlSecTransformId
@@ -223,8 +236,12 @@ module XMLSecurity
223
236
 
224
237
  attach_function :xmlSecDSigCtxSign, [ :pointer, :pointer ], :int
225
238
 
226
-
227
-
239
+ attach_function :xmlSecDSigCtxEnableReferenceTransform, [ :pointer, :pointer ], :int
240
+ attach_function :xmlSecPtrListAdd, [ :pointer, :pointer ], :int
241
+ attach_function :xmlSecPtrListGetItem, [ :pointer, :uint ], :pointer
242
+ attach_function :xmlSecPtrListGetSize, [ :pointer ], :uint
243
+ attach_function :xmlSecTransformIdsGet, [], :pointer
244
+ attach_function :xmlSecTransformXsltGetKlass, [], :pointer
228
245
 
229
246
  # libxml functions
230
247
  attach_function :xmlInitParser, [], :void
@@ -269,6 +286,23 @@ module XMLSecurity
269
286
  xmlSecErrorsDefaultCallbackEnableOutput(true)
270
287
  end
271
288
 
289
+ def self.disable_xslt_transforms!(dsig_context)
290
+ all_transforms = XMLSecurity.xmlSecTransformIdsGet
291
+
292
+ (0...XMLSecurity.xmlSecPtrListGetSize(all_transforms)).each do |pos|
293
+ transform = XMLSecurity.xmlSecPtrListGetItem(all_transforms, pos)
294
+ unless transform == XMLSecurity.xmlSecTransformXsltGetKlass
295
+ XMLSecurity.xmlSecPtrListAdd(dsig_context[:transformCtx][:enabledTransforms], transform)
296
+ XMLSecurity.xmlSecDSigCtxEnableReferenceTransform(dsig_context, transform)
297
+ end
298
+ end
299
+ end
300
+
301
+ def self.disable_remote_references!(dsig_context)
302
+ dsig_context[:transformCtx][:enabledUris] = XmlSecTransformUriType.conservative
303
+ dsig_context[:enabledReferenceUris] = XmlSecTransformUriType.conservative
304
+ end
305
+
272
306
  module SignedDocument
273
307
  attr_reader :validation_error
274
308
 
@@ -366,6 +400,9 @@ module XMLSecurity
366
400
  ctx = XMLSecurity.xmlSecDSigCtxCreate(kmgr)
367
401
  raise "failed creating digital signature context" if ctx.null?
368
402
 
403
+ XMLSecurity.disable_xslt_transforms!(ctx)
404
+ XMLSecurity.disable_remote_references!(ctx)
405
+
369
406
  # verify!
370
407
  raise "failed verifying dsig" if XMLSecurity.xmlSecDSigCtxVerify(ctx, node) < 0
371
408
  result = ctx[:status] == :xmlSecDSigStatusSucceeded
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{ruby-saml-mod}
3
- s.version = "0.1.28"
3
+ s.version = "0.1.29"
4
4
 
5
5
  s.authors = ["OneLogin LLC", "Bracken", "Zach", "Cody", "Jeremy", "Paul"]
6
6
  s.date = %q{2014-05-05}
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-saml-mod
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.28
4
+ version: 0.1.29
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - OneLogin LLC
@@ -18,33 +19,37 @@ dependencies:
18
19
  - !ruby/object:Gem::Dependency
19
20
  name: libxml-ruby
20
21
  requirement: !ruby/object:Gem::Requirement
22
+ none: false
21
23
  requirements:
22
- - - ">="
24
+ - - ! '>='
23
25
  - !ruby/object:Gem::Version
24
26
  version: 2.3.0
25
27
  type: :runtime
26
28
  prerelease: false
27
29
  version_requirements: !ruby/object:Gem::Requirement
30
+ none: false
28
31
  requirements:
29
- - - ">="
32
+ - - ! '>='
30
33
  - !ruby/object:Gem::Version
31
34
  version: 2.3.0
32
35
  - !ruby/object:Gem::Dependency
33
36
  name: ffi
34
37
  requirement: !ruby/object:Gem::Requirement
38
+ none: false
35
39
  requirements:
36
- - - ">="
40
+ - - ! '>='
37
41
  - !ruby/object:Gem::Version
38
42
  version: '0'
39
43
  type: :runtime
40
44
  prerelease: false
41
45
  version_requirements: !ruby/object:Gem::Requirement
46
+ none: false
42
47
  requirements:
43
- - - ">="
48
+ - - ! '>='
44
49
  - !ruby/object:Gem::Version
45
50
  version: '0'
46
- description: 'This is an early fork from https://github.com/onelogin/ruby-saml - I
47
- plan to "rebase" these changes ontop of their current version eventually. '
51
+ description: ! 'This is an early fork from https://github.com/onelogin/ruby-saml -
52
+ I plan to "rebase" these changes ontop of their current version eventually. '
48
53
  email:
49
54
  executables: []
50
55
  extensions: []
@@ -67,25 +72,26 @@ files:
67
72
  - ruby-saml-mod.gemspec
68
73
  homepage: http://github.com/bracken/ruby-saml
69
74
  licenses: []
70
- metadata: {}
71
75
  post_install_message:
72
76
  rdoc_options: []
73
77
  require_paths:
74
78
  - lib
75
79
  required_ruby_version: !ruby/object:Gem::Requirement
80
+ none: false
76
81
  requirements:
77
- - - ">="
82
+ - - ! '>='
78
83
  - !ruby/object:Gem::Version
79
84
  version: '0'
80
85
  required_rubygems_version: !ruby/object:Gem::Requirement
86
+ none: false
81
87
  requirements:
82
- - - ">="
88
+ - - ! '>='
83
89
  - !ruby/object:Gem::Version
84
90
  version: '0'
85
91
  requirements: []
86
92
  rubyforge_project:
87
- rubygems_version: 2.2.2
93
+ rubygems_version: 1.8.23.2
88
94
  signing_key:
89
- specification_version: 4
95
+ specification_version: 3
90
96
  summary: Ruby library for SAML service providers
91
97
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 364210a5dc8d2c29558b9b0a19c258f64cdb1c9b
4
- data.tar.gz: 5c389976863d3d599ea7fdcf1c91932f0418b169
5
- SHA512:
6
- metadata.gz: b025fe482372d414d6fc263f5bbc2623e7070daa3d5fe8e2f6004b9e51494260f0746339d71791e7911c10be75b5f692069f2a98dc3d8e99985bf99c39cdab63
7
- data.tar.gz: 5826d046b3eccb253f38611afde71d6e602778b1e998d3baf3c7ba1629505821b60bfc4687f8f9e5e63164a305b429adfd39b6ccbd2358450636161eb6a73cdd