lyrebird 2.0.0 → 2.1.0

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: 6b9457c5f260c26c5adf43de4262d67077e1f5729b4506ff0efa92ec61519346
4
- data.tar.gz: 16a5dbf97973cd9c3673c26212fa0be146955ef9ddaf877768d40120416d6e54
3
+ metadata.gz: 763dc798f8c44d5fdf3b9782961fe0ea042ee6a593816a5fb9ac6f6359b284ef
4
+ data.tar.gz: fc30ca3c936e76b4b29fb55e0dec4528bd17c156c3bf95c6ba76e3b16b3c0b94
5
5
  SHA512:
6
- metadata.gz: fc83af3b91fb52553dc96733c2a8ea0e89c561fe124bddc1b769cb39f681e03c1e18ff78ec2c83ffe886114b369e4a1630e637e56a1cf2dcee2137a5fe88680b
7
- data.tar.gz: 138bd3e26e223c69dc10e435b21c12e0e1fcf3322e64df65d1775695d8920e6a274caf0d1323c5722244d73a47a09296d4d2a1d2037f2761084f470fcff6202c
6
+ metadata.gz: 97b8ffd5d37a09be4cea80d33e51de9ac12aee670aa281907740c12d65c91af624649522a8511e4dbb3a15e237f422b0016dc22b00c8435abad460ce17279316
7
+ data.tar.gz: 44913f9701aaf25446db2ebfd81d2efd7ec887a3be13085bf48444bb7b7eee5724296840e7e3e8e7d67e489b9ef12e6f21882309e5fcd607d0320f3e349ae00c
@@ -16,7 +16,7 @@ module Lyrebird
16
16
  end
17
17
 
18
18
  def self.build(**kwargs)
19
- config = OpenStruct.new(kwargs)
19
+ config = Options.new(kwargs)
20
20
  yield config if block_given?
21
21
  new(**config.to_h)
22
22
  end
@@ -58,7 +58,7 @@ module Lyrebird
58
58
  end
59
59
 
60
60
  def base64
61
- Base64.strict_encode64(@x509.to_der)
61
+ [@x509.to_der].pack("m0")
62
62
  end
63
63
 
64
64
  private
@@ -79,7 +79,7 @@ module Lyrebird
79
79
  c.add_extension(OpenSSL::X509::Extension.new(oid, value, true))
80
80
  end
81
81
 
82
- c.sign(@key, OpenSSL::Digest::SHA256.new)
82
+ c.sign(@key, OpenSSL::Digest.new("SHA256"))
83
83
  end
84
84
  end
85
85
 
@@ -70,7 +70,7 @@ module Lyrebird
70
70
 
71
71
  cd.add_child(@doc.create_element("CipherValue")).tap do |cv|
72
72
  cv.namespace = @xenc
73
- cv.content = Base64.strict_encode64(encrypted_aes_key)
73
+ cv.content = [encrypted_aes_key].pack("m0")
74
74
  end
75
75
  end
76
76
  end
@@ -88,7 +88,7 @@ module Lyrebird
88
88
 
89
89
  cd.add_child(@doc.create_element("CipherValue")).tap do |cv|
90
90
  cv.namespace = @xenc
91
- cv.content = Base64.strict_encode64(iv + ciphertext)
91
+ cv.content = [iv + ciphertext].pack("m0")
92
92
  end
93
93
  end
94
94
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lyrebird
4
+ class Options
5
+ def initialize(values = {})
6
+ @values = values.transform_keys(&:to_sym)
7
+ end
8
+
9
+ def to_h
10
+ @values
11
+ end
12
+
13
+ def [](key)
14
+ @values[key.to_sym]
15
+ end
16
+
17
+ def []=(key, value)
18
+ @values[key.to_sym] = value
19
+ end
20
+
21
+ private
22
+
23
+ def method_missing(name, *args)
24
+ key = name.to_s
25
+
26
+ if key.end_with?("=")
27
+ @values[key.chomp("=").to_sym] = args.first
28
+ elsif @values.key?(name)
29
+ @values[name]
30
+ else
31
+ super
32
+ end
33
+ end
34
+
35
+ def respond_to_missing?(name, include_private = false)
36
+ name.to_s.end_with?("=") || @values.key?(name) || super
37
+ end
38
+ end
39
+ end
@@ -2,17 +2,18 @@
2
2
 
3
3
  module Lyrebird
4
4
  class Response
5
- def self.build(**kwargs)
6
- config = OpenStruct.new(kwargs)
7
-
8
- config.define_singleton_method(:attributes) do |&block|
5
+ class Config < Options
6
+ def attributes(&block)
9
7
  current = self[:attributes] || {}
10
8
  return current unless block
11
9
 
12
- fresh = OpenStruct.new.tap(&block).to_h
10
+ fresh = Options.new.tap(&block).to_h
13
11
  self[:attributes] = current.transform_keys(&:to_sym).merge(fresh)
14
12
  end
13
+ end
15
14
 
15
+ def self.build(**kwargs)
16
+ config = Config.new(kwargs)
16
17
  yield config if block_given?
17
18
  new(**config.to_h)
18
19
  end
@@ -39,7 +40,7 @@ module Lyrebird
39
40
  end
40
41
 
41
42
  def mimic
42
- Base64.strict_encode64(to_xml)
43
+ [to_xml].pack("m0")
43
44
  end
44
45
 
45
46
  def to_xml
@@ -60,8 +60,8 @@ module Lyrebird
60
60
 
61
61
  def populate_signature_value
62
62
  canonical = @signed_info.canonicalize(C14N_EXCLUSIVE)
63
- sig = @certificate.key.sign("SHA256", canonical)
64
- @signature_value.content = Base64.strict_encode64(sig)
63
+ sig = @certificate.key.sign(OpenSSL::Digest.new("SHA256"), canonical)
64
+ @signature_value.content = [sig].pack("m0")
65
65
  end
66
66
 
67
67
  def build_key_info
@@ -116,8 +116,8 @@ module Lyrebird
116
116
 
117
117
  def compute_digest
118
118
  canonical = @element.canonicalize(C14N_EXCLUSIVE)
119
- digest = OpenSSL::Digest::SHA256.digest(canonical)
120
- Base64.strict_encode64(digest)
119
+ digest = OpenSSL::Digest.new("SHA256").digest(canonical)
120
+ [digest].pack("m0")
121
121
  end
122
122
  end
123
123
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lyrebird
4
- VERSION = "2.0.0"
4
+ VERSION = "2.1.0"
5
5
  end
data/lib/lyrebird.rb CHANGED
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "base64"
4
3
  require "nokogiri"
5
4
  require "openssl"
6
- require "ostruct"
7
5
  require "securerandom"
8
6
  require "time"
9
7
 
@@ -13,6 +11,7 @@ require_relative "lyrebird/defaults"
13
11
  require_relative "lyrebird/encryption"
14
12
  require_relative "lyrebird/id"
15
13
  require_relative "lyrebird/namespaces"
14
+ require_relative "lyrebird/options"
16
15
  require_relative "lyrebird/response"
17
16
  require_relative "lyrebird/signature"
18
17
  require_relative "lyrebird/version"
metadata CHANGED
@@ -1,51 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lyrebird
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-26 00:00:00.000000000 Z
11
+ date: 2026-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: base64
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: nokogiri
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - ">="
32
18
  - !ruby/object:Gem::Version
33
- version: '0'
19
+ version: '1.14'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - ">="
39
25
  - !ruby/object:Gem::Version
40
- version: '0'
26
+ version: '1.14'
41
27
  - !ruby/object:Gem::Dependency
42
- name: ostruct
28
+ name: base64
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - ">="
46
32
  - !ruby/object:Gem::Version
47
33
  version: '0'
48
- type: :runtime
34
+ type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
@@ -123,6 +109,7 @@ files:
123
109
  - lib/lyrebird/encryption.rb
124
110
  - lib/lyrebird/id.rb
125
111
  - lib/lyrebird/namespaces.rb
112
+ - lib/lyrebird/options.rb
126
113
  - lib/lyrebird/response.rb
127
114
  - lib/lyrebird/signature.rb
128
115
  - lib/lyrebird/version.rb