universa_tools 0.1.4 → 0.1.5

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: d846d55be3199f2f3e71bc8ba9c69a94ecde94d4a108f9861dea0e8c99c23c69
4
- data.tar.gz: 32d94e1c9a4c1d1838e792e7768ccf66208110292a230dde3f703361b14532d4
3
+ metadata.gz: 323439c54ed7fc37c7f277101f3182e48ed47604948b184ad35a095adaf72f53
4
+ data.tar.gz: 5e15fda5d3daa545b347a173ba16fdc92f7bf591830e9a6a392287b457476d4f
5
5
  SHA512:
6
- metadata.gz: 620cc50e666e52911d95f50bce9bf885e4236a502e36360b1c55e1eab297d51ca0b4afb339073b48c0222801afbe12c49f16462bcfe28610eb86c25277998d67
7
- data.tar.gz: 56d7392c339d53eeb1a36655f98896e0c5fd87b9f8a90c919abfda0160a5bb772253c1c1c8fb3b6059b29a4d30af1f2cb79280232a06d69a81964fdbe8d8714f
6
+ metadata.gz: e00a703e837bb3300aebb2b390c3d313597af1bb68dd00e965055a77dcca91ba0f19a2eb292e7748e5f0c06d7e6624912bab757cec1835294b797ea732c829c5
7
+ data.tar.gz: 3a175349bb5c75fee62db57e6884d8291f3ef4ec71a191618c45fb061a35df820052cfa5b273a7bdc0cdbb3299a253631c162fd61744f64232b8cff68dc4bde7
data/.gitignore CHANGED
@@ -13,3 +13,5 @@
13
13
  /Gemfile.lock
14
14
  /tmp/*
15
15
  /sample.private.unikey
16
+ !/spec/fixtures/copy_old_keyring/
17
+ /spec/fixtures/copy_old_keyring/uniring.unirecord
data/.idea/workspace.xml CHANGED
@@ -1,15 +1,15 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
3
  <component name="ChangeListManager">
4
- <list default="true" id="b5de240c-a3f4-4e4f-a942-24748bb7a400" name="Default Changelist" comment="corrected UNS.reduce tables, after voting for цяb subst">
4
+ <list default="true" id="b5de240c-a3f4-4e4f-a942-24748bb7a400" name="Default Changelist" comment="">
5
+ <change afterPath="$PROJECT_DIR$/spec/fixtures/old_keyring/uniring.unirecord" afterDir="false" />
6
+ <change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
5
7
  <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
6
- <change beforePath="$PROJECT_DIR$/lib/universa_tools/commons.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/universa_tools/commons.rb" afterDir="false" />
7
- <change beforePath="$PROJECT_DIR$/lib/universa_tools/u_wallet.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/universa_tools/u_wallet.rb" afterDir="false" />
8
- <change beforePath="$PROJECT_DIR$/lib/universa_tools/uns.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/universa_tools/uns.rb" afterDir="false" />
8
+ <change beforePath="$PROJECT_DIR$/lib/universa_tools/crypto_record.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/universa_tools/crypto_record.rb" afterDir="false" />
9
+ <change beforePath="$PROJECT_DIR$/lib/universa_tools/keyring.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/universa_tools/keyring.rb" afterDir="false" />
10
+ <change beforePath="$PROJECT_DIR$/lib/universa_tools/uniring.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/universa_tools/uniring.rb" afterDir="false" />
9
11
  <change beforePath="$PROJECT_DIR$/lib/universa_tools/version.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/universa_tools/version.rb" afterDir="false" />
10
- <change beforePath="$PROJECT_DIR$/spec/u_wallet_spec.rb" beforeDir="false" afterPath="$PROJECT_DIR$/spec/u_wallet_spec.rb" afterDir="false" />
11
- <change beforePath="$PROJECT_DIR$/spec/uns_spec.rb" beforeDir="false" afterPath="$PROJECT_DIR$/spec/uns_spec.rb" afterDir="false" />
12
- <change beforePath="$PROJECT_DIR$/universa_tools.gemspec" beforeDir="false" afterPath="$PROJECT_DIR$/universa_tools.gemspec" afterDir="false" />
12
+ <change beforePath="$PROJECT_DIR$/spec/keying_spec.rb" beforeDir="false" afterPath="$PROJECT_DIR$/spec/keying_spec.rb" afterDir="false" />
13
13
  </list>
14
14
  <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
15
15
  <option name="SHOW_DIALOG" value="false" />
@@ -44,7 +44,7 @@
44
44
  <property name="nodejs_npm_path_reset_for_default_project" value="true" />
45
45
  <property name="nodejs_package_manager_path" value="npm" />
46
46
  <property name="restartRequiresConfirmation" value="false" />
47
- <property name="settings.editor.selected.configurable" value="configurable.group.appearance" />
47
+ <property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
48
48
  </component>
49
49
  <component name="RecentsManager">
50
50
  <key name="CopyFile.RECENT_KEYS">
@@ -66,26 +66,40 @@
66
66
  </option>
67
67
  </component>
68
68
  <component name="RunManager" selected="RSpec.All specs in spec: universa_tools">
69
- <configuration name="IRB console: universa_tools" type="IrbRunConfigurationType" factoryName="IRB console" temporary="true">
69
+ <configuration name="All specs in spec: universa_tools" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
70
70
  <module name="universa_tools" />
71
- <IRB_RUN_CONFIG NAME="RUBY_ARGS" VALUE="" />
72
- <IRB_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$" />
73
- <IRB_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
74
- <IRB_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
75
- <IRB_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
76
- <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
71
+ <predefined_log_file enabled="true" id="RUBY_RSPEC" />
72
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
73
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
74
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
75
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
76
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
77
+ <envs>
78
+ <env name="JRUBY_OPTS" value="-X+O" />
79
+ </envs>
80
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
77
81
  <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
78
82
  <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov">
79
83
  <COVERAGE_PATTERN ENABLED="true">
80
84
  <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
81
85
  </COVERAGE_PATTERN>
82
86
  </EXTENSION>
83
- <IRB_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$APPLICATION_HOME_DIR$/rb/testing/runner/irb.rb" />
84
- <IRB_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="--prompt simple" />
85
- <IRB_RUN_CONFIG NAME="IS_RAILS_CONSOLE" VALUE="false" />
87
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="$MODULE_DIR$/spec" />
88
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
89
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
90
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="'**/*_spec.rb'" />
91
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
92
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="ALL_IN_FOLDER" />
93
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
94
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
95
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
96
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
97
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
98
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
99
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
86
100
  <method v="2" />
87
101
  </configuration>
88
- <configuration name="All specs in spec: universa_tools" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
102
+ <configuration name="KeyRing changes password" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true" nameIsGenerated="true">
89
103
  <module name="universa_tools" />
90
104
  <predefined_log_file enabled="true" id="RUBY_RSPEC" />
91
105
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
@@ -103,12 +117,12 @@
103
117
  <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
104
118
  </COVERAGE_PATTERN>
105
119
  </EXTENSION>
106
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="$MODULE_DIR$/spec" />
107
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
120
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
121
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/keying_spec.rb" />
108
122
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
109
123
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="'**/*_spec.rb'" />
110
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
111
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="ALL_IN_FOLDER" />
124
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="KeyRing changes password" />
125
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
112
126
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
113
127
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
114
128
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
@@ -118,7 +132,7 @@
118
132
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
119
133
  <method v="2" />
120
134
  </configuration>
121
- <configuration name="UNS reduces" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true" nameIsGenerated="true">
135
+ <configuration name="KeyRing has fingerprint" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true" nameIsGenerated="true">
122
136
  <module name="universa_tools" />
123
137
  <predefined_log_file enabled="true" id="RUBY_RSPEC" />
124
138
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
@@ -137,10 +151,10 @@
137
151
  </COVERAGE_PATTERN>
138
152
  </EXTENSION>
139
153
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
140
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/uns_spec.rb" />
154
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/keying_spec.rb" />
141
155
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
142
156
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="'**/*_spec.rb'" />
143
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="UNS reduces" />
157
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="KeyRing has fingerprint" />
144
158
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
145
159
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
146
160
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
@@ -220,10 +234,10 @@
220
234
  <recent_temporary>
221
235
  <list>
222
236
  <item itemvalue="RSpec.All specs in spec: universa_tools" />
237
+ <item itemvalue="RSpec.KeyRing changes password" />
238
+ <item itemvalue="RSpec.KeyRing has fingerprint" />
223
239
  <item itemvalue="RSpec.u_wallet pays uns" />
224
240
  <item itemvalue="RSpec.u_wallet constructs" />
225
- <item itemvalue="IRB console.IRB console: universa_tools" />
226
- <item itemvalue="RSpec.UNS reduces" />
227
241
  </list>
228
242
  </recent_temporary>
229
243
  </component>
@@ -249,7 +263,8 @@
249
263
  <workItem from="1567801865613" duration="9803000" />
250
264
  <workItem from="1568079682395" duration="4917000" />
251
265
  <workItem from="1568278985272" duration="260000" />
252
- <workItem from="1570002431639" duration="333000" />
266
+ <workItem from="1570002431639" duration="1461000" />
267
+ <workItem from="1571653188595" duration="8080000" />
253
268
  </task>
254
269
  <task id="LOCAL-00001" summary="initial">
255
270
  <created>1566484458753</created>
@@ -356,7 +371,14 @@
356
371
  <option name="project" value="LOCAL" />
357
372
  <updated>1568079790194</updated>
358
373
  </task>
359
- <option name="localTasksCounter" value="16" />
374
+ <task id="LOCAL-00016" summary="Supplimantary version to provide coorrected UNS.reduce only">
375
+ <created>1570002794767</created>
376
+ <option name="number" value="00016" />
377
+ <option name="presentableId" value="LOCAL-00016" />
378
+ <option name="project" value="LOCAL" />
379
+ <updated>1570002794767</updated>
380
+ </task>
381
+ <option name="localTasksCounter" value="17" />
360
382
  <servers />
361
383
  </component>
362
384
  <component name="TypeScriptGeneratedFilesManager">
@@ -391,25 +413,13 @@
391
413
  <MESSAGE value="initial reduce implementation" />
392
414
  <MESSAGE value="initial reduce implementation, improved" />
393
415
  <MESSAGE value="corrected UNS.reduce tables, after voting for цяb subst" />
394
- <option name="LAST_COMMIT_MESSAGE" value="corrected UNS.reduce tables, after voting for цяb subst" />
395
- </component>
396
- <component name="XDebuggerManager">
397
- <breakpoint-manager>
398
- <breakpoints>
399
- <line-breakpoint enabled="true" type="ruby-line">
400
- <url>file://$PROJECT_DIR$/lib/universa_tools/keyring.rb</url>
401
- <line>48</line>
402
- <properties a="-1">
403
- <option name="block-ordinal" value="-1" />
404
- </properties>
405
- <option name="timeStamp" value="6" />
406
- </line-breakpoint>
407
- </breakpoints>
408
- </breakpoint-manager>
416
+ <MESSAGE value="Supplimantary version to provide coorrected UNS.reduce only" />
417
+ <option name="LAST_COMMIT_MESSAGE" value="Supplimantary version to provide coorrected UNS.reduce only" />
409
418
  </component>
410
419
  <component name="com.intellij.coverage.CoverageDataManagerImpl">
411
420
  <SUITE FILE_PATH="coverage/universa_tools@uniring_utility_shows_help.rcov" NAME="uniring utility shows help Coverage Results" MODIFIED="1567296251788" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
412
421
  <SUITE FILE_PATH="coverage/universa_tools@UNS.rcov" NAME="UNS Coverage Results" MODIFIED="1567849178662" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
422
+ <SUITE FILE_PATH="coverage/universa_tools@KeyRing_changes_password.rcov" NAME="KeyRing changes password Coverage Results" MODIFIED="1571662161223" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
413
423
  <SUITE FILE_PATH="coverage/universa_tools@uniring_spec.rcov" NAME="uniring_spec Coverage Results" MODIFIED="1567371103192" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
414
424
  <SUITE FILE_PATH="coverage/universa_tools@UniversaTools_makes_pbkdf2_KR.rcov" NAME="UniversaTools makes pbkdf2 KR Coverage Results" MODIFIED="1567166457196" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
415
425
  <SUITE FILE_PATH="coverage/universa_tools@uniring_utility_creates_emp___.rcov" NAME="uniring utility creates emp... Coverage Results" MODIFIED="1567296357954" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
@@ -417,11 +427,12 @@
417
427
  <SUITE FILE_PATH="coverage/universa_tools@UniversaTools_suports_readonly.rcov" NAME="UniversaTools suports readonly Coverage Results" MODIFIED="1567256639449" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
418
428
  <SUITE FILE_PATH="coverage/universa_tools@uniring_utility_creates_emp_____1_.rcov" NAME="uniring utility creates emp... (1) Coverage Results" MODIFIED="1567342698032" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
419
429
  <SUITE FILE_PATH="coverage/universa_tools@u_wallet_pays_uns.rcov" NAME="u_wallet pays uns Coverage Results" MODIFIED="1568189575664" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
420
- <SUITE FILE_PATH="coverage/universa_tools@All_specs_in_spec__universa_tools.rcov" NAME="All specs in spec: universa_tools Coverage Results" MODIFIED="1570002738331" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
430
+ <SUITE FILE_PATH="coverage/universa_tools@All_specs_in_spec__universa_tools.rcov" NAME="All specs in spec: universa_tools Coverage Results" MODIFIED="1571663115755" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
421
431
  <SUITE FILE_PATH="coverage/universa_tools@UniversaTools_can_create_UN___.rcov" NAME="UniversaTools can create UN... Coverage Results" MODIFIED="1567848976512" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
422
432
  <SUITE FILE_PATH="coverage/universa_tools@keying_spec.rcov" NAME="keying_spec Coverage Results" MODIFIED="1567466681075" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
423
433
  <SUITE FILE_PATH="coverage/universa_tools@fix.rcov" NAME="fix Coverage Results" MODIFIED="1566936576002" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Nextcloud/xchange support cases/0001-2019-01-Dimmao" MODULE_NAME="universa_tools" />
424
434
  <SUITE FILE_PATH="coverage/universa_tools@IRB_console__universa_tools.rcov" NAME="IRB console: universa_tools Coverage Results" MODIFIED="1568080543716" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
435
+ <SUITE FILE_PATH="coverage/universa_tools@KeyRing_has_fingerprint.rcov" NAME="KeyRing has fingerprint Coverage Results" MODIFIED="1571657202439" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
425
436
  <SUITE FILE_PATH="coverage/universa_tools@uniring.rcov" NAME="uniring Coverage Results" MODIFIED="1566914082799" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/lib/universa_tools" MODULE_NAME="universa_tools" />
426
437
  <SUITE FILE_PATH="coverage/universa_tools@uniring_utility_add_keys.rcov" NAME="uniring utility add keys Coverage Results" MODIFIED="1567367228624" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
427
438
  <SUITE FILE_PATH="coverage/universa_tools@UniversaTools_creates_new_ring.rcov" NAME="UniversaTools creates new ring Coverage Results" MODIFIED="1567256636642" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="universa_tools" />
@@ -104,6 +104,13 @@ class Pbkdf2CryptoRecord < CryptoRecord
104
104
  derive_key(password).eta_decrypt(@ciphertext)
105
105
  end
106
106
 
107
+ def try_decrypt(password)
108
+ decrypt(password)
109
+ rescue Farcall::RemoteError
110
+ nil
111
+ end
112
+
113
+
107
114
  protected
108
115
 
109
116
  def derive_key(password)
@@ -19,7 +19,7 @@ module UniversaTools
19
19
 
20
20
  include Commons
21
21
 
22
- attr :keys
22
+ attr :keys, :fingerprint
23
23
 
24
24
  # The record class that hold key, tag and associated information inside the ring
25
25
  KeyRecord = Struct.new(:tag, :key, :data, :file_name) do
@@ -34,6 +34,12 @@ module UniversaTools
34
34
  end
35
35
  end
36
36
 
37
+ def system_config
38
+ @system_config ||= begin
39
+ YAML.load_file File.expand_path("~/.universa/keyring_config.yml") rescue nil
40
+ end
41
+ end
42
+
37
43
  # Create or open key ring at the specified path.
38
44
  #
39
45
  # @param [String] path to open from/create at
@@ -151,6 +157,13 @@ module UniversaTools
151
157
  FileUtils.rm_f record.file_name
152
158
  end
153
159
 
160
+ def change_password new_password
161
+ will_write!
162
+ @main_record = Pbkdf2CryptoRecord.new(hint: 'main password', salt: 42.random_alnums)
163
+ @main_record.encrypt(new_password, @main_key.pack)
164
+ write_config()
165
+ end
166
+
154
167
  private
155
168
 
156
169
  def find(tag_or_address)
@@ -188,7 +201,6 @@ module UniversaTools
188
201
 
189
202
  def write_config
190
203
  will_write!
191
- # todo: safe overwrite
192
204
  delete_file(backup_file_name)
193
205
  FileUtils.mv(config_file_name, backup_file_name) if File.exists?(config_file_name)
194
206
  open(config_file_name, 'wb') { |x|
@@ -223,7 +235,12 @@ module UniversaTools
223
235
  def read_config
224
236
  try_read(config_file_name)
225
237
  @main_record or raise IOError("main key not found")
226
- @main_key = Universa::SymmetricKey.new(@main_record.decrypt(request_password("password to open repository")))
238
+ unpacked = nil
239
+ if (pwd=system_config&.dig("keyrings", @fingerprint, "password")) != nil
240
+ unpacked = @main_record.try_decrypt(pwd)
241
+ end
242
+ unpacked ||= @main_record.decrypt(request_password("password to open repository"))
243
+ @main_key = Universa::SymmetricKey.new(unpacked)
227
244
  rescue IOError
228
245
  # potentially recoverable
229
246
  puts error_style("failed to open keyring: #$!")
@@ -240,6 +257,10 @@ module UniversaTools
240
257
  @crypto_records = CryptoRecord.unpack_all(parser.get)
241
258
  @main_record = @crypto_records.find { |r| r.is_a?(Pbkdf2CryptoRecord) }
242
259
  }
260
+ @fingerprint = @header['fingerprint']&.freeze or begin
261
+ @header['fingerprint'] = @fingerprint = 31.random_alnums.freeze
262
+ write_config()
263
+ end
243
264
  end
244
265
 
245
266
  # creates new record if no exist. Does not wipe existing ring.
@@ -250,9 +271,10 @@ module UniversaTools
250
271
  FileUtils.chmod(0700, @root_path)
251
272
 
252
273
  @main_key = Universa::SymmetricKey.new()
253
- @main_record = Pbkdf2CryptoRecord.new(hint: 'main password')
274
+ @main_record = Pbkdf2CryptoRecord.new(hint: 'main password', salt: 42.random_alnums)
254
275
  @main_record.encrypt request_password("main password for the new keyring"), @main_key.pack
255
- @header = {tag: 'uniring', version: '0.1.0'}
276
+ @fingerprint = 31.random_alnums.freeze
277
+ @header = {tag: 'uniring', version: '0.1.0', fingerprint: @fingerprint}
256
278
  write_config()
257
279
  end
258
280
 
@@ -58,9 +58,9 @@ Usage:
58
58
  End
59
59
  opts.separator ""
60
60
 
61
- opts.on("--term-with SIZE", "set terminal width to specified size when formatting output, default is taken from the terminal and is currently #@term_width.") { |size|
62
- @term_width = size
63
- }
61
+ # opts.on("--term-with SIZE", "override terminal width to specified size when formatting output, default is taken from the terminal and is currently #@term_width.") { |size|
62
+ # @term_width = size
63
+ # }
64
64
 
65
65
  opts.on("--all", "allow delete/update more than one key at a time") {
66
66
  @allow_all = true
@@ -111,6 +111,7 @@ Usage:
111
111
  keyring # this may ask for password so do it first
112
112
  puts "--" * 40
113
113
  puts ANSI.yellow { "KeyRing v.#{keyring.version.to_s}: " } + ANSI.bold { @keyring_path }
114
+ puts ANSI.yellow { "fingerprint: " } + ANSI.bold{ ANSI.green { keyring.fingerprint } }
114
115
  puts "--" * 40
115
116
  keyring.keys.sort_by { |x| x&.tag || '' }.each(&method(:show_record))
116
117
  if (keyring.keys.size > 0)
@@ -122,6 +123,18 @@ Usage:
122
123
  }
123
124
  }
124
125
 
126
+ opts.on("-x", "--change-password [NEW_PASSWORD]",
127
+ "change password. if the password it not specified, it ",
128
+ "will be requested. Don't forget to use -- to separate",
129
+ "this option from the repository name when needed") { |np|
130
+ task {
131
+ kr = keyring
132
+ new_password = np || request_password2("enter new password")
133
+ kr.change_password new_password
134
+ puts "password has been changed"
135
+ }
136
+ }
137
+
125
138
  opts.on("--init", "-i", "initialize new keyring. Does not change any existing keyring") {
126
139
  task {
127
140
  @keyring = KeyRing.new(@keyring_path, password: @password, password_proc: ->(x) { self.request_password2 x },
@@ -1,3 +1,3 @@
1
1
  module UniversaTools
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: universa_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - sergeych
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-02 00:00:00.000000000 Z
11
+ date: 2019-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: universa