xml-kit 0.3.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +9 -0
- data/.github/workflows/ci.yml +41 -0
- data/.rubocop.yml +22 -5
- data/CHANGELOG.md +44 -21
- data/Gemfile.lock +102 -0
- data/LICENSE.txt +1 -1
- data/README.md +3 -5
- data/Rakefile +0 -1
- data/bin/audit +8 -0
- data/bin/setup +6 -4
- data/bin/style +8 -0
- data/bin/test +1 -10
- data/lib/xml/kit/certificate.rb +0 -2
- data/lib/xml/kit/crypto/oaep_cipher.rb +1 -1
- data/lib/xml/kit/crypto/rsa_cipher.rb +1 -1
- data/lib/xml/kit/crypto/symmetric_cipher.rb +1 -1
- data/lib/xml/kit/decryption.rb +4 -6
- data/lib/xml/kit/encrypted_data.rb +11 -13
- data/lib/xml/kit/encrypted_key.rb +9 -8
- data/lib/xml/kit/encryption.rb +7 -8
- data/lib/xml/kit/key_info/key_value.rb +2 -0
- data/lib/xml/kit/key_info/retrieval_method.rb +2 -0
- data/lib/xml/kit/key_info/rsa_key_value.rb +2 -0
- data/lib/xml/kit/key_info.rb +32 -1
- data/lib/xml/kit/key_pair.rb +4 -6
- data/lib/xml/kit/namespaces.rb +12 -12
- data/lib/xml/kit/self_signed_certificate.rb +4 -6
- data/lib/xml/kit/signature.rb +5 -7
- data/lib/xml/kit/signatures.rb +4 -6
- data/lib/xml/kit/templatable.rb +18 -13
- data/lib/xml/kit/version.rb +1 -1
- data/lib/xml/kit.rb +8 -2
- data/xml-kit.gemspec +6 -5
- metadata +35 -20
- data/.gitlab-ci.yml +0 -15
- data/.travis.yml +0 -11
- data/bin/cibuild +0 -21
- data/bin/lint +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72cba660557fbb9fc55640fc292587d0bb9efc0d07d36f2dd7a57a5981f189e3
|
4
|
+
data.tar.gz: da50becdadf74efbdd6ab390f2ce634870bd3e716f2beb8d843f6c1ef980ce5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f06dade4d5725222c16c26f2ac5063585d07e62d6f554f0428743a011d883a9a2c4fe812c56042201cd5ff11cb91b533c17d4de955d60e6aaff7539a8c6d0e6d
|
7
|
+
data.tar.gz: 771f4241d74091bd09b85dfbb2bd57675d6ab9e09b2ff2e766b730c017e94f1860675e4701cc9845e945771fb1297c13daa46b9bfd91944e03146eed0d8e316d
|
@@ -0,0 +1,41 @@
|
|
1
|
+
name: ci
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches: [main]
|
5
|
+
pull_request:
|
6
|
+
branches: [main]
|
7
|
+
jobs:
|
8
|
+
test:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
strategy:
|
11
|
+
matrix:
|
12
|
+
ruby-version: ['2.7', '3.0', '3.1']
|
13
|
+
steps:
|
14
|
+
- uses: actions/checkout@v2
|
15
|
+
- name: Set up Ruby
|
16
|
+
uses: ruby/setup-ruby@v1
|
17
|
+
with:
|
18
|
+
ruby-version: ${{ matrix.ruby-version }}
|
19
|
+
bundler-cache: true
|
20
|
+
- name: Running tests…
|
21
|
+
run: sh bin/test
|
22
|
+
style:
|
23
|
+
runs-on: ubuntu-latest
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
- uses: ruby/setup-ruby@v1
|
27
|
+
with:
|
28
|
+
ruby-version: '3.1'
|
29
|
+
bundler-cache: true
|
30
|
+
- name: Running style checks…
|
31
|
+
run: sh bin/style
|
32
|
+
audit:
|
33
|
+
runs-on: ubuntu-latest
|
34
|
+
steps:
|
35
|
+
- uses: actions/checkout@v2
|
36
|
+
- uses: ruby/setup-ruby@v1
|
37
|
+
with:
|
38
|
+
ruby-version: '2.7'
|
39
|
+
bundler-cache: true
|
40
|
+
- name: Running audit…
|
41
|
+
run: sh bin/audit
|
data/.rubocop.yml
CHANGED
@@ -9,7 +9,13 @@ AllCops:
|
|
9
9
|
- 'spec/fixtures/**/*'
|
10
10
|
- 'tmp/**/*'
|
11
11
|
- 'vendor/**/*'
|
12
|
-
TargetRubyVersion: 2.
|
12
|
+
TargetRubyVersion: 2.7
|
13
|
+
|
14
|
+
Layout/BlockAlignment:
|
15
|
+
EnforcedStyleAlignWith: start_of_line
|
16
|
+
Exclude:
|
17
|
+
- 'lib/**/*.builder'
|
18
|
+
- 'spec/**/*'
|
13
19
|
|
14
20
|
Layout/ClassStructure:
|
15
21
|
Enabled: true
|
@@ -30,11 +36,11 @@ Layout/ClassStructure:
|
|
30
36
|
Layout/EndOfLine:
|
31
37
|
EnforcedStyle: lf
|
32
38
|
|
33
|
-
Layout/
|
39
|
+
Layout/FirstArrayElementIndentation:
|
34
40
|
EnforcedStyle: consistent
|
35
41
|
|
36
|
-
Layout/
|
37
|
-
EnforcedStyle:
|
42
|
+
Layout/MultilineOperationIndentation:
|
43
|
+
EnforcedStyle: indented
|
38
44
|
|
39
45
|
Lint/AmbiguousBlockAssociation:
|
40
46
|
Exclude:
|
@@ -44,6 +50,10 @@ Lint/InterpolationCheck:
|
|
44
50
|
Exclude:
|
45
51
|
- 'spec/**/*.rb'
|
46
52
|
|
53
|
+
Metrics/AbcSize:
|
54
|
+
Exclude:
|
55
|
+
- 'lib/xml/kit/self_signed_certificate.rb'
|
56
|
+
|
47
57
|
Metrics/BlockLength:
|
48
58
|
Exclude:
|
49
59
|
- '**/**/*.builder'
|
@@ -56,7 +66,7 @@ Metrics/ModuleLength:
|
|
56
66
|
Exclude:
|
57
67
|
- 'spec/**/*.rb'
|
58
68
|
|
59
|
-
|
69
|
+
Layout/LineLength:
|
60
70
|
IgnoredPatterns: ['(\A|\s)#']
|
61
71
|
Exclude:
|
62
72
|
- 'spec/**/*.rb'
|
@@ -84,9 +94,16 @@ Style/TrailingCommaInHashLiteral:
|
|
84
94
|
RSpec/ExampleLength:
|
85
95
|
Max: 80
|
86
96
|
|
97
|
+
RSpec/LeakyConstantDeclaration:
|
98
|
+
Exclude:
|
99
|
+
- 'spec/xml/kit/templatable_spec.rb'
|
100
|
+
|
87
101
|
RSpec/MultipleExpectations:
|
88
102
|
Enabled: false
|
89
103
|
|
104
|
+
RSpec/MultipleMemoizedHelpers:
|
105
|
+
Enabled: false
|
106
|
+
|
90
107
|
RSpec/NamedSubject:
|
91
108
|
Enabled: false
|
92
109
|
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
Version 0.
|
1
|
+
Version 0.6.0
|
2
|
+
|
2
3
|
# Changelog
|
3
4
|
All notable changes to this project will be documented in this file.
|
4
5
|
|
@@ -6,8 +7,27 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
7
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
8
|
|
8
9
|
## [Unreleased]
|
10
|
+
|
11
|
+
## [0.6.0] - 2022-05-23
|
12
|
+
### Added
|
13
|
+
- Add support for Ruby 3.1
|
14
|
+
|
15
|
+
### Removed
|
16
|
+
- Drop support for Ruby 2.5
|
17
|
+
- Drop support for Ruby 2.6
|
18
|
+
|
19
|
+
## [0.5.0] - 2021-01-30
|
20
|
+
### Changed
|
21
|
+
- Minimum Ruby 2.5+
|
22
|
+
|
23
|
+
## [0.4.0] - 2019-04-30
|
24
|
+
### Added
|
25
|
+
- provide stable API for specifying the digest method and signature method.
|
26
|
+
|
9
27
|
### Changed
|
10
|
-
-
|
28
|
+
- drop support for ruby 2.2
|
29
|
+
- drop support for ruby 2.3
|
30
|
+
- use bundler 2.0
|
11
31
|
|
12
32
|
## [0.3.1] - 2019-04-01
|
13
33
|
### Changed
|
@@ -25,22 +45,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
25
45
|
- \_assign does not coerce values by default.
|
26
46
|
- errors are merged together instead of overwritten during attribute validation.
|
27
47
|
|
28
|
-
[Unreleased]: https://github.com/
|
29
|
-
[0.
|
30
|
-
[0.
|
31
|
-
[0.
|
32
|
-
[0.1
|
33
|
-
[0.
|
34
|
-
[0.
|
35
|
-
[0.1.
|
36
|
-
[0.1.
|
37
|
-
[0.1.
|
38
|
-
[0.1.
|
39
|
-
[0.1.
|
40
|
-
[0.1.
|
41
|
-
[0.1.
|
42
|
-
[0.1.
|
43
|
-
[0.1.
|
44
|
-
[0.1.
|
45
|
-
[0.1.
|
46
|
-
[0.1.
|
48
|
+
[Unreleased]: https://github.com/xlgmokha/xml-kit/compare/v0.6.0...HEAD
|
49
|
+
[0.6.0]: https://github.com/xlgmokha/xml-kit/compare/v0.5.0...v0.6.0
|
50
|
+
[0.5.0]: https://github.com/xlgmokha/xml-kit/compare/v0.4.0...v0.5.0
|
51
|
+
[0.4.0]: https://github.com/xlgmokha/xml-kit/compare/v0.3.1...v0.4.0
|
52
|
+
[0.3.1]: https://github.com/xlgmokha/xml-kit/compare/v0.3.0...v0.3.1
|
53
|
+
[0.3.0]: https://github.com/xlgmokha/xml-kit/compare/v0.2.0...v0.3.0
|
54
|
+
[0.2.0]: https://github.com/xlgmokha/xml-kit/compare/v0.1.14...v0.2.0
|
55
|
+
[0.1.14]: https://github.com/xlgmokha/xml-kit/compare/v0.1.13...v0.1.14
|
56
|
+
[0.1.13]: https://github.com/xlgmokha/xml-kit/compare/v0.1.12...v0.1.13
|
57
|
+
[0.1.12]: https://github.com/xlgmokha/xml-kit/compare/v0.1.11...v0.1.12
|
58
|
+
[0.1.11]: https://github.com/xlgmokha/xml-kit/compare/v0.1.10...v0.1.11
|
59
|
+
[0.1.10]: https://github.com/xlgmokha/xml-kit/compare/v0.1.9...v0.1.10
|
60
|
+
[0.1.9]: https://github.com/xlgmokha/xml-kit/compare/v0.1.8...v0.1.9
|
61
|
+
[0.1.8]: https://github.com/xlgmokha/xml-kit/compare/v0.1.7...v0.1.8
|
62
|
+
[0.1.7]: https://github.com/xlgmokha/xml-kit/compare/v0.1.6...v0.1.7
|
63
|
+
[0.1.6]: https://github.com/xlgmokha/xml-kit/compare/v0.1.5...v0.1.6
|
64
|
+
[0.1.5]: https://github.com/xlgmokha/xml-kit/compare/v0.1.4...v0.1.5
|
65
|
+
[0.1.4]: https://github.com/xlgmokha/xml-kit/compare/v0.1.3...v0.1.4
|
66
|
+
[0.1.3]: https://github.com/xlgmokha/xml-kit/compare/v0.1.1...v0.1.3
|
67
|
+
[0.1.1]: https://github.com/xlgmokha/xml-kit/compare/v0.1.1...v0.1.1
|
68
|
+
[0.1.1]: https://github.com/xlgmokha/xml-kit/compare/v0.1.0...v0.1.1
|
69
|
+
[0.1.0]: https://github.com/xlgmokha/xml-kit/compare/v0.1.0...v0.1.0
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
xml-kit (0.6.0)
|
5
|
+
activemodel (>= 4.2.0)
|
6
|
+
builder (~> 3.2)
|
7
|
+
nokogiri (~> 1.10)
|
8
|
+
tilt (>= 1.4.1)
|
9
|
+
xmldsig (~> 0.6)
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: https://rubygems.org/
|
13
|
+
specs:
|
14
|
+
activemodel (7.0.3)
|
15
|
+
activesupport (= 7.0.3)
|
16
|
+
activesupport (7.0.3)
|
17
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
18
|
+
i18n (>= 1.6, < 2)
|
19
|
+
minitest (>= 5.1)
|
20
|
+
tzinfo (~> 2.0)
|
21
|
+
ast (2.4.2)
|
22
|
+
builder (3.2.4)
|
23
|
+
bundler-audit (0.9.1)
|
24
|
+
bundler (>= 1.2.0, < 3)
|
25
|
+
thor (~> 1.0)
|
26
|
+
concurrent-ruby (1.1.10)
|
27
|
+
diff-lcs (1.5.0)
|
28
|
+
docile (1.4.0)
|
29
|
+
ffaker (2.21.0)
|
30
|
+
i18n (1.10.0)
|
31
|
+
concurrent-ruby (~> 1.0)
|
32
|
+
mini_portile2 (2.8.0)
|
33
|
+
minitest (5.15.0)
|
34
|
+
nokogiri (1.13.6)
|
35
|
+
mini_portile2 (~> 2.8.0)
|
36
|
+
racc (~> 1.4)
|
37
|
+
parallel (1.22.1)
|
38
|
+
parser (3.1.2.0)
|
39
|
+
ast (~> 2.4.1)
|
40
|
+
racc (1.6.0)
|
41
|
+
rainbow (3.1.1)
|
42
|
+
rake (13.0.6)
|
43
|
+
regexp_parser (2.4.0)
|
44
|
+
rexml (3.2.5)
|
45
|
+
rspec (3.11.0)
|
46
|
+
rspec-core (~> 3.11.0)
|
47
|
+
rspec-expectations (~> 3.11.0)
|
48
|
+
rspec-mocks (~> 3.11.0)
|
49
|
+
rspec-core (3.11.0)
|
50
|
+
rspec-support (~> 3.11.0)
|
51
|
+
rspec-expectations (3.11.0)
|
52
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
53
|
+
rspec-support (~> 3.11.0)
|
54
|
+
rspec-mocks (3.11.1)
|
55
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
56
|
+
rspec-support (~> 3.11.0)
|
57
|
+
rspec-support (3.11.0)
|
58
|
+
rubocop (0.93.1)
|
59
|
+
parallel (~> 1.10)
|
60
|
+
parser (>= 2.7.1.5)
|
61
|
+
rainbow (>= 2.2.2, < 4.0)
|
62
|
+
regexp_parser (>= 1.8)
|
63
|
+
rexml
|
64
|
+
rubocop-ast (>= 0.6.0)
|
65
|
+
ruby-progressbar (~> 1.7)
|
66
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
67
|
+
rubocop-ast (1.18.0)
|
68
|
+
parser (>= 3.1.1.0)
|
69
|
+
rubocop-rspec (1.44.1)
|
70
|
+
rubocop (~> 0.87)
|
71
|
+
rubocop-ast (>= 0.7.1)
|
72
|
+
ruby-progressbar (1.11.0)
|
73
|
+
simplecov (0.21.2)
|
74
|
+
docile (~> 1.1)
|
75
|
+
simplecov-html (~> 0.11)
|
76
|
+
simplecov_json_formatter (~> 0.1)
|
77
|
+
simplecov-html (0.12.3)
|
78
|
+
simplecov_json_formatter (0.1.4)
|
79
|
+
thor (1.2.1)
|
80
|
+
tilt (2.0.10)
|
81
|
+
tzinfo (2.0.4)
|
82
|
+
concurrent-ruby (~> 1.0)
|
83
|
+
unicode-display_width (1.8.0)
|
84
|
+
xmldsig (0.6.6)
|
85
|
+
nokogiri (>= 1.6.8, < 2.0.0)
|
86
|
+
|
87
|
+
PLATFORMS
|
88
|
+
ruby
|
89
|
+
|
90
|
+
DEPENDENCIES
|
91
|
+
bundler (~> 2.0)
|
92
|
+
bundler-audit (~> 0.6)
|
93
|
+
ffaker (~> 2.7)
|
94
|
+
rake (~> 13.0)
|
95
|
+
rspec (~> 3.0)
|
96
|
+
rubocop (~> 0.52)
|
97
|
+
rubocop-rspec (~> 1.22)
|
98
|
+
simplecov (~> 0.21.2)
|
99
|
+
xml-kit!
|
100
|
+
|
101
|
+
BUNDLED WITH
|
102
|
+
2.2.7
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# Xml::Kit
|
2
2
|
|
3
|
+
[![Build Status](https://github.com/xlgmokha/xml-kit/workflows/ci/badge.svg)](https://github.com/xlgmokha/xml-kit/actions)
|
3
4
|
[![Gem Version](https://badge.fury.io/rb/xml-kit.svg)](https://rubygems.org/gems/xml-kit)
|
4
|
-
[![Code Climate](https://codeclimate.com/github/saml-kit/xml-kit.svg)](https://codeclimate.com/github/saml-kit/xml-kit)
|
5
|
-
[![Build Status](https://travis-ci.org/saml-kit/xml-kit.svg?branch=master)](https://travis-ci.org/saml-kit/xml-kit)
|
6
|
-
[![Security](https://hakiri.io/github/saml-kit/xml-kit/master.svg)](https://hakiri.io/github/saml-kit/xml-kit/master)
|
7
5
|
|
8
6
|
Xml::Kit is a toolkit for working with XML. It supports adding [XML Digital Signatures](https://www.w3.org/TR/xmldsig-core/)
|
9
7
|
and [XML Encryption](https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html).
|
@@ -113,13 +111,13 @@ This will produce something like the following:
|
|
113
111
|
|
114
112
|
## Development
|
115
113
|
|
116
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `
|
114
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
117
115
|
|
118
116
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
119
117
|
|
120
118
|
## Contributing
|
121
119
|
|
122
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
120
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/xlgmokha/xml-kit.
|
123
121
|
|
124
122
|
## License
|
125
123
|
|
data/Rakefile
CHANGED
data/bin/audit
ADDED
data/bin/setup
CHANGED
data/bin/style
ADDED
data/bin/test
CHANGED
@@ -1,17 +1,8 @@
|
|
1
1
|
#!/bin/sh
|
2
2
|
|
3
|
-
# script/test: Run test suite for application. Optionally pass in a path to an
|
4
|
-
# individual test file to run a single test.
|
5
|
-
|
6
|
-
|
7
3
|
set -e
|
8
|
-
|
9
|
-
cd "$(dirname "$0")/.."
|
10
|
-
|
11
4
|
[ -z "$DEBUG" ] || set -x
|
12
5
|
|
13
|
-
|
14
|
-
bin/setup
|
6
|
+
cd "$(dirname "$0")/.."
|
15
7
|
|
16
|
-
echo [$(date "+%H:%M:%S")] "==> Running tests…"
|
17
8
|
bundle exec rake spec
|
data/lib/xml/kit/certificate.rb
CHANGED
@@ -7,9 +7,7 @@ module Xml
|
|
7
7
|
# {include:file:spec/xml/kit/certificate_spec.rb}
|
8
8
|
class Certificate
|
9
9
|
include Templatable
|
10
|
-
# rubocop:disable Metrics/LineLength
|
11
10
|
BASE64_FORMAT = %r(\A([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?\Z).freeze
|
12
|
-
# rubocop:enable Metrics/LineLength
|
13
11
|
BEGIN_CERT = /-----BEGIN CERTIFICATE-----/.freeze
|
14
12
|
END_CERT = /-----END CERTIFICATE-----/.freeze
|
15
13
|
# The use can be `:signing` or `:encryption`. Use `nil` for both.
|
@@ -4,7 +4,7 @@ module Xml
|
|
4
4
|
module Kit
|
5
5
|
module Crypto
|
6
6
|
class SymmetricCipher
|
7
|
-
DEFAULT_ALGORITHM = "#{::Xml::Kit::Namespaces::XMLENC}aes256-cbc"
|
7
|
+
DEFAULT_ALGORITHM = "#{::Xml::Kit::Namespaces::XMLENC}aes256-cbc"
|
8
8
|
ALGORITHMS = {
|
9
9
|
"#{::Xml::Kit::Namespaces::XMLENC}tripledes-cbc" => 'DES-EDE3-CBC',
|
10
10
|
"#{::Xml::Kit::Namespaces::XMLENC}aes128-cbc" => 'AES-128-CBC',
|
data/lib/xml/kit/decryption.rb
CHANGED
@@ -56,12 +56,10 @@ module Xml
|
|
56
56
|
def symmetric_key_from(encrypted_key, attempts = private_keys.count)
|
57
57
|
cipher, algorithm = cipher_and_algorithm_from(encrypted_key)
|
58
58
|
private_keys.each do |private_key|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
raise if attempts.zero?
|
64
|
-
end
|
59
|
+
attempts -= 1
|
60
|
+
return to_plaintext(cipher, private_key, algorithm)
|
61
|
+
rescue OpenSSL::PKey::RSAError
|
62
|
+
raise if attempts.zero?
|
65
63
|
end
|
66
64
|
raise DecryptionError, private_keys
|
67
65
|
end
|
@@ -12,22 +12,20 @@ module Xml
|
|
12
12
|
attr_reader :symmetric_cipher
|
13
13
|
attr_reader :symmetric_cipher_value
|
14
14
|
|
15
|
-
def initialize(
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
key_info: nil
|
21
|
-
)
|
15
|
+
def initialize(raw_xml,
|
16
|
+
id: Id.generate,
|
17
|
+
symmetric_cipher: nil,
|
18
|
+
asymmetric_cipher: nil,
|
19
|
+
key_info: nil)
|
22
20
|
@id = id
|
23
|
-
@symmetric_cipher = symmetric_cipher
|
21
|
+
@symmetric_cipher = symmetric_cipher ||
|
22
|
+
key_info.try(:symmetric_cipher) ||
|
23
|
+
Xml::Kit::Crypto::SymmetricCipher.new
|
24
24
|
@symmetric_cipher_value = Base64.strict_encode64(
|
25
|
-
symmetric_cipher.encrypt(raw_xml)
|
26
|
-
)
|
27
|
-
@key_info = key_info || create_key_info_for(
|
28
|
-
symmetric_cipher,
|
29
|
-
asymmetric_cipher
|
25
|
+
@symmetric_cipher.encrypt(raw_xml)
|
30
26
|
)
|
27
|
+
@key_info = key_info ||
|
28
|
+
create_key_info_for(@symmetric_cipher, asymmetric_cipher)
|
31
29
|
end
|
32
30
|
|
33
31
|
def to_xml(xml: ::Builder::XmlMarkup.new)
|
@@ -14,15 +14,16 @@ module Xml
|
|
14
14
|
attr_reader :asymmetric_cipher, :symmetric_cipher
|
15
15
|
attr_accessor :key_info
|
16
16
|
|
17
|
-
def initialize(
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
key_info: nil
|
22
|
-
)
|
17
|
+
def initialize(id: Id.generate,
|
18
|
+
asymmetric_cipher: nil,
|
19
|
+
symmetric_cipher: nil,
|
20
|
+
key_info: nil)
|
23
21
|
@id = id
|
24
|
-
@asymmetric_cipher = asymmetric_cipher
|
25
|
-
|
22
|
+
@asymmetric_cipher = asymmetric_cipher ||
|
23
|
+
key_info.try(:asymmetric_cipher)
|
24
|
+
@symmetric_cipher = symmetric_cipher ||
|
25
|
+
key_info.try(:symmetric_cipher) ||
|
26
|
+
Xml::Kit::Crypto::SymmetricCipher.new
|
26
27
|
@key_info = key_info
|
27
28
|
end
|
28
29
|
|
data/lib/xml/kit/encryption.rb
CHANGED
@@ -4,21 +4,20 @@ module Xml
|
|
4
4
|
module Kit
|
5
5
|
# @deprecated Use {#Xml::Kit::EncryptedData} class instead of this
|
6
6
|
class Encryption < EncryptedData
|
7
|
+
DEFAULT_SYMMETRIC = Crypto::SymmetricCipher::DEFAULT_ALGORITHM
|
8
|
+
DEFAULT_ASYMMETRIC = Crypto::RsaCipher::ALGORITHM
|
9
|
+
|
7
10
|
attr_reader :asymmetric_algorithm
|
8
11
|
attr_reader :symmetric_algorithm
|
9
12
|
attr_reader :symmetric_cipher_value
|
10
13
|
attr_reader :key_info
|
11
14
|
|
12
|
-
def initialize(
|
13
|
-
|
14
|
-
|
15
|
-
symmetric_algorithm: Crypto::SymmetricCipher::DEFAULT_ALGORITHM,
|
16
|
-
asymmetric_algorithm: Crypto::RsaCipher::ALGORITHM,
|
17
|
-
key_info: nil
|
18
|
-
)
|
15
|
+
def initialize(raw_xml, public_key,
|
16
|
+
symmetric_algorithm: DEFAULT_SYMMETRIC,
|
17
|
+
asymmetric_algorithm: DEFAULT_ASYMMETRIC, key_info: nil)
|
19
18
|
@symmetric_algorithm = symmetric_algorithm
|
20
19
|
@asymmetric_algorithm = asymmetric_algorithm
|
21
|
-
Xml::Kit.deprecate('Encryption
|
20
|
+
Xml::Kit.deprecate('Encryption', alternative: 'EncryptedData')
|
22
21
|
super(raw_xml,
|
23
22
|
symmetric_cipher: symmetric(symmetric_algorithm),
|
24
23
|
asymmetric_cipher: asymmetric(asymmetric_algorithm, public_key),
|
data/lib/xml/kit/key_info.rb
CHANGED
@@ -16,11 +16,31 @@ module Xml
|
|
16
16
|
attr_accessor :x509_data
|
17
17
|
attr_accessor :encrypted_key
|
18
18
|
|
19
|
-
def initialize(x509: nil)
|
19
|
+
def initialize(x509: nil, encrypted_key: nil)
|
20
|
+
@encrypted_key = encrypted_key
|
20
21
|
@x509_data = x509
|
21
22
|
yield self if block_given?
|
22
23
|
end
|
23
24
|
|
25
|
+
def asymmetric_cipher(algorithm: Crypto::RsaCipher::ALGORITHM)
|
26
|
+
return encrypted_key.asymmetric_cipher if encrypted_key
|
27
|
+
|
28
|
+
if x509_data
|
29
|
+
return Crypto.cipher_for(
|
30
|
+
derive_algorithm_from(x509_data.public_key),
|
31
|
+
x509_data.public_key
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
super(algorithm: algorithm)
|
36
|
+
end
|
37
|
+
|
38
|
+
def symmetric_cipher
|
39
|
+
return super if encrypted_key.nil?
|
40
|
+
|
41
|
+
encrypted_key.symmetric_cipher
|
42
|
+
end
|
43
|
+
|
24
44
|
def key_value
|
25
45
|
@key_value ||= KeyValue.new
|
26
46
|
end
|
@@ -35,6 +55,17 @@ module Xml
|
|
35
55
|
|
36
56
|
Base64.strict_encode64(ski.value)
|
37
57
|
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def derive_algorithm_from(key)
|
62
|
+
case key
|
63
|
+
when OpenSSL::PKey::RSA
|
64
|
+
"#{::Xml::Kit::Namespaces::XMLENC}rsa-1_5"
|
65
|
+
else
|
66
|
+
raise ::Xml::Kit::Error, "#{key.try(:class)} is not supported"
|
67
|
+
end
|
68
|
+
end
|
38
69
|
end
|
39
70
|
end
|
40
71
|
end
|
data/lib/xml/kit/key_pair.rb
CHANGED
@@ -30,12 +30,10 @@ module Xml
|
|
30
30
|
# @param use [Symbol] Can be either `:signing` or `:encryption`.
|
31
31
|
# @param passphrase [String] the passphrase to use to encrypt the private key.
|
32
32
|
# @param algorithm [String] the symmetric algorithm to use for encrypting the private key.
|
33
|
-
def self.generate(
|
34
|
-
|
35
|
-
|
36
|
-
algorithm
|
37
|
-
)
|
38
|
-
algorithm = ::Xml::Kit::Crypto::SymmetricCipher::ALGORITHMS[algorithm]
|
33
|
+
def self.generate(use:,
|
34
|
+
passphrase: SecureRandom.uuid,
|
35
|
+
algorithm: Crypto::SymmetricCipher::DEFAULT_ALGORITHM)
|
36
|
+
algorithm = Crypto::SymmetricCipher::ALGORITHMS[algorithm]
|
39
37
|
certificate, private_key = SelfSignedCertificate.new.create(
|
40
38
|
algorithm: algorithm,
|
41
39
|
passphrase: passphrase
|
data/lib/xml/kit/namespaces.rb
CHANGED
@@ -3,18 +3,18 @@
|
|
3
3
|
module Xml
|
4
4
|
module Kit
|
5
5
|
module Namespaces
|
6
|
-
CANONICALIZATION = 'http://www.w3.org/2001/10/xml-exc-c14n#'
|
7
|
-
ENVELOPED_SIG = 'http://www.w3.org/2000/09/xmldsig#enveloped-signature'
|
8
|
-
RSA_SHA1 = 'http://www.w3.org/2000/09/xmldsig#rsa-sha1'
|
9
|
-
RSA_SHA256 = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'
|
10
|
-
RSA_SHA384 = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
|
11
|
-
RSA_SHA512 = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512'
|
12
|
-
SHA1 = 'http://www.w3.org/2000/09/xmldsig#sha1'
|
13
|
-
SHA256 = 'http://www.w3.org/2001/04/xmlenc#sha256'
|
14
|
-
SHA384 = 'http://www.w3.org/2001/04/xmldsig-more#sha384'
|
15
|
-
SHA512 = 'http://www.w3.org/2001/04/xmlenc#sha512'
|
16
|
-
XMLDSIG = 'http://www.w3.org/2000/09/xmldsig#'
|
17
|
-
XMLENC = 'http://www.w3.org/2001/04/xmlenc#'
|
6
|
+
CANONICALIZATION = 'http://www.w3.org/2001/10/xml-exc-c14n#'
|
7
|
+
ENVELOPED_SIG = 'http://www.w3.org/2000/09/xmldsig#enveloped-signature'
|
8
|
+
RSA_SHA1 = 'http://www.w3.org/2000/09/xmldsig#rsa-sha1'
|
9
|
+
RSA_SHA256 = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'
|
10
|
+
RSA_SHA384 = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
|
11
|
+
RSA_SHA512 = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512'
|
12
|
+
SHA1 = 'http://www.w3.org/2000/09/xmldsig#sha1'
|
13
|
+
SHA256 = 'http://www.w3.org/2001/04/xmlenc#sha256'
|
14
|
+
SHA384 = 'http://www.w3.org/2001/04/xmldsig-more#sha384'
|
15
|
+
SHA512 = 'http://www.w3.org/2001/04/xmlenc#sha512'
|
16
|
+
XMLDSIG = 'http://www.w3.org/2000/09/xmldsig#'
|
17
|
+
XMLENC = 'http://www.w3.org/2001/04/xmlenc#'
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -3,13 +3,11 @@
|
|
3
3
|
module Xml
|
4
4
|
module Kit
|
5
5
|
class SelfSignedCertificate
|
6
|
-
SUBJECT = '/C=CA/ST=AB/L=Calgary/O=XmlKit/OU=XmlKit/CN=XmlKit'
|
6
|
+
SUBJECT = '/C=CA/ST=AB/L=Calgary/O=XmlKit/OU=XmlKit/CN=XmlKit'
|
7
7
|
|
8
|
-
def create(
|
9
|
-
|
10
|
-
|
11
|
-
key_pair: OpenSSL::PKey::RSA.new(2048)
|
12
|
-
)
|
8
|
+
def create(algorithm: 'AES-256-CBC',
|
9
|
+
passphrase: nil,
|
10
|
+
key_pair: OpenSSL::PKey::RSA.new(2048))
|
13
11
|
certificate = certificate_for(key_pair.public_key)
|
14
12
|
certificate.sign(key_pair, OpenSSL::Digest::SHA256.new)
|
15
13
|
[certificate.to_pem, export(key_pair, algorithm, passphrase)]
|
data/lib/xml/kit/signature.rb
CHANGED
@@ -15,7 +15,7 @@ module Xml
|
|
15
15
|
SHA512: 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512',
|
16
16
|
}.freeze
|
17
17
|
DIGEST_METHODS = {
|
18
|
-
SHA1: 'http://www.w3.org/2000/09/xmldsig#
|
18
|
+
SHA1: 'http://www.w3.org/2000/09/xmldsig#sha1',
|
19
19
|
SHA224: 'http://www.w3.org/2001/04/xmldsig-more#sha224',
|
20
20
|
SHA256: 'http://www.w3.org/2001/04/xmlenc#sha256',
|
21
21
|
SHA384: 'http://www.w3.org/2001/04/xmldsig-more#sha384',
|
@@ -27,12 +27,10 @@ module Xml
|
|
27
27
|
attr_reader :reference_id
|
28
28
|
attr_reader :signature_method
|
29
29
|
|
30
|
-
def initialize(
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
certificate:
|
35
|
-
)
|
30
|
+
def initialize(reference_id,
|
31
|
+
signature_method: :SH256,
|
32
|
+
digest_method: :SHA256,
|
33
|
+
certificate:)
|
36
34
|
@certificate = certificate
|
37
35
|
@digest_method = DIGEST_METHODS[digest_method]
|
38
36
|
@reference_id = reference_id
|
data/lib/xml/kit/signatures.rb
CHANGED
@@ -39,12 +39,10 @@ module Xml
|
|
39
39
|
end
|
40
40
|
|
41
41
|
# @!visibility private
|
42
|
-
def self.sign(
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
digest_method: :SHA256
|
47
|
-
)
|
42
|
+
def self.sign(xml: ::Builder::XmlMarkup.new,
|
43
|
+
key_pair:,
|
44
|
+
signature_method: :SHA256,
|
45
|
+
digest_method: :SHA256)
|
48
46
|
signatures = new(
|
49
47
|
key_pair: key_pair,
|
50
48
|
signature_method: signature_method,
|
data/lib/xml/kit/templatable.rb
CHANGED
@@ -17,6 +17,14 @@ module Xml
|
|
17
17
|
# The [Xml::Kit::Certificate] that contains the public key to use for encrypting the document.
|
18
18
|
attr_accessor :encryption_certificate
|
19
19
|
|
20
|
+
# Allows you to specify the digest method algorithm. (Default: SHA256)
|
21
|
+
# A list of digest methods can be found in [Xml::Kit::Signature].
|
22
|
+
attr_accessor :digest_method
|
23
|
+
|
24
|
+
# Allows you to specify the signature method algorithm. (Default: SHA256)
|
25
|
+
# A list of signature methods can be found in [Xml::Kit::Signature].
|
26
|
+
attr_accessor :signature_method
|
27
|
+
|
20
28
|
# Returns the generated XML document with an XML Digital Signature and XML Encryption.
|
21
29
|
def to_xml(xml: ::Builder::XmlMarkup.new, pretty: false)
|
22
30
|
result = signatures.complete(render(self, xml: xml))
|
@@ -28,11 +36,12 @@ module Xml
|
|
28
36
|
# @since 0.3.0
|
29
37
|
# @param xml [Builder::XmlMarkup] the xml builder instance
|
30
38
|
# @param id [String] the id of EncryptedKey element
|
31
|
-
def encrypt_key_for(xml:, id:)
|
39
|
+
def encrypt_key_for(xml:, id:, key_info: nil)
|
32
40
|
::Xml::Kit::EncryptedKey.new(
|
33
41
|
id: id,
|
34
42
|
asymmetric_cipher: asymmetric_cipher,
|
35
|
-
symmetric_cipher: symmetric_cipher
|
43
|
+
symmetric_cipher: symmetric_cipher,
|
44
|
+
key_info: key_info
|
36
45
|
).to_xml(xml: xml)
|
37
46
|
end
|
38
47
|
|
@@ -67,6 +76,8 @@ module Xml
|
|
67
76
|
# @abstract
|
68
77
|
# @since 0.3.0
|
69
78
|
def asymmetric_cipher(algorithm: Crypto::RsaCipher::ALGORITHM)
|
79
|
+
raise Xml::Kit::Error, 'encryption_certificate is not specified.' unless encryption_certificate
|
80
|
+
|
70
81
|
@asymmetric_cipher ||= Crypto.cipher_for(
|
71
82
|
algorithm,
|
72
83
|
encryption_certificate.public_key
|
@@ -94,9 +105,11 @@ module Xml
|
|
94
105
|
# Allows you to specify which key pair to use for generating an XML digital signature.
|
95
106
|
#
|
96
107
|
# @param key_pair [Xml::Kit::KeyPair] the key pair to use for signing.
|
97
|
-
def sign_with(key_pair)
|
108
|
+
def sign_with(key_pair, signature_method: :SHA256, digest_method: :SHA256)
|
98
109
|
self.signing_key_pair = key_pair
|
99
110
|
self.embed_signature = true
|
111
|
+
self.signature_method = signature_method
|
112
|
+
self.digest_method = digest_method
|
100
113
|
signatures.sign_with(key_pair)
|
101
114
|
end
|
102
115
|
|
@@ -118,19 +131,11 @@ module Xml
|
|
118
131
|
def signatures
|
119
132
|
@signatures ||= ::Xml::Kit::Signatures.new(
|
120
133
|
key_pair: signing_key_pair,
|
121
|
-
digest_method: digest_method,
|
122
|
-
signature_method: signature_method
|
134
|
+
digest_method: digest_method || :SHA256,
|
135
|
+
signature_method: signature_method || :SHA256
|
123
136
|
)
|
124
137
|
end
|
125
138
|
|
126
|
-
def digest_method
|
127
|
-
:SHA256
|
128
|
-
end
|
129
|
-
|
130
|
-
def signature_method
|
131
|
-
:SHA256
|
132
|
-
end
|
133
|
-
|
134
139
|
# @!visibility private
|
135
140
|
def encrypt?
|
136
141
|
encrypt && encryption_certificate
|
data/lib/xml/kit/version.rb
CHANGED
data/lib/xml/kit.rb
CHANGED
@@ -35,6 +35,8 @@ require 'xml/kit/version'
|
|
35
35
|
|
36
36
|
module Xml
|
37
37
|
module Kit
|
38
|
+
class Error < StandardError; end
|
39
|
+
|
38
40
|
class << self
|
39
41
|
def logger
|
40
42
|
@logger ||= Logger.new(STDOUT)
|
@@ -42,9 +44,13 @@ module Xml
|
|
42
44
|
|
43
45
|
attr_writer :logger
|
44
46
|
|
45
|
-
def deprecate(
|
47
|
+
def deprecate(name, alternative: nil)
|
46
48
|
@deprecation ||= ActiveSupport::Deprecation.new('1.0.0', 'xml-kit')
|
47
|
-
|
49
|
+
if alternative
|
50
|
+
@deprecation.deprecation_warning(name, "Use `#{alternative}` instead")
|
51
|
+
else
|
52
|
+
@deprecation.deprecation_warning(name)
|
53
|
+
end
|
48
54
|
end
|
49
55
|
end
|
50
56
|
end
|
data/xml-kit.gemspec
CHANGED
@@ -12,9 +12,9 @@ Gem::Specification.new do |spec|
|
|
12
12
|
|
13
13
|
spec.summary = 'A simple toolkit for working with XML.'
|
14
14
|
spec.description = 'A simple toolkit for working with XML.'
|
15
|
-
spec.homepage = 'https://github.com/
|
15
|
+
spec.homepage = 'https://github.com/xlgmokha/xml-kit'
|
16
16
|
spec.license = 'MIT'
|
17
|
-
spec.required_ruby_version = '>= 2.
|
17
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
|
18
18
|
|
19
19
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
20
|
f.match(%r{^(test|spec|features)/})
|
@@ -26,14 +26,15 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_dependency 'activemodel', '>= 4.2.0'
|
28
28
|
spec.add_dependency 'builder', '~> 3.2'
|
29
|
-
spec.add_dependency 'nokogiri', '
|
29
|
+
spec.add_dependency 'nokogiri', '~> 1.10'
|
30
30
|
spec.add_dependency 'tilt', '>= 1.4.1'
|
31
31
|
spec.add_dependency 'xmldsig', '~> 0.6'
|
32
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
32
33
|
spec.add_development_dependency 'bundler-audit', '~> 0.6'
|
33
34
|
spec.add_development_dependency 'ffaker', '~> 2.7'
|
34
|
-
spec.add_development_dependency 'rake', '~>
|
35
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
35
36
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
36
37
|
spec.add_development_dependency 'rubocop', '~> 0.52'
|
37
38
|
spec.add_development_dependency 'rubocop-rspec', '~> 1.22'
|
38
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
39
|
+
spec.add_development_dependency 'simplecov', '~> 0.21.2'
|
39
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xml-kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mo khan
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -42,16 +42,16 @@ dependencies:
|
|
42
42
|
name: nokogiri
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: '1.10'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: '1.10'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: tilt
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.6'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: bundler-audit
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +128,14 @@ dependencies:
|
|
114
128
|
requirements:
|
115
129
|
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
131
|
+
version: '13.0'
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
138
|
+
version: '13.0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: rspec
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +184,14 @@ dependencies:
|
|
170
184
|
requirements:
|
171
185
|
- - "~>"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
187
|
+
version: 0.21.2
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.
|
194
|
+
version: 0.21.2
|
181
195
|
description: A simple toolkit for working with XML.
|
182
196
|
email:
|
183
197
|
- mo@mokhan.ca
|
@@ -185,20 +199,21 @@ executables: []
|
|
185
199
|
extensions: []
|
186
200
|
extra_rdoc_files: []
|
187
201
|
files:
|
202
|
+
- ".github/dependabot.yml"
|
203
|
+
- ".github/workflows/ci.yml"
|
188
204
|
- ".gitignore"
|
189
|
-
- ".gitlab-ci.yml"
|
190
205
|
- ".rspec"
|
191
206
|
- ".rubocop.yml"
|
192
|
-
- ".travis.yml"
|
193
207
|
- CHANGELOG.md
|
194
208
|
- Gemfile
|
209
|
+
- Gemfile.lock
|
195
210
|
- LICENSE.txt
|
196
211
|
- README.md
|
197
212
|
- Rakefile
|
198
|
-
- bin/
|
213
|
+
- bin/audit
|
199
214
|
- bin/console
|
200
|
-
- bin/lint
|
201
215
|
- bin/setup
|
216
|
+
- bin/style
|
202
217
|
- bin/test
|
203
218
|
- lib/xml-kit.rb
|
204
219
|
- lib/xml/kit.rb
|
@@ -238,12 +253,12 @@ files:
|
|
238
253
|
- lib/xml/kit/templates/signature.builder
|
239
254
|
- lib/xml/kit/version.rb
|
240
255
|
- xml-kit.gemspec
|
241
|
-
homepage: https://github.com/
|
256
|
+
homepage: https://github.com/xlgmokha/xml-kit
|
242
257
|
licenses:
|
243
258
|
- MIT
|
244
259
|
metadata:
|
245
260
|
yard.run: yri
|
246
|
-
post_install_message:
|
261
|
+
post_install_message:
|
247
262
|
rdoc_options: []
|
248
263
|
require_paths:
|
249
264
|
- lib
|
@@ -251,15 +266,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
251
266
|
requirements:
|
252
267
|
- - ">="
|
253
268
|
- !ruby/object:Gem::Version
|
254
|
-
version: 2.
|
269
|
+
version: 2.7.0
|
255
270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
256
271
|
requirements:
|
257
272
|
- - ">="
|
258
273
|
- !ruby/object:Gem::Version
|
259
274
|
version: '0'
|
260
275
|
requirements: []
|
261
|
-
rubygems_version: 3.
|
262
|
-
signing_key:
|
276
|
+
rubygems_version: 3.3.13
|
277
|
+
signing_key:
|
263
278
|
specification_version: 4
|
264
279
|
summary: A simple toolkit for working with XML.
|
265
280
|
test_files: []
|
data/.gitlab-ci.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
image: ruby:2.2
|
2
|
-
|
3
|
-
before_script:
|
4
|
-
- apt-get update && apt-get install -y locales
|
5
|
-
- echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
|
6
|
-
- locale-gen
|
7
|
-
- export LC_ALL=en_US.UTF-8
|
8
|
-
|
9
|
-
rspec:
|
10
|
-
script:
|
11
|
-
- bin/cibuild
|
12
|
-
|
13
|
-
lint:
|
14
|
-
script:
|
15
|
-
- bin/lint
|
data/.travis.yml
DELETED
data/bin/cibuild
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
|
3
|
-
# script/cibuild: Setup environment for CI to run tests. This is primarily
|
4
|
-
# designed to run on the continuous integration server.
|
5
|
-
|
6
|
-
set -e
|
7
|
-
|
8
|
-
cd "$(dirname "$0")/.."
|
9
|
-
|
10
|
-
echo [$(date "+%H:%M:%S")] "==> Started at…"
|
11
|
-
|
12
|
-
# GC customizations
|
13
|
-
export RUBY_GC_MALLOC_LIMIT=79000000
|
14
|
-
export RUBY_GC_HEAP_INIT_SLOTS=800000
|
15
|
-
export RUBY_HEAP_FREE_MIN=100000
|
16
|
-
export RUBY_HEAP_SLOTS_INCREMENT=400000
|
17
|
-
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
|
18
|
-
|
19
|
-
ruby -v
|
20
|
-
gem install bundler --conservative
|
21
|
-
bin/test
|