nokogiri-xmlsec-instructure 0.9.6 → 0.10.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c07223507738529c34fd27ff24c166210d696fe53cc70abe02f93990a2ae0ff3
4
- data.tar.gz: c16cb38b56a47c97f5db81801e1f82523492d3924c6ca529a4123e7301415b85
3
+ metadata.gz: 81d08ea19b4230b07f26533b8dc8d556a889e207a2a6194575231c5cf0aae318
4
+ data.tar.gz: '09595d365865a363d7395dec3289976fb852bf8dad138e497b40d1138f486083'
5
5
  SHA512:
6
- metadata.gz: 55e33e2e79a14965296265d4498572c367c2fcae18ff07c82cd39a987a76760f19e988ee3e7e39d47d240b6952feead3e56744f03a0ac3b32cb7684a7848c450
7
- data.tar.gz: 8afb1ff7ee7cab8861c3d30f396d7948b8897e2d49dbcc4b83beb8a0b870ef29c1b88361a1a9e915661f0bf3a862d69f7d4bd91e03cf6820406d24f5d745ac0a
6
+ metadata.gz: 0bf88cdf158f4766183b1e82bdcd4d68411caa0542773f5327a1d2cf74f04c3e7444a446d8bb3088cac4be596d2a61ffcdec85ca781a8078d00a7690c0c773a0
7
+ data.tar.gz: '02939e5f9cce8e6cc15f49befa60956ea9b72a0a461d7ee0c886233ca21795083e946a8140a83e1c5c317a7e3006d3bc1ab1bd689e414be0795bb5540691d6a4'
@@ -0,0 +1,40 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+
12
+ runs-on: ubuntu-latest
13
+
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ ruby-version: [3.0, 2.7]
18
+ gemfile: ['gemfiles/nokogiri_13.10.gemfile', 'gemfiles/nokogiri_12.5.gemfile']
19
+
20
+ steps:
21
+ - name: Install libxmlsec
22
+ run: |
23
+ sudo apt-get update
24
+ sudo apt-get install -y libxmlsec1-dev
25
+ - uses: actions/checkout@v3
26
+ - name: Set up Ruby
27
+ uses: ruby/setup-ruby@v1
28
+ with:
29
+ ruby-version: ${{ matrix.ruby-version }}
30
+ bundler-cache: true
31
+ env:
32
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
33
+ - name: Install dependencies
34
+ run: bundle install
35
+ env:
36
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
37
+ - name: Run tests
38
+ run: bundle exec rake
39
+ env:
40
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
data/.gitignore CHANGED
@@ -1,6 +1,7 @@
1
1
  *.gem
2
2
  *.rbc
3
3
  .bundle
4
+ .byebug_history
4
5
  .config
5
6
  .yardoc
6
7
  Gemfile.lock
@@ -9,6 +10,7 @@ _yardoc
9
10
  coverage
10
11
  doc/
11
12
  lib/bundler/man
13
+ lib/nokogiri_ext_xmlsec.bundle
12
14
  pkg
13
15
  rdoc
14
16
  spec/reports
@@ -18,3 +20,4 @@ tmp
18
20
  spec/old
19
21
  *.so
20
22
  *.sw[opn]
23
+ *.gemfile.lock
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.0.4
data/Appraisals ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ appraise "nokogiri-13.10" do
4
+ gem "nokogiri", "1.13.10"
5
+ end
6
+
7
+ appraise "nokogiri-12.5" do
8
+ gem "nokogiri", "1.12.5"
9
+ end
data/README.md CHANGED
@@ -10,6 +10,14 @@ to `Nokogiri::XML::Document`.
10
10
 
11
11
  ## Installation
12
12
 
13
+ Install this before attempting to install; or else it may fail (tested on CentOS 7) while trying to find -lltdl from the xmlsec1-openssl lib. I'm guessing it's a dependency. Someone else may know more.
14
+
15
+ # CentOS/RHEL
16
+ yum install libtool-ltdl-devel
17
+
18
+ # Debian/Ubuntu
19
+ apt install -y libxmlsec1-dev
20
+
13
21
  Add this line to your application's Gemfile:
14
22
 
15
23
  gem 'nokogiri-xmlsec'
@@ -1,4 +1,5 @@
1
1
  require 'mkmf'
2
+ require 'nokogiri'
2
3
 
3
4
  def barf message = 'dependencies not met'
4
5
  raise message
@@ -22,6 +23,12 @@ puts "Ensure we escaping: #{$CFLAGS}"
22
23
  '-DXMLSEC_CRYPTO=\\"openssl\\"'
23
24
  end
24
25
 
26
+ $CFLAGS << Dir[Gem.loaded_specs['nokogiri'].full_gem_path + "/ext/*"].map { |dir| " -I#{dir}"}.join("")
27
+
25
28
  puts "Clfags: #{$CFLAGS}"
26
29
  $libs = `xmlsec1-config --libs`.strip
30
+
31
+ # We reference symbols out of nokogiri but don't link directly against it
32
+ $LDFLAGS << ' -Wl,-undefined,dynamic_lookup'
33
+
27
34
  create_makefile('nokogiri_ext_xmlsec')
@@ -16,7 +16,7 @@ VALUE decrypt_with_key(VALUE self, VALUE rb_key_name, VALUE rb_key) {
16
16
 
17
17
  Check_Type(rb_key, T_STRING);
18
18
  Check_Type(rb_key_name, T_STRING);
19
- Data_Get_Struct(self, xmlNode, node);
19
+ Noko_Node_Get_Struct(self, xmlNode, node);
20
20
  key = RSTRING_PTR(rb_key);
21
21
  keyLength = RSTRING_LEN(rb_key);
22
22
  keyName = StringValueCStr(rb_key_name);
@@ -58,7 +58,7 @@ done:
58
58
  // the replaced node is orphaned, but not freed; let Nokogiri
59
59
  // own it now
60
60
  if(encCtx->replacedNodeList != NULL) {
61
- nokogiri_root_node(encCtx->replacedNodeList);
61
+ noko_xml_document_pin_node(encCtx->replacedNodeList);
62
62
  // no really, please don't free it
63
63
  encCtx->replacedNodeList = NULL;
64
64
  }
@@ -12,9 +12,11 @@
12
12
  VALUE encrypt_with_key(VALUE self, VALUE rb_rsa_key_name, VALUE rb_rsa_key,
13
13
  VALUE rb_opts) {
14
14
  VALUE rb_exception_result = Qnil;
15
+ VALUE rb_cert = Qnil;
15
16
  const char* exception_message = NULL;
16
17
 
17
18
  xmlDocPtr doc = NULL;
19
+ xmlNodePtr node = NULL;
18
20
  xmlNodePtr encDataNode = NULL;
19
21
  xmlNodePtr encKeyNode = NULL;
20
22
  xmlNodePtr keyInfoNode = NULL;
@@ -22,17 +24,28 @@ VALUE encrypt_with_key(VALUE self, VALUE rb_rsa_key_name, VALUE rb_rsa_key,
22
24
  xmlSecKeysMngrPtr keyManager = NULL;
23
25
  char *keyName = NULL;
24
26
  char *key = NULL;
27
+ char *certificate = NULL;
25
28
  unsigned int keyLength = 0;
29
+ unsigned int certificateLength = 0;
26
30
 
27
31
  resetXmlSecError();
28
32
 
29
33
  Check_Type(rb_rsa_key, T_STRING);
30
- Check_Type(rb_rsa_key_name, T_STRING);
31
34
  Check_Type(rb_opts, T_HASH);
32
35
 
33
36
  key = RSTRING_PTR(rb_rsa_key);
34
37
  keyLength = RSTRING_LEN(rb_rsa_key);
35
- keyName = StringValueCStr(rb_rsa_key_name);
38
+ if (rb_rsa_key_name != Qnil) {
39
+ Check_Type(rb_rsa_key_name, T_STRING);
40
+ keyName = StringValueCStr(rb_rsa_key_name);
41
+ }
42
+
43
+ rb_cert = rb_hash_aref(rb_opts, ID2SYM(rb_intern("cert")));
44
+ if (!NIL_P(rb_cert)) {
45
+ Check_Type(rb_cert, T_STRING);
46
+ certificate = RSTRING_PTR(rb_cert);
47
+ certificateLength = RSTRING_LEN(rb_cert);
48
+ }
36
49
 
37
50
  XmlEncOptions options;
38
51
  if (!GetXmlEncOptions(rb_opts, &options, &rb_exception_result,
@@ -40,7 +53,8 @@ VALUE encrypt_with_key(VALUE self, VALUE rb_rsa_key_name, VALUE rb_rsa_key,
40
53
  goto done;
41
54
  }
42
55
 
43
- Data_Get_Struct(self, xmlDoc, doc);
56
+ Noko_Node_Get_Struct(self, xmlNode, node);
57
+ doc = node->doc;
44
58
 
45
59
  // create encryption template to encrypt XML file and replace
46
60
  // its content with encryption result
@@ -68,10 +82,21 @@ VALUE encrypt_with_key(VALUE self, VALUE rb_rsa_key_name, VALUE rb_rsa_key,
68
82
  goto done;
69
83
  }
70
84
 
71
- if(xmlSecTmplKeyInfoAddKeyName(keyInfoNode, NULL) == NULL) {
72
- rb_exception_result = rb_eEncryptionError;
73
- exception_message = "failed to add key name";
74
- goto done;
85
+ if(certificate) {
86
+ // add <dsig:X509Data/>
87
+ if(xmlSecTmplKeyInfoAddX509Data(keyInfoNode) == NULL) {
88
+ rb_exception_result = rb_eSigningError;
89
+ exception_message = "failed to add X509Data node";
90
+ goto done;
91
+ }
92
+ }
93
+
94
+ if(keyName != NULL) {
95
+ if(xmlSecTmplKeyInfoAddKeyName(keyInfoNode, NULL) == NULL) {
96
+ rb_exception_result = rb_eEncryptionError;
97
+ exception_message = "failed to add key name";
98
+ goto done;
99
+ }
75
100
  }
76
101
 
77
102
  if ((keyManager = createKeyManagerWithSingleKey(
@@ -100,11 +125,25 @@ VALUE encrypt_with_key(VALUE self, VALUE rb_rsa_key_name, VALUE rb_rsa_key,
100
125
  goto done;
101
126
  }
102
127
 
128
+ if(certificate) {
129
+ // load certificate and add to the key
130
+ if(xmlSecCryptoAppKeyCertLoadMemory(encCtx->encKey,
131
+ (xmlSecByte *)certificate,
132
+ certificateLength,
133
+ xmlSecKeyDataFormatPem) < 0) {
134
+ rb_exception_result = rb_eSigningError;
135
+ exception_message = "failed to load certificate";
136
+ goto done;
137
+ }
138
+ }
139
+
103
140
  // Set key name.
104
- if(xmlSecKeySetName(encCtx->encKey, (xmlSecByte *)keyName) < 0) {
105
- rb_exception_result = rb_eEncryptionError;
106
- exception_message = "failed to set key name";
107
- goto done;
141
+ if(keyName) {
142
+ if(xmlSecKeySetName(encCtx->encKey, (xmlSecByte *)keyName) < 0) {
143
+ rb_exception_result = rb_eEncryptionError;
144
+ exception_message = "failed to set key name";
145
+ goto done;
146
+ }
108
147
  }
109
148
 
110
149
  // Add <enc:EncryptedKey/> node to the <dsig:KeyInfo/> tag to include
@@ -127,7 +166,7 @@ VALUE encrypt_with_key(VALUE self, VALUE rb_rsa_key_name, VALUE rb_rsa_key,
127
166
  }
128
167
 
129
168
  // encrypt the data
130
- if(xmlSecEncCtxXmlEncrypt(encCtx, encDataNode, xmlDocGetRootElement(doc)) < 0) {
169
+ if(xmlSecEncCtxXmlEncrypt(encCtx, encDataNode, node) < 0) {
131
170
  rb_exception_result = rb_eEncryptionError;
132
171
  exception_message = "encryption failed";
133
172
  goto done;
@@ -1,9 +1,6 @@
1
1
  #include "xmlsecrb.h"
2
2
  #include "util.h"
3
3
 
4
- // declaration from Nokogiri proper
5
- VALUE Nokogiri_wrap_xml_node(VALUE klass, xmlNodePtr node) ;
6
-
7
4
  VALUE set_id_attribute(VALUE self, VALUE rb_attr_name) {
8
5
  VALUE rb_exception_result = Qnil;
9
6
  const char* exception_message = NULL;
@@ -14,10 +11,10 @@ VALUE set_id_attribute(VALUE self, VALUE rb_attr_name) {
14
11
  xmlChar *name = NULL;
15
12
  char *idName = NULL;
16
13
  char *exception_attribute_arg = NULL;
17
-
14
+
18
15
  resetXmlSecError();
19
16
 
20
- Data_Get_Struct(self, xmlNode, node);
17
+ Noko_Node_Get_Struct(self, xmlNode, node);
21
18
  Check_Type(rb_attr_name, T_STRING);
22
19
  idName = StringValueCStr(rb_attr_name);
23
20
 
@@ -28,7 +25,7 @@ VALUE set_id_attribute(VALUE self, VALUE rb_attr_name) {
28
25
  exception_message = "Can't find attribute to add register as id";
29
26
  goto done;
30
27
  }
31
-
28
+
32
29
  // get the attribute (id) value
33
30
  name = xmlNodeListGetString(node->doc, attr->children, 1);
34
31
  if(name == NULL) {
@@ -37,7 +34,7 @@ VALUE set_id_attribute(VALUE self, VALUE rb_attr_name) {
37
34
  exception_attribute_arg = idName;
38
35
  goto done;
39
36
  }
40
-
37
+
41
38
  // check that we don't have that id already registered
42
39
  tmp = xmlGetID(node->doc, name);
43
40
  if(tmp != NULL) {
@@ -46,7 +43,7 @@ VALUE set_id_attribute(VALUE self, VALUE rb_attr_name) {
46
43
  exception_attribute_arg = idName;
47
44
  goto done;
48
45
  }
49
-
46
+
50
47
  // finally register id
51
48
  xmlAddID(NULL, node->doc, name, attr);
52
49
 
@@ -86,10 +83,10 @@ VALUE get_id(VALUE self, VALUE rb_id)
86
83
  xmlDocPtr doc;
87
84
 
88
85
  Check_Type(rb_id, T_STRING);
89
- Data_Get_Struct(self, xmlDoc, doc);
86
+ Noko_Node_Get_Struct(self, xmlDoc, doc);
90
87
  prop = xmlGetID(doc, (const xmlChar *)StringValueCStr(rb_id));
91
88
  if (prop) {
92
- return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop);
89
+ return noko_xml_node_wrap(Qnil, (xmlNodePtr)prop);
93
90
  } else {
94
91
  return Qnil;
95
92
  }
@@ -17,7 +17,7 @@ void Init_Nokogiri_ext() {
17
17
 
18
18
  rb_define_method(rb_cNokogiri_XML_Node, "sign!", sign, 1);
19
19
  rb_define_method(rb_cNokogiri_XML_Node, "verify_with", verify_with, 1);
20
- rb_define_method(rb_cNokogiri_XML_Document, "encrypt_with_key", encrypt_with_key, 3);
20
+ rb_define_method(rb_cNokogiri_XML_Node, "encrypt_with_key", encrypt_with_key, 3);
21
21
  rb_define_method(rb_cNokogiri_XML_Node, "decrypt_with_key", decrypt_with_key, 2);
22
22
  rb_define_method(rb_cNokogiri_XML_Document, "get_id", get_id, 1);
23
23
  rb_define_method(rb_cNokogiri_XML_Node, "set_id_attribute", set_id_attribute, 1);
@@ -90,7 +90,7 @@ VALUE sign(VALUE self, VALUE rb_opts) {
90
90
  goto done;
91
91
  }
92
92
 
93
- Data_Get_Struct(self, xmlNode, envelopeNode);
93
+ Noko_Node_Get_Struct(self, xmlNode, envelopeNode);
94
94
  doc = envelopeNode->doc;
95
95
  // create signature template for enveloped signature.
96
96
  signNode = xmlSecTmplSignatureCreate(doc, xmlSecTransformExclC14NId,
@@ -146,7 +146,7 @@ VALUE verify_with(VALUE self, VALUE rb_opts) {
146
146
  resetXmlSecError();
147
147
 
148
148
  Check_Type(rb_opts, T_HASH);
149
- Data_Get_Struct(self, xmlNode, node);
149
+ Noko_Node_Get_Struct(self, xmlNode, node);
150
150
 
151
151
  // verify start node
152
152
  if(!xmlSecCheckNodeName(node, xmlSecNodeSignature, xmlSecDSigNs)) {
@@ -20,6 +20,12 @@
20
20
  #include <xmlsec/crypto.h>
21
21
  #include <xmlsec/errors.h>
22
22
 
23
+ #include <nokogiri.h>
24
+ // Lifted from modern nokogiri.h
25
+ #ifndef Noko_Node_Get_Struct
26
+ #define Noko_Node_Get_Struct(obj,type,sval) ((sval) = (type*)DATA_PTR(obj))
27
+ #endif
28
+
23
29
  // TODO(awong): Support non-gcc and non-clang compilers.
24
30
  #define EXTENSION_EXPORT __attribute__((visibility("default")))
25
31
 
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "nokogiri", "1.12.5"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "nokogiri", "1.13.10"
6
+
7
+ gemspec path: "../"
@@ -1,3 +1,3 @@
1
1
  module Xmlsec
2
- VERSION = '0.9.6'
2
+ VERSION = '0.10.2'
3
3
  end
data/lib/xmlsec.rb CHANGED
@@ -61,12 +61,8 @@ class Nokogiri::XML::Document
61
61
  # # encrypt with a public key and optional key name
62
62
  # doc.encrypt! key: 'public-key', name: 'name'
63
63
  #
64
- def encrypt! opts
65
- if opts[:key]
66
- encrypt_with_key opts[:name].to_s, opts[:key], opts.select { |key, _| key != :key && key != :name }
67
- else
68
- raise "public :key is required for encryption"
69
- end
64
+ def encrypt!(key:, name: nil, **opts)
65
+ root.encrypt_with(key: key, name: name, **opts)
70
66
  self
71
67
  end
72
68
 
@@ -89,6 +85,11 @@ class Nokogiri::XML::Document
89
85
  end
90
86
 
91
87
  class Nokogiri::XML::Node
88
+ def encrypt_with(key:, name: nil, **opts)
89
+ raise ArgumentError("public :key is required for encryption") unless key
90
+ encrypt_with_key(name, key, opts)
91
+ end
92
+
92
93
  def decrypt_with(opts)
93
94
  raise 'inadequate options specified for decryption' unless opts[:key]
94
95
 
@@ -28,9 +28,11 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ["lib"]
29
29
  spec.extensions = %w{ext/nokogiri_ext_xmlsec/extconf.rb}
30
30
 
31
- spec.add_dependency 'nokogiri'
32
-
33
- spec.add_development_dependency "bundler", "~> 1.3"
31
+ spec.add_dependency 'nokogiri', '>= 1.11.2'
32
+
33
+ spec.add_development_dependency "appraisal"
34
+ spec.add_development_dependency "bundler", "~> 2.1"
35
+ spec.add_development_dependency "byebug"
34
36
  spec.add_development_dependency "rake"
35
37
  spec.add_development_dependency "rake-compiler"
36
38
  spec.add_development_dependency "rspec"
@@ -31,4 +31,25 @@ describe "encryption and decryption:" do
31
31
  end
32
32
  end
33
33
 
34
+ it "encrypts a single element" do
35
+ doc = subject
36
+ original = doc.to_s
37
+ node = doc.at_xpath('env:Envelope/env:Data', 'env' => 'urn:envelope')
38
+ node.encrypt_with(key: fixture('rsa.pub'), block_encryption: 'aes128-cbc', key_transport: 'rsa-1_5')
39
+ expect(doc.root.name).to eq 'Envelope'
40
+ expect(doc.root.element_children.first.name).to eq 'EncryptedData'
41
+ encrypted_data = doc.root.element_children.first
42
+ encrypted_data.decrypt_with(key: fixture('rsa.pem'))
43
+ expect(doc.to_s).to eq original
44
+ end
45
+
46
+ it "inserts a certificate" do
47
+ doc = subject
48
+ doc.encrypt!(key: fixture('cert/server.key.decrypted'),
49
+ cert: fixture('cert/server.crt'),
50
+ block_encryption: 'aes128-cbc',
51
+ key_transport: 'rsa-1_5')
52
+ expect(doc.to_s).to match(/X509Data/)
53
+ expect(doc.to_s).not_to match(/X509Data></)
54
+ end
34
55
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nokogiri-xmlsec-instructure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Albert J. Wong
8
8
  - Cody Cutrer
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-05-10 00:00:00.000000000 Z
12
+ date: 2022-12-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -17,9 +17,23 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: 1.11.2
21
21
  type: :runtime
22
22
  prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 1.11.2
28
+ - !ruby/object:Gem::Dependency
29
+ name: appraisal
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
23
37
  version_requirements: !ruby/object:Gem::Requirement
24
38
  requirements:
25
39
  - - ">="
@@ -31,14 +45,28 @@ dependencies:
31
45
  requirements:
32
46
  - - "~>"
33
47
  - !ruby/object:Gem::Version
34
- version: '1.3'
48
+ version: '2.1'
35
49
  type: :development
36
50
  prerelease: false
37
51
  version_requirements: !ruby/object:Gem::Requirement
38
52
  requirements:
39
53
  - - "~>"
40
54
  - !ruby/object:Gem::Version
41
- version: '1.3'
55
+ version: '2.1'
56
+ - !ruby/object:Gem::Dependency
57
+ name: byebug
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
42
70
  - !ruby/object:Gem::Dependency
43
71
  name: rake
44
72
  requirement: !ruby/object:Gem::Requirement
@@ -126,9 +154,11 @@ extensions:
126
154
  - ext/nokogiri_ext_xmlsec/extconf.rb
127
155
  extra_rdoc_files: []
128
156
  files:
157
+ - ".github/workflows/push.yml"
129
158
  - ".gitignore"
130
159
  - ".rspec"
131
- - ".travis.yml"
160
+ - ".tool-versions"
161
+ - Appraisals
132
162
  - Gemfile
133
163
  - Guardfile
134
164
  - LICENSE.txt
@@ -149,6 +179,8 @@ files:
149
179
  - ext/nokogiri_ext_xmlsec/util.c
150
180
  - ext/nokogiri_ext_xmlsec/util.h
151
181
  - ext/nokogiri_ext_xmlsec/xmlsecrb.h
182
+ - gemfiles/nokogiri_12.5.gemfile
183
+ - gemfiles/nokogiri_13.10.gemfile
152
184
  - lib/nokogiri-xmlsec.rb
153
185
  - lib/xmlsec.rb
154
186
  - lib/xmlsec/version.rb
@@ -172,7 +204,7 @@ homepage: https://github.com/instructure/nokogiri-xmlsec-instructure
172
204
  licenses:
173
205
  - MIT
174
206
  metadata: {}
175
- post_install_message:
207
+ post_install_message:
176
208
  rdoc_options: []
177
209
  require_paths:
178
210
  - lib
@@ -187,9 +219,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
219
  - !ruby/object:Gem::Version
188
220
  version: '0'
189
221
  requirements: []
190
- rubyforge_project:
191
- rubygems_version: 2.7.6
192
- signing_key:
222
+ rubygems_version: 3.2.33
223
+ signing_key:
193
224
  specification_version: 4
194
225
  summary: Wrapper around http://www.aleksey.com/xmlsec to support XML encryption, decryption,
195
226
  signing and signature validation in Ruby
data/.travis.yml DELETED
@@ -1,3 +0,0 @@
1
- before_install:
2
- - sudo apt-get update -qq
3
- - sudo apt-get install -y libxmlsec1-dev