smartware 0.4.11 → 0.4.12
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
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dddf32a584b18a74383d3c9af10514be4d99308e
|
4
|
+
data.tar.gz: 6d3ff0e9a3f7db8ad32b5289458e32029e0bc707
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9c3ecd875a3496a23e8bc97d49773518fe0d249becf12cbf626ef4fb197d3e7dd6d2c51da3bc10778b18d9d0b55a871d0cb5d09e08798130e504dee23e3f9e66
|
7
|
+
data.tar.gz: a897ca6d6461396a6441b5545d9834f6c47a84dac598f7dd04e1535479782282689f1f8b4b5f75f130ab72c5343cbdc5f41358f76e6bdff7dc453011d8705519
|
@@ -62,10 +62,11 @@ module Smartware
|
|
62
62
|
}
|
63
63
|
|
64
64
|
# Authentication data
|
65
|
-
UID = "
|
65
|
+
UID = "\x11" * 8
|
66
66
|
|
67
67
|
# Keys
|
68
|
-
KEY_TMK =
|
68
|
+
KEY_TMK = 0x20
|
69
|
+
KEY_TPK = 0x30
|
69
70
|
KEY_IMK = 0x80
|
70
71
|
|
71
72
|
# Key types, etc
|
@@ -192,11 +193,11 @@ module Smartware
|
|
192
193
|
control MISC, ENABLE_INPUT
|
193
194
|
|
194
195
|
when Interface::PinPad::INPUT_PIN
|
195
|
-
|
196
|
+
raise "unsupported key set" unless options[:key_set] == 0
|
196
197
|
@plain_input = false
|
197
198
|
@auto_stop = options[:length]
|
198
199
|
|
199
|
-
start_pin_input
|
200
|
+
start_pin_input KEY_TPK, options[:format], 0, options[:length],
|
200
201
|
options[:pan]
|
201
202
|
|
202
203
|
else
|
@@ -211,23 +212,10 @@ module Smartware
|
|
211
212
|
@input_event.call :cancel
|
212
213
|
end
|
213
214
|
|
214
|
-
def start_pin_input(key, format, hint_code, length, pan)
|
215
|
-
raise "unsupported PIN block format" unless PIN_TYPE_MAP.include? format
|
216
|
-
|
217
|
-
safe_command(START_PIN_INPUT,
|
218
|
-
sprintf("%02X%c%d%02d%s",
|
219
|
-
key,
|
220
|
-
PIN_TYPE_MAP[format],
|
221
|
-
hint_code,
|
222
|
-
length,
|
223
|
-
pan))
|
224
|
-
end
|
225
|
-
|
226
215
|
def load_working_keys(set, tpk_under_tmk)
|
227
|
-
raise "unsupported key set" unless
|
216
|
+
raise "unsupported key set" unless set == 0
|
228
217
|
|
229
|
-
|
230
|
-
tpk_verify = load_encrypted_key tpk, KEY_TMK, KEY_TYPE_TPK, nil,
|
218
|
+
tpk_verify = load_encrypted_key KEY_TPK, KEY_TMK, KEY_TYPE_TPK, nil,
|
231
219
|
tpk_under_tmk
|
232
220
|
|
233
221
|
return tpk_verify
|
@@ -236,8 +224,6 @@ module Smartware
|
|
236
224
|
def get_pin
|
237
225
|
response = safe_command GET_PIN_VALUE
|
238
226
|
|
239
|
-
p response
|
240
|
-
|
241
227
|
[
|
242
228
|
response.slice(1, 2).to_i, # Track
|
243
229
|
response.slice(3, 2).to_i, # Length
|
@@ -247,6 +233,18 @@ module Smartware
|
|
247
233
|
|
248
234
|
private
|
249
235
|
|
236
|
+
def start_pin_input(key, format, hint_code, length, pan)
|
237
|
+
raise "unsupported PIN block format" unless PIN_TYPE_MAP.include? format
|
238
|
+
|
239
|
+
safe_command(START_PIN_INPUT,
|
240
|
+
sprintf("%02X%c%d%02d%s",
|
241
|
+
key,
|
242
|
+
PIN_TYPE_MAP[format],
|
243
|
+
hint_code,
|
244
|
+
length,
|
245
|
+
pan))
|
246
|
+
end
|
247
|
+
|
250
248
|
def calculate_response(challenge, key)
|
251
249
|
cipher = OpenSSL::Cipher.new('DES-ECB')
|
252
250
|
cipher.encrypt
|
@@ -272,7 +270,7 @@ module Smartware
|
|
272
270
|
KEY_LENGTH_TRIPLE
|
273
271
|
|
274
272
|
else
|
275
|
-
raise "unsupported key length: #{data.
|
273
|
+
raise "unsupported key length: #{data.length}"
|
276
274
|
end
|
277
275
|
end
|
278
276
|
|
@@ -406,21 +404,14 @@ module Smartware
|
|
406
404
|
restart
|
407
405
|
=end
|
408
406
|
else
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
raise ZT588Error, "verification failed" if check != verify
|
418
|
-
Logging.logger.debug "ZT588: authenticated"
|
419
|
-
|
420
|
-
break
|
421
|
-
rescue => e
|
422
|
-
p e
|
423
|
-
end
|
407
|
+
begin
|
408
|
+
random = auth AUTH_GET_CHALLENGE, "0000000000000000"
|
409
|
+
challenge = auth KEY_TMK, random
|
410
|
+
response = calculate_response challenge, UID
|
411
|
+
check = calculate_response response, UID
|
412
|
+
verify = auth AUTH_WITH_TMK, response
|
413
|
+
raise ZT588Error, "verification failed" if check != verify
|
414
|
+
Logging.logger.debug "ZT588: authenticated"
|
424
415
|
end
|
425
416
|
|
426
417
|
@device_ready.call
|
@@ -113,10 +113,13 @@ module Smartware
|
|
113
113
|
end
|
114
114
|
end
|
115
115
|
rescue CardReaderError => e
|
116
|
-
Logging.logger.error "Card reader error: #{e}"
|
116
|
+
Logging.logger.error "Card reader error: #{e}" unless @state == :failure
|
117
117
|
|
118
|
-
|
119
|
-
|
118
|
+
begin
|
119
|
+
@device.eject
|
120
|
+
@device.accepting = false
|
121
|
+
rescue CardReaderError => e
|
122
|
+
end
|
120
123
|
|
121
124
|
@state = :failure
|
122
125
|
update_status :error, e.code
|
data/lib/smartware/version.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smartware
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.12
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Evgeni Sudarchikov
|
@@ -11,182 +10,160 @@ authors:
|
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date: 2013-
|
13
|
+
date: 2013-03-12 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: smartkiosk-common
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
18
|
requirements:
|
21
|
-
- -
|
19
|
+
- - '>='
|
22
20
|
- !ruby/object:Gem::Version
|
23
21
|
version: 0.0.2
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
25
|
requirements:
|
29
|
-
- -
|
26
|
+
- - '>='
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: 0.0.2
|
32
29
|
- !ruby/object:Gem::Dependency
|
33
30
|
name: serialport
|
34
31
|
requirement: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
32
|
requirements:
|
37
|
-
- -
|
33
|
+
- - '>='
|
38
34
|
- !ruby/object:Gem::Version
|
39
35
|
version: '0'
|
40
36
|
type: :runtime
|
41
37
|
prerelease: false
|
42
38
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
39
|
requirements:
|
45
|
-
- -
|
40
|
+
- - '>='
|
46
41
|
- !ruby/object:Gem::Version
|
47
42
|
version: '0'
|
48
43
|
- !ruby/object:Gem::Dependency
|
49
44
|
name: cmux
|
50
45
|
requirement: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
46
|
requirements:
|
53
|
-
- -
|
47
|
+
- - '>='
|
54
48
|
- !ruby/object:Gem::Version
|
55
49
|
version: 0.0.2
|
56
50
|
type: :runtime
|
57
51
|
prerelease: false
|
58
52
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
53
|
requirements:
|
61
|
-
- -
|
54
|
+
- - '>='
|
62
55
|
- !ruby/object:Gem::Version
|
63
56
|
version: 0.0.2
|
64
57
|
- !ruby/object:Gem::Dependency
|
65
58
|
name: trollop
|
66
59
|
requirement: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
60
|
requirements:
|
69
|
-
- -
|
61
|
+
- - '>='
|
70
62
|
- !ruby/object:Gem::Version
|
71
63
|
version: '0'
|
72
64
|
type: :runtime
|
73
65
|
prerelease: false
|
74
66
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
67
|
requirements:
|
77
|
-
- -
|
68
|
+
- - '>='
|
78
69
|
- !ruby/object:Gem::Version
|
79
70
|
version: '0'
|
80
71
|
- !ruby/object:Gem::Dependency
|
81
72
|
name: activesupport
|
82
73
|
requirement: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
74
|
requirements:
|
85
|
-
- -
|
75
|
+
- - '>='
|
86
76
|
- !ruby/object:Gem::Version
|
87
77
|
version: '0'
|
88
78
|
type: :runtime
|
89
79
|
prerelease: false
|
90
80
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
81
|
requirements:
|
93
|
-
- -
|
82
|
+
- - '>='
|
94
83
|
- !ruby/object:Gem::Version
|
95
84
|
version: '0'
|
96
85
|
- !ruby/object:Gem::Dependency
|
97
86
|
name: redcarpet
|
98
87
|
requirement: !ruby/object:Gem::Requirement
|
99
|
-
none: false
|
100
88
|
requirements:
|
101
|
-
- -
|
89
|
+
- - '>='
|
102
90
|
- !ruby/object:Gem::Version
|
103
91
|
version: '0'
|
104
92
|
type: :runtime
|
105
93
|
prerelease: false
|
106
94
|
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
95
|
requirements:
|
109
|
-
- -
|
96
|
+
- - '>='
|
110
97
|
- !ruby/object:Gem::Version
|
111
98
|
version: '0'
|
112
99
|
- !ruby/object:Gem::Dependency
|
113
100
|
name: digest-crc
|
114
101
|
requirement: !ruby/object:Gem::Requirement
|
115
|
-
none: false
|
116
102
|
requirements:
|
117
|
-
- -
|
103
|
+
- - '>='
|
118
104
|
- !ruby/object:Gem::Version
|
119
105
|
version: '0'
|
120
106
|
type: :runtime
|
121
107
|
prerelease: false
|
122
108
|
version_requirements: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
109
|
requirements:
|
125
|
-
- -
|
110
|
+
- - '>='
|
126
111
|
- !ruby/object:Gem::Version
|
127
112
|
version: '0'
|
128
113
|
- !ruby/object:Gem::Dependency
|
129
114
|
name: eventmachine
|
130
115
|
requirement: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
116
|
requirements:
|
133
|
-
- -
|
117
|
+
- - '>='
|
134
118
|
- !ruby/object:Gem::Version
|
135
119
|
version: '0'
|
136
120
|
type: :runtime
|
137
121
|
prerelease: false
|
138
122
|
version_requirements: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
123
|
requirements:
|
141
|
-
- -
|
124
|
+
- - '>='
|
142
125
|
- !ruby/object:Gem::Version
|
143
126
|
version: '0'
|
144
127
|
- !ruby/object:Gem::Dependency
|
145
128
|
name: chunky_png
|
146
129
|
requirement: !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
130
|
requirements:
|
149
|
-
- -
|
131
|
+
- - '>='
|
150
132
|
- !ruby/object:Gem::Version
|
151
133
|
version: '0'
|
152
134
|
type: :runtime
|
153
135
|
prerelease: false
|
154
136
|
version_requirements: !ruby/object:Gem::Requirement
|
155
|
-
none: false
|
156
137
|
requirements:
|
157
|
-
- -
|
138
|
+
- - '>='
|
158
139
|
- !ruby/object:Gem::Version
|
159
140
|
version: '0'
|
160
141
|
- !ruby/object:Gem::Dependency
|
161
142
|
name: oily_png
|
162
143
|
requirement: !ruby/object:Gem::Requirement
|
163
|
-
none: false
|
164
144
|
requirements:
|
165
|
-
- -
|
145
|
+
- - '>='
|
166
146
|
- !ruby/object:Gem::Version
|
167
147
|
version: '0'
|
168
148
|
type: :runtime
|
169
149
|
prerelease: false
|
170
150
|
version_requirements: !ruby/object:Gem::Requirement
|
171
|
-
none: false
|
172
151
|
requirements:
|
173
|
-
- -
|
152
|
+
- - '>='
|
174
153
|
- !ruby/object:Gem::Version
|
175
154
|
version: '0'
|
176
155
|
- !ruby/object:Gem::Dependency
|
177
156
|
name: redis
|
178
157
|
requirement: !ruby/object:Gem::Requirement
|
179
|
-
none: false
|
180
158
|
requirements:
|
181
|
-
- -
|
159
|
+
- - '>='
|
182
160
|
- !ruby/object:Gem::Version
|
183
161
|
version: '0'
|
184
162
|
type: :runtime
|
185
163
|
prerelease: false
|
186
164
|
version_requirements: !ruby/object:Gem::Requirement
|
187
|
-
none: false
|
188
165
|
requirements:
|
189
|
-
- -
|
166
|
+
- - '>='
|
190
167
|
- !ruby/object:Gem::Version
|
191
168
|
version: '0'
|
192
169
|
description: Smartware is the Smartkiosk hardware control daemon
|
@@ -249,26 +226,26 @@ files:
|
|
249
226
|
- smartware.gemspec
|
250
227
|
homepage: https://github.com/smartkiosk/smartware
|
251
228
|
licenses: []
|
229
|
+
metadata: {}
|
252
230
|
post_install_message:
|
253
231
|
rdoc_options: []
|
254
232
|
require_paths:
|
255
233
|
- lib
|
256
234
|
required_ruby_version: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
235
|
requirements:
|
259
|
-
- -
|
236
|
+
- - '>='
|
260
237
|
- !ruby/object:Gem::Version
|
261
238
|
version: '0'
|
262
239
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
263
|
-
none: false
|
264
240
|
requirements:
|
265
|
-
- -
|
241
|
+
- - '>='
|
266
242
|
- !ruby/object:Gem::Version
|
267
243
|
version: '0'
|
268
244
|
requirements: []
|
269
245
|
rubyforge_project:
|
270
|
-
rubygems_version:
|
246
|
+
rubygems_version: 2.0.0
|
271
247
|
signing_key:
|
272
|
-
specification_version:
|
248
|
+
specification_version: 4
|
273
249
|
summary: Smartware is the Smartkiosk hardware control daemon
|
274
250
|
test_files: []
|
251
|
+
has_rdoc:
|