stellar-sdk 0.28.0 → 0.29.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 +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/stellar/client.rb +2 -0
- data/lib/stellar/sep10.rb +37 -7
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3829133758963683cfff3f2132c55d8bf53540bd731d9cb2e619d2ae36012112
|
4
|
+
data.tar.gz: d2ec22a621018102dc93c9cb6e89dbaa5029ef29ec4d1b85f5b6cf6a8b1a8ccb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53958e7a613b1a8cfa6b7a36a505c3820337b5a696bc16bfe7b7d3da9060fee01b0dd1afd61f4c48cb2eeee8c6a9b8b3b71d75b39afc1681b985a2a266af6231
|
7
|
+
data.tar.gz: b235706bc0f6d4b92298a43dae775d9b7210028c1306171ffd65212478addc929f760e0f6421e795c77d2e58570e6aa81d7665f5d93005695e1c4271e6e074f2
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
7
7
|
|
8
|
+
## [0.29.0](https://www.github.com/astroband/ruby-stellar-sdk/compare/v0.28.0...v0.29.0) (2021-09-07)
|
9
|
+
|
10
|
+
### Added
|
11
|
+
* support for client domain in SEP-10
|
12
|
+
### Deprecated
|
13
|
+
* `Stellar::Client` class is marked as deprecated in favour of new `stellar-horizon` gem
|
14
|
+
|
8
15
|
## [0.28.0](https://www.github.com/astroband/ruby-stellar-sdk/compare/v0.27.0...v0.28.0) (2021-07-17)
|
9
16
|
|
10
17
|
### Changed
|
data/lib/stellar/client.rb
CHANGED
@@ -44,6 +44,8 @@ module Stellar
|
|
44
44
|
|
45
45
|
# @option options [String] :horizon The Horizon server URL.
|
46
46
|
def initialize(options)
|
47
|
+
ActiveSupport::Deprecation.warn("`Stellar::Horizon` is deprecated and will be removed from `stellar-sdk` next relase. Use `stellar-horizon` gem for requesting Horizon API")
|
48
|
+
|
47
49
|
@options = options
|
48
50
|
@horizon = Hyperclient.new(options[:horizon]) { |client|
|
49
51
|
client.faraday_block = lambda do |conn|
|
data/lib/stellar/sep10.rb
CHANGED
@@ -64,6 +64,20 @@ module Stellar
|
|
64
64
|
)
|
65
65
|
end
|
66
66
|
|
67
|
+
if options[:client_domain].present?
|
68
|
+
if options[:client_domain_account].blank?
|
69
|
+
raise "`client_domain_account` is required, if `client_domain` is provided"
|
70
|
+
end
|
71
|
+
|
72
|
+
tb.add_operation(
|
73
|
+
Stellar::Operation.manage_data(
|
74
|
+
name: "client_domain",
|
75
|
+
value: options[:client_domain],
|
76
|
+
source_account: options[:client_domain_account]
|
77
|
+
)
|
78
|
+
)
|
79
|
+
end
|
80
|
+
|
67
81
|
tb.build.to_envelope(server).to_xdr(:base64)
|
68
82
|
end
|
69
83
|
|
@@ -125,16 +139,14 @@ module Stellar
|
|
125
139
|
|
126
140
|
rest_ops.each do |op|
|
127
141
|
body = op.body
|
142
|
+
op_params = body.value
|
128
143
|
|
129
144
|
if body.arm != :manage_data_op
|
130
145
|
raise InvalidSep10ChallengeError, "The transaction has operations that are not of type 'manageData'"
|
131
|
-
elsif op.source_account != server.muxed_account
|
146
|
+
elsif op.source_account != server.muxed_account && op_params.data_name != "client_domain"
|
132
147
|
raise InvalidSep10ChallengeError, "The transaction has operations that are unrecognized"
|
133
|
-
|
134
|
-
|
135
|
-
if op_params.data_name == "web_auth_domain" && options.key?(:auth_domain) && op_params.data_value != options[:auth_domain]
|
136
|
-
raise InvalidSep10ChallengeError, "The transaction has 'manageData' operation with 'web_auth_domain' key and invalid value"
|
137
|
-
end
|
148
|
+
elsif op_params.data_name == "web_auth_domain" && options.key?(:auth_domain) && op_params.data_value != options[:auth_domain]
|
149
|
+
raise InvalidSep10ChallengeError, "The transaction has 'manageData' operation with 'web_auth_domain' key and invalid value"
|
138
150
|
end
|
139
151
|
end
|
140
152
|
|
@@ -210,6 +222,9 @@ module Stellar
|
|
210
222
|
client_signers = signers.select { |s| s =~ /G[A-Z0-9]{55}/ && s != server.address }.to_set
|
211
223
|
raise InvalidSep10ChallengeError, "at least one regular signer must be provided" if client_signers.empty?
|
212
224
|
|
225
|
+
client_domain_account_address = extract_client_domain_account(te.tx)
|
226
|
+
client_signers.add(client_domain_account_address) if client_domain_account_address.present?
|
227
|
+
|
213
228
|
# verify all signatures in one pass
|
214
229
|
client_signers.add(server.address)
|
215
230
|
signers_found = verify_tx_signatures(tx_envelope: te, signers: client_signers)
|
@@ -229,6 +244,10 @@ module Stellar
|
|
229
244
|
raise InvalidSep10ChallengeError, "Transaction has unrecognized signatures."
|
230
245
|
end
|
231
246
|
|
247
|
+
if client_domain_account_address.present? && !signers_found.include?(client_domain_account_address)
|
248
|
+
raise InvalidSep10ChallengeError, "Transaction not signed by client domain account."
|
249
|
+
end
|
250
|
+
|
232
251
|
signers_found
|
233
252
|
end
|
234
253
|
|
@@ -249,7 +268,7 @@ module Stellar
|
|
249
268
|
to_keypair = Stellar::DSL.method(:KeyPair)
|
250
269
|
keys_by_hint = signers.map(&to_keypair).index_by(&:signature_hint)
|
251
270
|
|
252
|
-
|
271
|
+
signatures.each_with_object(Set.new) do |sig, result|
|
253
272
|
key = keys_by_hint.delete(sig.hint)
|
254
273
|
result.add(key.address) if key&.verify(sig.signature, tx_hash)
|
255
274
|
end
|
@@ -272,5 +291,16 @@ module Stellar
|
|
272
291
|
keypair.verify(sig.signature, tx_hash)
|
273
292
|
end
|
274
293
|
end
|
294
|
+
|
295
|
+
def self.extract_client_domain_account(transaction)
|
296
|
+
client_domain_account_op =
|
297
|
+
transaction
|
298
|
+
.operations
|
299
|
+
.find { |op| op.body.value.data_name == "client_domain" }
|
300
|
+
|
301
|
+
return if client_domain_account_op.blank?
|
302
|
+
|
303
|
+
Util::StrKey.encode_muxed_account(client_domain_account_op.source_account)
|
304
|
+
end
|
275
305
|
end
|
276
306
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stellar-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.29.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Fleckenstein
|
8
8
|
- Sergey Nebolsin
|
9
9
|
- Timur Ramazanov
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-07
|
13
|
+
date: 2021-09-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: stellar-base
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.29.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.
|
28
|
+
version: 0.29.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: activesupport
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,8 +148,8 @@ dependencies:
|
|
148
148
|
- - "~>"
|
149
149
|
- !ruby/object:Gem::Version
|
150
150
|
version: '3.9'
|
151
|
-
description:
|
152
|
-
email:
|
151
|
+
description:
|
152
|
+
email:
|
153
153
|
executables: []
|
154
154
|
extensions: []
|
155
155
|
extra_rdoc_files:
|
@@ -173,12 +173,12 @@ licenses:
|
|
173
173
|
- Apache-2.0
|
174
174
|
metadata:
|
175
175
|
bug_tracker_uri: https://github.com/astroband/ruby-stellar-sdk/issues
|
176
|
-
changelog_uri: https://github.com/astroband/ruby-stellar-sdk/blob/v0.
|
177
|
-
documentation_uri: https://rubydoc.info/gems/stellar-sdk/0.
|
176
|
+
changelog_uri: https://github.com/astroband/ruby-stellar-sdk/blob/v0.29.0/sdk/CHANGELOG.md
|
177
|
+
documentation_uri: https://rubydoc.info/gems/stellar-sdk/0.29.0/
|
178
178
|
github_repo: ssh://github.com/astroband/ruby-stellar-sdk
|
179
179
|
homepage_uri: https://github.com/astroband/ruby-stellar-sdk/tree/main/sdk
|
180
|
-
source_code_uri: https://github.com/astroband/ruby-stellar-sdk/tree/v0.
|
181
|
-
post_install_message:
|
180
|
+
source_code_uri: https://github.com/astroband/ruby-stellar-sdk/tree/v0.29.0/sdk
|
181
|
+
post_install_message:
|
182
182
|
rdoc_options: []
|
183
183
|
require_paths:
|
184
184
|
- lib
|
@@ -193,8 +193,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
requirements: []
|
196
|
-
rubygems_version: 3.
|
197
|
-
signing_key:
|
196
|
+
rubygems_version: 3.1.4
|
197
|
+
signing_key:
|
198
198
|
specification_version: 4
|
199
199
|
summary: Stellar client library
|
200
200
|
test_files: []
|