xmlenc 0.1.5 → 0.1.6
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.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/xmlenc.rb +2 -2
- data/lib/xmlenc/builder/cipher_data.rb +1 -1
- data/lib/xmlenc/builder/complex_types/encrypted_type.rb +4 -4
- data/lib/xmlenc/builder/data_reference.rb +1 -1
- data/lib/xmlenc/builder/digest_method.rb +2 -2
- data/lib/xmlenc/builder/encrypted_data.rb +4 -4
- data/lib/xmlenc/builder/encrypted_key.rb +1 -1
- data/lib/xmlenc/builder/encryption_method.rb +3 -3
- data/lib/xmlenc/builder/key_info.rb +2 -2
- data/lib/xmlenc/builder/reference_list.rb +2 -2
- data/lib/xmlenc/encrypted_data.rb +2 -2
- data/lib/xmlenc/encrypted_key.rb +2 -2
- data/lib/xmlenc/version.rb +1 -1
- data/spec/lib/xmlenc/builder/base_spec.rb +1 -1
- data/spec/lib/xmlenc/builder/complex_types/encrypted_type_spec.rb +1 -1
- data/spec/lib/xmlenc/builder/data_reference_spec.rb +1 -1
- data/spec/lib/xmlenc/builder/digest_method_spec.rb +1 -1
- data/spec/lib/xmlenc/builder/encrypted_data_spec.rb +1 -1
- data/spec/lib/xmlenc/builder/encrypted_key_spec.rb +1 -1
- data/spec/lib/xmlenc/builder/encryption_method_spec.rb +1 -1
- data/spec/lib/xmlenc/builder/reference_list_spec.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80959c76fdd31d7d40f3d1d5bb83ffda5d783b0b
|
4
|
+
data.tar.gz: a768a769b244114f6051a718fd3ae30c082cd785
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 09762e2cfa2bb910535b8a7eb89ee6b7dd052683ab5f1e41adff4c80c11bb8166da21bc69e827b2122c5230c62a8f1a65eabb163630d520d3f58664184ccbc1e
|
7
|
+
data.tar.gz: b7dde51da4ba68ef9df4026b37d87ca630ccf60077cd9bd735f23ff433a12c9e2730df160964c718c916cf29c9d6ccca2fb30eb5ef010cd3831397191dbe1be4
|
data/README.md
CHANGED
@@ -25,7 +25,8 @@ key_pem = File.read('path/to/key.pem')
|
|
25
25
|
xml = File.read('path/to/file.xml')
|
26
26
|
|
27
27
|
private_key = OpenSSL::PKey::RSA.new(key_pem)
|
28
|
-
|
28
|
+
encrypted_document = Xmlenc::EncryptedDocument.new(xml)
|
29
|
+
decrypted_document = encrypted_document.decrypt(private_key)
|
29
30
|
```
|
30
31
|
|
31
32
|
### Supported algorithms
|
data/lib/xmlenc.rb
CHANGED
@@ -7,8 +7,8 @@ require 'nokogiri'
|
|
7
7
|
|
8
8
|
module Xmlenc
|
9
9
|
NAMESPACES = {
|
10
|
-
xenc
|
11
|
-
ds
|
10
|
+
:xenc => 'http://www.w3.org/2001/04/xmlenc#',
|
11
|
+
:ds => 'http://www.w3.org/2000/09/xmldsig#'
|
12
12
|
}
|
13
13
|
|
14
14
|
class UnsupportedError < StandardError
|
@@ -8,11 +8,11 @@ module Xmlenc
|
|
8
8
|
included do
|
9
9
|
register_namespace "xenc", Xmlenc::NAMESPACES[:xenc]
|
10
10
|
|
11
|
-
has_one :encryption_method, Xmlenc::Builder::EncryptionMethod, xpath
|
12
|
-
has_one :key_info, Xmlenc::Builder::KeyInfo, xpath
|
13
|
-
has_one :cipher_data, Xmlenc::Builder::CipherData, xpath
|
11
|
+
has_one :encryption_method, Xmlenc::Builder::EncryptionMethod, :xpath => "./"
|
12
|
+
has_one :key_info, Xmlenc::Builder::KeyInfo, :xpath => "./"
|
13
|
+
has_one :cipher_data, Xmlenc::Builder::CipherData, :xpath => "./"
|
14
14
|
|
15
|
-
validates :cipher_data, presence
|
15
|
+
validates :cipher_data, :presence => true
|
16
16
|
end
|
17
17
|
|
18
18
|
def initialize(attributes = {})
|
@@ -8,9 +8,9 @@ module Xmlenc
|
|
8
8
|
register_namespace "ds", Xmlenc::NAMESPACES[:ds]
|
9
9
|
namespace "ds"
|
10
10
|
|
11
|
-
attribute :algorithm, String, tag
|
11
|
+
attribute :algorithm, String, :tag => "Algorithm"
|
12
12
|
|
13
|
-
validates :algorithm, presence
|
13
|
+
validates :algorithm, :presence => true
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -16,8 +16,8 @@ module Xmlenc
|
|
16
16
|
tag "EncryptedData"
|
17
17
|
namespace "xenc"
|
18
18
|
|
19
|
-
attribute :id, String, tag
|
20
|
-
attribute :type, String, tag
|
19
|
+
attribute :id, String, :tag => "Id"
|
20
|
+
attribute :type, String, :tag => "Type"
|
21
21
|
|
22
22
|
def type
|
23
23
|
'http://www.w3.org/2001/04/xmlenc#Element'
|
@@ -30,10 +30,10 @@ module Xmlenc
|
|
30
30
|
|
31
31
|
def encrypt(data)
|
32
32
|
encryptor = algorithm.setup
|
33
|
-
encrypted = encryptor.encrypt(data, node
|
33
|
+
encrypted = encryptor.encrypt(data, :node => encryption_method)
|
34
34
|
cipher_data.cipher_value = Base64.encode64(encrypted)
|
35
35
|
|
36
|
-
encrypted_key = EncryptedKey.new(data
|
36
|
+
encrypted_key = EncryptedKey.new(:data => encryptor.key)
|
37
37
|
encrypted_key.add_data_reference(id)
|
38
38
|
encrypted_key
|
39
39
|
end
|
@@ -8,14 +8,14 @@ module Xmlenc
|
|
8
8
|
register_namespace "xenc", Xmlenc::NAMESPACES[:xenc]
|
9
9
|
namespace "xenc"
|
10
10
|
|
11
|
-
attribute :algorithm, String, tag
|
11
|
+
attribute :algorithm, String, :tag => "Algorithm"
|
12
12
|
has_one :digest_method, Xmlenc::Builder::DigestMethod
|
13
13
|
|
14
|
-
validates :algorithm, presence
|
14
|
+
validates :algorithm, :presence => true
|
15
15
|
|
16
16
|
def initialize(attributes = {})
|
17
17
|
digest_method_algorithm = attributes.delete(:digest_method_algorithm)
|
18
|
-
attributes[:digest_method] = Xmlenc::Builder::DigestMethod.new(algorithm
|
18
|
+
attributes[:digest_method] = Xmlenc::Builder::DigestMethod.new(:algorithm => digest_method_algorithm)
|
19
19
|
super
|
20
20
|
end
|
21
21
|
end
|
@@ -8,9 +8,9 @@ module Xmlenc
|
|
8
8
|
register_namespace "ds", Xmlenc::NAMESPACES[:ds]
|
9
9
|
namespace "ds"
|
10
10
|
|
11
|
-
element :key_name, String, namespace
|
11
|
+
element :key_name, String, :namespace => "ds", :tag => "KeyName"
|
12
12
|
|
13
|
-
has_one :encrypted_key, Xmlenc::Builder::EncryptedKey, xpath
|
13
|
+
has_one :encrypted_key, Xmlenc::Builder::EncryptedKey, :xpath => "./"
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -8,11 +8,11 @@ module Xmlenc
|
|
8
8
|
register_namespace "xenc", Xmlenc::NAMESPACES[:xenc]
|
9
9
|
namespace "xenc"
|
10
10
|
|
11
|
-
has_many :data_references, Xmlenc::Builder::DataReference, xpath
|
11
|
+
has_many :data_references, Xmlenc::Builder::DataReference, :xpath => "./"
|
12
12
|
|
13
13
|
def add_data_reference(data_id)
|
14
14
|
self.data_references ||= []
|
15
|
-
self.data_references << DataReference.new(uri
|
15
|
+
self.data_references << DataReference.new(:uri => "##{data_id}")
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -35,14 +35,14 @@ module Xmlenc
|
|
35
35
|
|
36
36
|
def decrypt(key)
|
37
37
|
decryptor = algorithm.setup(key)
|
38
|
-
decrypted = decryptor.decrypt(Base64.decode64(cipher_value), node
|
38
|
+
decrypted = decryptor.decrypt(Base64.decode64(cipher_value), :node => encryption_method)
|
39
39
|
@node.replace(decrypted) unless @node == document.root
|
40
40
|
decrypted
|
41
41
|
end
|
42
42
|
|
43
43
|
def encrypt(data)
|
44
44
|
encryptor = algorithm.setup
|
45
|
-
encrypted = encryptor.encrypt(data, node
|
45
|
+
encrypted = encryptor.encrypt(data, :node => encryption_method)
|
46
46
|
self.cipher_value = Base64.encode64(encrypted)
|
47
47
|
encryptor.key
|
48
48
|
end
|
data/lib/xmlenc/encrypted_key.rb
CHANGED
@@ -31,12 +31,12 @@ module Xmlenc
|
|
31
31
|
|
32
32
|
def decrypt(key)
|
33
33
|
decryptor = algorithm.new(key)
|
34
|
-
decryptor.decrypt(Base64.decode64(cipher_value), node
|
34
|
+
decryptor.decrypt(Base64.decode64(cipher_value), :node => encryption_method)
|
35
35
|
end
|
36
36
|
|
37
37
|
def encrypt(key, data)
|
38
38
|
encryptor = algorithm.new(key)
|
39
|
-
encrypted = encryptor.encrypt(data, node
|
39
|
+
encrypted = encryptor.encrypt(data, :node => encryption_method)
|
40
40
|
self.cipher_value = Base64.encode64(encrypted)
|
41
41
|
end
|
42
42
|
|
data/lib/xmlenc/version.rb
CHANGED
@@ -9,7 +9,7 @@ end
|
|
9
9
|
describe BaseDummy do
|
10
10
|
describe "parse override" do
|
11
11
|
it "sets the from_xml flag" do
|
12
|
-
BaseDummy.parse("<tag></tag>", single
|
12
|
+
BaseDummy.parse("<tag></tag>", :single => true).from_xml?.should be_true
|
13
13
|
end
|
14
14
|
|
15
15
|
it "raises an error if the message cannot be parsed" do
|
@@ -9,7 +9,7 @@ end
|
|
9
9
|
describe Xmlenc::Builder::ComplexTypes::EncryptedType do
|
10
10
|
|
11
11
|
let(:xml) { File.read File.join("spec", "fixtures", "encrypted_document.xml") }
|
12
|
-
subject { EncryptedTypeDummy.new.parse(xml, single
|
12
|
+
subject { EncryptedTypeDummy.new.parse(xml, :single => true) }
|
13
13
|
|
14
14
|
describe "required fields" do
|
15
15
|
it "should have the cipher data field" do
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Xmlenc::Builder::DataReference do
|
4
4
|
|
5
5
|
let(:xml) { File.read File.join("spec", "fixtures", "template2.xml") }
|
6
|
-
subject { described_class.parse(xml, single
|
6
|
+
subject { described_class.parse(xml, :single => true) }
|
7
7
|
|
8
8
|
describe "#parse" do
|
9
9
|
it "should have uri attribute" do
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Xmlenc::Builder::DigestMethod do
|
4
4
|
|
5
5
|
let(:xml) { File.read File.join("spec", "fixtures", "template2.xml") }
|
6
|
-
subject { described_class.parse(xml, single
|
6
|
+
subject { described_class.parse(xml, :single => true) }
|
7
7
|
|
8
8
|
describe "#parse" do
|
9
9
|
it "should have one algorithm" do
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Xmlenc::Builder::EncryptedData do
|
4
4
|
|
5
5
|
let(:xml) { File.read File.join("spec", "fixtures", "encrypted_document.xml") }
|
6
|
-
subject { described_class.parse(xml, single
|
6
|
+
subject { described_class.parse(xml, :single => true) }
|
7
7
|
|
8
8
|
describe "required fields" do
|
9
9
|
it "should have the cipher data field" do
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Xmlenc::Builder::EncryptedKey do
|
4
4
|
|
5
5
|
let(:xml) { File.read File.join("spec", "fixtures", "encrypted_document.xml") }
|
6
|
-
subject { described_class.parse(xml, single
|
6
|
+
subject { described_class.parse(xml, :single => true) }
|
7
7
|
|
8
8
|
describe "required fields" do
|
9
9
|
it "should have the cipher data field" do
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Xmlenc::Builder::EncryptionMethod do
|
4
4
|
|
5
5
|
let(:xml) { File.read File.join("spec", "fixtures", "encrypted_document.xml") }
|
6
|
-
subject { described_class.parse(xml, single
|
6
|
+
subject { described_class.parse(xml, :single => true) }
|
7
7
|
|
8
8
|
describe "required fields" do
|
9
9
|
it "should have the algorithm field" do
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Xmlenc::Builder::ReferenceList do
|
4
4
|
|
5
5
|
let(:xml) { File.read File.join("spec", "fixtures", "template2.xml") }
|
6
|
-
subject { described_class.parse(xml, single
|
6
|
+
subject { described_class.parse(xml, :single => true) }
|
7
7
|
|
8
8
|
describe "#parse" do
|
9
9
|
it "has data" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xmlenc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benoist
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
193
|
version: '0'
|
194
194
|
requirements: []
|
195
195
|
rubyforge_project:
|
196
|
-
rubygems_version: 2.
|
196
|
+
rubygems_version: 2.4.5
|
197
197
|
signing_key:
|
198
198
|
specification_version: 4
|
199
199
|
summary: A (partial)implementation of the XMLENC specificiation
|