universa_tools 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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