trezor 0.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 +7 -0
- data/.gitignore +42 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/LICENSE +165 -0
- data/README.md +68 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/trezor-agent +41 -0
- data/lib/net/ssh/authentication/methods/trezor.rb +25 -0
- data/lib/trezor.rb +2 -0
- data/lib/trezor/agent.rb +88 -0
- data/lib/trezor/device.rb +141 -0
- data/lib/trezor/identity.rb +102 -0
- data/lib/trezor/key_manager.rb +77 -0
- data/lib/trezor/protobuf.rb +38 -0
- data/lib/trezor/protobuf/messages.pb.rb +866 -0
- data/lib/trezor/protobuf/types.pb.rb +392 -0
- data/lib/trezor/utils.rb +6 -0
- data/lib/trezor/utils/buffer.rb +39 -0
- data/lib/trezor/version.rb +3 -0
- data/trezor.gemspec +36 -0
- metadata +254 -0
@@ -0,0 +1,392 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
##
|
4
|
+
# This file is auto-generated. DO NOT EDIT!
|
5
|
+
#
|
6
|
+
require 'protobuf'
|
7
|
+
|
8
|
+
|
9
|
+
##
|
10
|
+
# Imports
|
11
|
+
#
|
12
|
+
require 'google/protobuf/descriptor.pb'
|
13
|
+
|
14
|
+
module Trezor
|
15
|
+
module Protobuf
|
16
|
+
::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
|
17
|
+
|
18
|
+
##
|
19
|
+
# Enum Classes
|
20
|
+
#
|
21
|
+
class FailureType < ::Protobuf::Enum
|
22
|
+
define :Failure_UnexpectedMessage, 1
|
23
|
+
define :Failure_ButtonExpected, 2
|
24
|
+
define :Failure_DataError, 3
|
25
|
+
define :Failure_ActionCancelled, 4
|
26
|
+
define :Failure_PinExpected, 5
|
27
|
+
define :Failure_PinCancelled, 6
|
28
|
+
define :Failure_PinInvalid, 7
|
29
|
+
define :Failure_InvalidSignature, 8
|
30
|
+
define :Failure_ProcessError, 9
|
31
|
+
define :Failure_NotEnoughFunds, 10
|
32
|
+
define :Failure_NotInitialized, 11
|
33
|
+
define :Failure_PinMismatch, 12
|
34
|
+
define :Failure_FirmwareError, 99
|
35
|
+
end
|
36
|
+
|
37
|
+
class OutputScriptType < ::Protobuf::Enum
|
38
|
+
define :PAYTOADDRESS, 0
|
39
|
+
define :PAYTOSCRIPTHASH, 1
|
40
|
+
define :PAYTOMULTISIG, 2
|
41
|
+
define :PAYTOOPRETURN, 3
|
42
|
+
define :PAYTOWITNESS, 4
|
43
|
+
define :PAYTOP2SHWITNESS, 5
|
44
|
+
end
|
45
|
+
|
46
|
+
class InputScriptType < ::Protobuf::Enum
|
47
|
+
define :SPENDADDRESS, 0
|
48
|
+
define :SPENDMULTISIG, 1
|
49
|
+
define :EXTERNAL, 2
|
50
|
+
define :SPENDWITNESS, 3
|
51
|
+
define :SPENDP2SHWITNESS, 4
|
52
|
+
end
|
53
|
+
|
54
|
+
class RequestType < ::Protobuf::Enum
|
55
|
+
define :TXINPUT, 0
|
56
|
+
define :TXOUTPUT, 1
|
57
|
+
define :TXMETA, 2
|
58
|
+
define :TXFINISHED, 3
|
59
|
+
define :TXEXTRADATA, 4
|
60
|
+
end
|
61
|
+
|
62
|
+
class ButtonRequestType < ::Protobuf::Enum
|
63
|
+
define :ButtonRequest_Other, 1
|
64
|
+
define :ButtonRequest_FeeOverThreshold, 2
|
65
|
+
define :ButtonRequest_ConfirmOutput, 3
|
66
|
+
define :ButtonRequest_ResetDevice, 4
|
67
|
+
define :ButtonRequest_ConfirmWord, 5
|
68
|
+
define :ButtonRequest_WipeDevice, 6
|
69
|
+
define :ButtonRequest_ProtectCall, 7
|
70
|
+
define :ButtonRequest_SignTx, 8
|
71
|
+
define :ButtonRequest_FirmwareCheck, 9
|
72
|
+
define :ButtonRequest_Address, 10
|
73
|
+
define :ButtonRequest_PublicKey, 11
|
74
|
+
define :ButtonRequest_MnemonicWordCount, 12
|
75
|
+
define :ButtonRequest_MnemonicInput, 13
|
76
|
+
define :ButtonRequest_PassphraseType, 14
|
77
|
+
end
|
78
|
+
|
79
|
+
class PinMatrixRequestType < ::Protobuf::Enum
|
80
|
+
define :PinMatrixRequestType_Current, 1
|
81
|
+
define :PinMatrixRequestType_NewFirst, 2
|
82
|
+
define :PinMatrixRequestType_NewSecond, 3
|
83
|
+
end
|
84
|
+
|
85
|
+
class RecoveryDeviceType < ::Protobuf::Enum
|
86
|
+
define :RecoveryDeviceType_ScrambledWords, 0
|
87
|
+
define :RecoveryDeviceType_Matrix, 1
|
88
|
+
end
|
89
|
+
|
90
|
+
class WordRequestType < ::Protobuf::Enum
|
91
|
+
define :WordRequestType_Plain, 0
|
92
|
+
define :WordRequestType_Matrix9, 1
|
93
|
+
define :WordRequestType_Matrix6, 2
|
94
|
+
end
|
95
|
+
|
96
|
+
class PassphraseSourceType < ::Protobuf::Enum
|
97
|
+
define :ASK, 0
|
98
|
+
define :DEVICE, 1
|
99
|
+
define :HOST, 2
|
100
|
+
end
|
101
|
+
|
102
|
+
class NEMMosaicLevy < ::Protobuf::Enum
|
103
|
+
define :MosaicLevy_Absolute, 1
|
104
|
+
define :MosaicLevy_Percentile, 2
|
105
|
+
end
|
106
|
+
|
107
|
+
class NEMSupplyChangeType < ::Protobuf::Enum
|
108
|
+
define :SupplyChange_Increase, 1
|
109
|
+
define :SupplyChange_Decrease, 2
|
110
|
+
end
|
111
|
+
|
112
|
+
class NEMModificationType < ::Protobuf::Enum
|
113
|
+
define :CosignatoryModification_Add, 1
|
114
|
+
define :CosignatoryModification_Delete, 2
|
115
|
+
end
|
116
|
+
|
117
|
+
class NEMImportanceTransferMode < ::Protobuf::Enum
|
118
|
+
define :ImportanceTransfer_Activate, 1
|
119
|
+
define :ImportanceTransfer_Deactivate, 2
|
120
|
+
end
|
121
|
+
|
122
|
+
class LiskTransactionType < ::Protobuf::Enum
|
123
|
+
define :Transfer, 0
|
124
|
+
define :RegisterSecondPassphrase, 1
|
125
|
+
define :RegisterDelegate, 2
|
126
|
+
define :CastVotes, 3
|
127
|
+
define :RegisterMultisignatureAccount, 4
|
128
|
+
define :CreateDapp, 5
|
129
|
+
define :TransferIntoDapp, 6
|
130
|
+
define :TransferOutOfDapp, 7
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
##
|
135
|
+
# Message Classes
|
136
|
+
#
|
137
|
+
class HDNodeType < ::Protobuf::Message; end
|
138
|
+
class HDNodePathType < ::Protobuf::Message; end
|
139
|
+
class MultisigRedeemScriptType < ::Protobuf::Message; end
|
140
|
+
class TxInputType < ::Protobuf::Message; end
|
141
|
+
class TxOutputType < ::Protobuf::Message; end
|
142
|
+
class TxOutputBinType < ::Protobuf::Message; end
|
143
|
+
class TransactionType < ::Protobuf::Message; end
|
144
|
+
class TxRequestDetailsType < ::Protobuf::Message; end
|
145
|
+
class TxRequestSerializedType < ::Protobuf::Message; end
|
146
|
+
class IdentityType < ::Protobuf::Message; end
|
147
|
+
class NEMTransactionCommon < ::Protobuf::Message; end
|
148
|
+
class NEMTransfer < ::Protobuf::Message; end
|
149
|
+
class NEMMosaic < ::Protobuf::Message; end
|
150
|
+
class NEMProvisionNamespace < ::Protobuf::Message; end
|
151
|
+
class NEMMosaicCreation < ::Protobuf::Message; end
|
152
|
+
class NEMMosaicDefinition < ::Protobuf::Message; end
|
153
|
+
class NEMMosaicSupplyChange < ::Protobuf::Message; end
|
154
|
+
class NEMAggregateModification < ::Protobuf::Message; end
|
155
|
+
class NEMCosignatoryModification < ::Protobuf::Message; end
|
156
|
+
class NEMImportanceTransfer < ::Protobuf::Message; end
|
157
|
+
class StellarAssetType < ::Protobuf::Message; end
|
158
|
+
class LiskTransactionCommon < ::Protobuf::Message; end
|
159
|
+
class LiskTransactionAsset < ::Protobuf::Message; end
|
160
|
+
class LiskSignatureType < ::Protobuf::Message; end
|
161
|
+
class LiskDelegateType < ::Protobuf::Message; end
|
162
|
+
class LiskMultisignatureType < ::Protobuf::Message; end
|
163
|
+
|
164
|
+
|
165
|
+
##
|
166
|
+
# File Options
|
167
|
+
#
|
168
|
+
set_option :java_package, "com.satoshilabs.trezor.lib.protobuf"
|
169
|
+
set_option :java_outer_classname, "TrezorType"
|
170
|
+
|
171
|
+
|
172
|
+
##
|
173
|
+
# Message Fields
|
174
|
+
#
|
175
|
+
class HDNodeType
|
176
|
+
required :uint32, :depth, 1
|
177
|
+
required :uint32, :fingerprint, 2
|
178
|
+
required :uint32, :child_num, 3
|
179
|
+
required :bytes, :chain_code, 4
|
180
|
+
optional :bytes, :private_key, 5
|
181
|
+
optional :bytes, :public_key, 6
|
182
|
+
end
|
183
|
+
|
184
|
+
class HDNodePathType
|
185
|
+
required ::Trezor::Protobuf::HDNodeType, :node, 1
|
186
|
+
repeated :uint32, :address_n, 2
|
187
|
+
end
|
188
|
+
|
189
|
+
class MultisigRedeemScriptType
|
190
|
+
repeated ::Trezor::Protobuf::HDNodePathType, :pubkeys, 1
|
191
|
+
repeated :bytes, :signatures, 2
|
192
|
+
optional :uint32, :m, 3
|
193
|
+
end
|
194
|
+
|
195
|
+
class TxInputType
|
196
|
+
repeated :uint32, :address_n, 1
|
197
|
+
required :bytes, :prev_hash, 2
|
198
|
+
required :uint32, :prev_index, 3
|
199
|
+
optional :bytes, :script_sig, 4
|
200
|
+
optional :uint32, :sequence, 5, :default => 4294967295
|
201
|
+
optional ::Trezor::Protobuf::InputScriptType, :script_type, 6, :default => ::Trezor::Protobuf::InputScriptType::SPENDADDRESS
|
202
|
+
optional ::Trezor::Protobuf::MultisigRedeemScriptType, :multisig, 7
|
203
|
+
optional :uint64, :amount, 8
|
204
|
+
optional :uint32, :decred_tree, 9
|
205
|
+
optional :uint32, :decred_script_version, 10
|
206
|
+
end
|
207
|
+
|
208
|
+
class TxOutputType
|
209
|
+
optional :string, :address, 1
|
210
|
+
repeated :uint32, :address_n, 2
|
211
|
+
required :uint64, :amount, 3
|
212
|
+
required ::Trezor::Protobuf::OutputScriptType, :script_type, 4
|
213
|
+
optional ::Trezor::Protobuf::MultisigRedeemScriptType, :multisig, 5
|
214
|
+
optional :bytes, :op_return_data, 6
|
215
|
+
optional :uint32, :decred_script_version, 7
|
216
|
+
end
|
217
|
+
|
218
|
+
class TxOutputBinType
|
219
|
+
required :uint64, :amount, 1
|
220
|
+
required :bytes, :script_pubkey, 2
|
221
|
+
optional :uint32, :decred_script_version, 3
|
222
|
+
end
|
223
|
+
|
224
|
+
class TransactionType
|
225
|
+
optional :uint32, :version, 1
|
226
|
+
repeated ::Trezor::Protobuf::TxInputType, :inputs, 2
|
227
|
+
repeated ::Trezor::Protobuf::TxOutputBinType, :bin_outputs, 3
|
228
|
+
repeated ::Trezor::Protobuf::TxOutputType, :outputs, 5
|
229
|
+
optional :uint32, :lock_time, 4
|
230
|
+
optional :uint32, :inputs_cnt, 6
|
231
|
+
optional :uint32, :outputs_cnt, 7
|
232
|
+
optional :bytes, :extra_data, 8
|
233
|
+
optional :uint32, :extra_data_len, 9
|
234
|
+
optional :uint32, :decred_expiry, 10
|
235
|
+
optional :bool, :overwintered, 11
|
236
|
+
end
|
237
|
+
|
238
|
+
class TxRequestDetailsType
|
239
|
+
optional :uint32, :request_index, 1
|
240
|
+
optional :bytes, :tx_hash, 2
|
241
|
+
optional :uint32, :extra_data_len, 3
|
242
|
+
optional :uint32, :extra_data_offset, 4
|
243
|
+
end
|
244
|
+
|
245
|
+
class TxRequestSerializedType
|
246
|
+
optional :uint32, :signature_index, 1
|
247
|
+
optional :bytes, :signature, 2
|
248
|
+
optional :bytes, :serialized_tx, 3
|
249
|
+
end
|
250
|
+
|
251
|
+
class IdentityType
|
252
|
+
optional :string, :proto, 1
|
253
|
+
optional :string, :user, 2
|
254
|
+
optional :string, :host, 3
|
255
|
+
optional :string, :port, 4
|
256
|
+
optional :string, :path, 5
|
257
|
+
optional :uint32, :index, 6, :default => 0
|
258
|
+
end
|
259
|
+
|
260
|
+
class NEMTransactionCommon
|
261
|
+
repeated :uint32, :address_n, 1
|
262
|
+
optional :uint32, :network, 2
|
263
|
+
optional :uint32, :timestamp, 3
|
264
|
+
optional :uint64, :fee, 4
|
265
|
+
optional :uint32, :deadline, 5
|
266
|
+
optional :bytes, :signer, 6
|
267
|
+
end
|
268
|
+
|
269
|
+
class NEMTransfer
|
270
|
+
optional :string, :recipient, 1
|
271
|
+
optional :uint64, :amount, 2
|
272
|
+
optional :bytes, :payload, 3
|
273
|
+
optional :bytes, :public_key, 4
|
274
|
+
repeated ::Trezor::Protobuf::NEMMosaic, :mosaics, 5
|
275
|
+
end
|
276
|
+
|
277
|
+
class NEMMosaic
|
278
|
+
optional :string, :namespace, 1
|
279
|
+
optional :string, :mosaic, 2
|
280
|
+
optional :uint64, :quantity, 3
|
281
|
+
end
|
282
|
+
|
283
|
+
class NEMProvisionNamespace
|
284
|
+
optional :string, :namespace, 1
|
285
|
+
optional :string, :parent, 2
|
286
|
+
optional :string, :sink, 3
|
287
|
+
optional :uint64, :fee, 4
|
288
|
+
end
|
289
|
+
|
290
|
+
class NEMMosaicCreation
|
291
|
+
optional ::Trezor::Protobuf::NEMMosaicDefinition, :definition, 1
|
292
|
+
optional :string, :sink, 2
|
293
|
+
optional :uint64, :fee, 3
|
294
|
+
end
|
295
|
+
|
296
|
+
class NEMMosaicDefinition
|
297
|
+
optional :string, :name, 1
|
298
|
+
optional :string, :ticker, 2
|
299
|
+
optional :string, :namespace, 3
|
300
|
+
optional :string, :mosaic, 4
|
301
|
+
optional :uint32, :divisibility, 5
|
302
|
+
optional ::Trezor::Protobuf::NEMMosaicLevy, :levy, 6
|
303
|
+
optional :uint64, :fee, 7
|
304
|
+
optional :string, :levy_address, 8
|
305
|
+
optional :string, :levy_namespace, 9
|
306
|
+
optional :string, :levy_mosaic, 10
|
307
|
+
optional :uint64, :supply, 11
|
308
|
+
optional :bool, :mutable_supply, 12
|
309
|
+
optional :bool, :transferable, 13
|
310
|
+
optional :string, :description, 14
|
311
|
+
repeated :uint32, :networks, 15
|
312
|
+
end
|
313
|
+
|
314
|
+
class NEMMosaicSupplyChange
|
315
|
+
optional :string, :namespace, 1
|
316
|
+
optional :string, :mosaic, 2
|
317
|
+
optional ::Trezor::Protobuf::NEMSupplyChangeType, :type, 3
|
318
|
+
optional :uint64, :delta, 4
|
319
|
+
end
|
320
|
+
|
321
|
+
class NEMAggregateModification
|
322
|
+
repeated ::Trezor::Protobuf::NEMCosignatoryModification, :modifications, 1
|
323
|
+
optional :sint32, :relative_change, 2
|
324
|
+
end
|
325
|
+
|
326
|
+
class NEMCosignatoryModification
|
327
|
+
optional ::Trezor::Protobuf::NEMModificationType, :type, 1
|
328
|
+
optional :bytes, :public_key, 2
|
329
|
+
end
|
330
|
+
|
331
|
+
class NEMImportanceTransfer
|
332
|
+
optional ::Trezor::Protobuf::NEMImportanceTransferMode, :mode, 1
|
333
|
+
optional :bytes, :public_key, 2
|
334
|
+
end
|
335
|
+
|
336
|
+
class StellarAssetType
|
337
|
+
optional :uint32, :type, 1
|
338
|
+
optional :string, :code, 2
|
339
|
+
optional :bytes, :issuer, 3
|
340
|
+
end
|
341
|
+
|
342
|
+
class LiskTransactionCommon
|
343
|
+
optional ::Trezor::Protobuf::LiskTransactionType, :type, 1
|
344
|
+
optional :uint64, :amount, 2, :default => 0
|
345
|
+
optional :uint64, :fee, 3
|
346
|
+
optional :string, :recipient_id, 4
|
347
|
+
optional :bytes, :sender_public_key, 5
|
348
|
+
optional :bytes, :requester_public_key, 6
|
349
|
+
optional :bytes, :signature, 7
|
350
|
+
optional :uint32, :timestamp, 8
|
351
|
+
optional ::Trezor::Protobuf::LiskTransactionAsset, :asset, 9
|
352
|
+
end
|
353
|
+
|
354
|
+
class LiskTransactionAsset
|
355
|
+
optional ::Trezor::Protobuf::LiskSignatureType, :signature, 1
|
356
|
+
optional ::Trezor::Protobuf::LiskDelegateType, :delegate, 2
|
357
|
+
repeated :string, :votes, 3
|
358
|
+
optional ::Trezor::Protobuf::LiskMultisignatureType, :multisignature, 4
|
359
|
+
optional :string, :data, 5
|
360
|
+
end
|
361
|
+
|
362
|
+
class LiskSignatureType
|
363
|
+
optional :bytes, :public_key, 1
|
364
|
+
end
|
365
|
+
|
366
|
+
class LiskDelegateType
|
367
|
+
optional :string, :username, 1
|
368
|
+
end
|
369
|
+
|
370
|
+
class LiskMultisignatureType
|
371
|
+
optional :uint32, :min, 1
|
372
|
+
optional :uint32, :life_time, 2
|
373
|
+
repeated :string, :keys_group, 3
|
374
|
+
end
|
375
|
+
|
376
|
+
|
377
|
+
##
|
378
|
+
# Extended Message Fields
|
379
|
+
#
|
380
|
+
class ::Google::Protobuf::EnumValueOptions < ::Protobuf::Message
|
381
|
+
optional :bool, :".trezor.protobuf.wire_in", 50002, :extension => true
|
382
|
+
optional :bool, :".trezor.protobuf.wire_out", 50003, :extension => true
|
383
|
+
optional :bool, :".trezor.protobuf.wire_debug_in", 50004, :extension => true
|
384
|
+
optional :bool, :".trezor.protobuf.wire_debug_out", 50005, :extension => true
|
385
|
+
optional :bool, :".trezor.protobuf.wire_tiny", 50006, :extension => true
|
386
|
+
optional :bool, :".trezor.protobuf.wire_bootloader", 50007, :extension => true
|
387
|
+
end
|
388
|
+
|
389
|
+
end
|
390
|
+
|
391
|
+
end
|
392
|
+
|
data/lib/trezor/utils.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'net/ssh/buffer'
|
2
|
+
|
3
|
+
module Trezor
|
4
|
+
module Utils
|
5
|
+
class Buffer < Net::SSH::Buffer
|
6
|
+
# Writes each argument to the buffer as a network-byte-order-encoded
|
7
|
+
# short (2-byte) integer. Does not alter the read position. Returns the
|
8
|
+
# buffer object.
|
9
|
+
def write_short(*n)
|
10
|
+
@content << n.pack('n*')
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
14
|
+
# Return the next two bytes as a short integer (in network byte order).
|
15
|
+
# Returns nil if there are less than 2 bytes remaining to be read in the
|
16
|
+
# buffer.
|
17
|
+
def read_short
|
18
|
+
b = read(2) or return nil
|
19
|
+
b.unpack('n').first
|
20
|
+
end
|
21
|
+
|
22
|
+
# Writes each argument to the buffer as binary data (hex to binary)
|
23
|
+
# Does not alter the read position. Returns the
|
24
|
+
# buffer object.
|
25
|
+
def write_htb(*blobs)
|
26
|
+
@content << blobs.pack('H*')
|
27
|
+
self
|
28
|
+
end
|
29
|
+
|
30
|
+
# Writes each argument to the buffer as hex data (binary to hex)
|
31
|
+
# Does not alter the read position. Returns the
|
32
|
+
# buffer object.
|
33
|
+
def write_bth(*blobs)
|
34
|
+
blobs.each { |b| @content << b.unpack('H*').first }
|
35
|
+
self
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/trezor.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "trezor/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "trezor"
|
8
|
+
spec.version = Trezor::VERSION
|
9
|
+
spec.authors = ["Tomás Rojas"]
|
10
|
+
spec.email = ["tmsrjs@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Trezor}
|
13
|
+
#spec.description = %q{TODO: Write a longer description or delete this line.}
|
14
|
+
spec.homepage = 'https://github.com/tmsrjs/trezor-ruby'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
|
23
|
+
spec.add_dependency 'bcrypt_pbkdf', '~> 1.0', '< 2.0'
|
24
|
+
spec.add_dependency 'ecdsa'
|
25
|
+
spec.add_dependency 'ed25519', '~> 1.2', '< 2.0'
|
26
|
+
spec.add_dependency 'http'
|
27
|
+
spec.add_dependency 'net-ssh', '~> 5.0', '>= 5.0.1'
|
28
|
+
spec.add_dependency 'openssl', '~> 2.1'
|
29
|
+
spec.add_dependency 'protobuf'
|
30
|
+
spec.add_dependency 'trollop'
|
31
|
+
|
32
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
33
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
34
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
35
|
+
spec.add_development_dependency 'byebug', '~> 10.0'
|
36
|
+
end
|