oydid 0.2.0 → 0.3.1
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/VERSION +1 -1
- data/lib/oydid/basic.rb +5 -1
- data/lib/oydid.rb +98 -29
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac6225dd965dafae4c9a9013d023882dd0ffe6408eb8922ef4179b8c0be96e10
|
4
|
+
data.tar.gz: ec26220fc09876cef2fb554ebc8cb16b03485cd31d019514384831188addd645
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b982abdf30a063066e8d6d636cff2b144b80d25aca19aaadc13b2c9aa8f05a794f51362cd03877ad1113be6d08e4f0a038308eafed9c00a6aea25d10ef59db89
|
7
|
+
data.tar.gz: f783d819dea7744cfe54a1a7575cbf7657b56c0f836822a61eeb4b658e8e1eead2cc3cc1f2d120f06cca6e22e2c6ebda1d83ea3ce50a2050e5e37e2aa58fc4ee
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.1
|
data/lib/oydid/basic.rb
CHANGED
data/lib/oydid.rb
CHANGED
@@ -139,9 +139,9 @@ class Oydid
|
|
139
139
|
|
140
140
|
def self.generate_base(content, did, mode, options)
|
141
141
|
# input validation
|
142
|
-
did_doc = JSON.parse(content.to_json) rescue
|
143
|
-
if did_doc
|
144
|
-
return [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "
|
142
|
+
did_doc = JSON.parse(content.to_json) rescue nil
|
143
|
+
if did_doc.nil?
|
144
|
+
return [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "invalid payload"]
|
145
145
|
end
|
146
146
|
did_old = nil
|
147
147
|
log_old = nil
|
@@ -205,8 +205,38 @@ class Oydid
|
|
205
205
|
did_old = did.dup
|
206
206
|
did10_old = did10.dup
|
207
207
|
log_old = did_info["log"]
|
208
|
-
|
209
|
-
|
208
|
+
if options[:old_doc_key].nil?
|
209
|
+
if options[:old_doc_enc].nil?
|
210
|
+
if options[:old_doc_pwd].nil?
|
211
|
+
privateKey_old = read_private_storage(did10_old + "_private_key.b58")
|
212
|
+
else
|
213
|
+
privateKey_old, msg = generate_private_key(options[:old_doc_pwd].to_s, 'ed25519-priv')
|
214
|
+
end
|
215
|
+
else
|
216
|
+
privateKey_old, msg = decode_private_key(options[:old_doc_enc].to_s)
|
217
|
+
end
|
218
|
+
else
|
219
|
+
privateKey_old, msg = read_private_key(options[:old_doc_key].to_s)
|
220
|
+
end
|
221
|
+
if privateKey_old.nil?
|
222
|
+
return [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "invalid or missing old private document key"]
|
223
|
+
end
|
224
|
+
if options[:old_rev_key].nil?
|
225
|
+
if options[:old_rev_enc].nil?
|
226
|
+
if options[:old_rev_pwd].nil?
|
227
|
+
revocationKey_old = read_private_storage(did10_old + "_revocation_key.b58")
|
228
|
+
else
|
229
|
+
revocationKey_old, msg = generate_private_key(options[:old_rev_pwd].to_s, 'ed25519-priv')
|
230
|
+
end
|
231
|
+
else
|
232
|
+
revocationKey_old, msg = decode_private_key(options[:old_rev_enc].to_s)
|
233
|
+
end
|
234
|
+
else
|
235
|
+
revocationKey_old, msg = read_private_key(options[:old_rev_key].to_s)
|
236
|
+
end
|
237
|
+
if revocationKey_old.nil?
|
238
|
+
return [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "invalid or missing old private revocation key"]
|
239
|
+
end
|
210
240
|
|
211
241
|
# key management
|
212
242
|
if options[:doc_key].nil?
|
@@ -218,13 +248,19 @@ class Oydid
|
|
218
248
|
else
|
219
249
|
privateKey, msg = read_private_key(options[:doc_key].to_s)
|
220
250
|
end
|
221
|
-
if options[:rev_key].nil? && options[:rev_pwd].nil?
|
222
|
-
|
223
|
-
|
224
|
-
|
251
|
+
# if options[:rev_key].nil? && options[:rev_pwd].nil? && options[:rev_enc].nil?
|
252
|
+
# revocationLog = read_private_storage(did10 + "_revocation.json")
|
253
|
+
# if revocationLog.nil?
|
254
|
+
# return [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "invalid or missing old revocation log"]
|
255
|
+
# end
|
256
|
+
# else
|
225
257
|
if options[:rev_key].nil?
|
226
258
|
if options[:rev_enc].nil?
|
227
|
-
|
259
|
+
if options[:rev_pwd].nil?
|
260
|
+
revocationKey, msg = generate_private_key("", 'ed25519-priv')
|
261
|
+
else
|
262
|
+
revocationKey, msg = generate_private_key(options[:rev_pwd].to_s, 'ed25519-priv')
|
263
|
+
end
|
228
264
|
else
|
229
265
|
revocationKey, msg = decode_private_key(options[:rev_enc].to_s)
|
230
266
|
end
|
@@ -246,7 +282,7 @@ class Oydid
|
|
246
282
|
"op": 1, # REVOKE
|
247
283
|
"doc": subDidHash,
|
248
284
|
"sig": signedSubDidHash }.transform_keys(&:to_s).to_json
|
249
|
-
end
|
285
|
+
# end
|
250
286
|
revoc_log = JSON.parse(revocationLog)
|
251
287
|
revoc_log["previous"] = [
|
252
288
|
hash(canonical(log_old[did_info["doc_log_id"].to_i])),
|
@@ -431,7 +467,7 @@ class Oydid
|
|
431
467
|
end
|
432
468
|
end
|
433
469
|
|
434
|
-
def self.
|
470
|
+
def self.revoke_base(did, options)
|
435
471
|
did_orig = did.dup
|
436
472
|
doc_location = options[:doc_location]
|
437
473
|
if options[:ts].nil?
|
@@ -462,25 +498,40 @@ class Oydid
|
|
462
498
|
did_old = did.dup
|
463
499
|
did10_old = did10.dup
|
464
500
|
log_old = did_info["log"]
|
465
|
-
privateKey_old = read_private_storage(did10_old + "_private_key.b58")
|
466
|
-
revocationKey_old = read_private_storage(did10_old + "_revocation_key.b58")
|
467
501
|
|
468
|
-
if options[:
|
469
|
-
if options[:
|
470
|
-
if options[:
|
471
|
-
|
502
|
+
if options[:old_doc_key].nil?
|
503
|
+
if options[:old_doc_enc].nil?
|
504
|
+
if options[:old_doc_pwd].nil?
|
505
|
+
privateKey_old = read_private_storage(did10_old + "_private_key.b58")
|
472
506
|
else
|
473
|
-
|
507
|
+
privateKey_old, msg = generate_private_key(options[:old_doc_pwd].to_s, 'ed25519-priv')
|
474
508
|
end
|
475
509
|
else
|
476
|
-
|
510
|
+
privateKey_old, msg = decode_private_key(options[:old_doc_enc].to_s)
|
477
511
|
end
|
478
512
|
else
|
479
|
-
|
513
|
+
privateKey_old, msg = read_private_key(options[:old_doc_key].to_s)
|
480
514
|
end
|
481
|
-
if
|
482
|
-
return [nil, "private key
|
515
|
+
if privateKey_old.nil?
|
516
|
+
return [nil, "invalid or missing old private document key"]
|
483
517
|
end
|
518
|
+
if options[:old_rev_key].nil?
|
519
|
+
if options[:old_rev_enc].nil?
|
520
|
+
if options[:old_rev_pwd].nil?
|
521
|
+
revocationKey_old = read_private_storage(did10_old + "_revocation_key.b58")
|
522
|
+
else
|
523
|
+
revocationKey_old, msg = generate_private_key(options[:old_rev_pwd].to_s, 'ed25519-priv')
|
524
|
+
end
|
525
|
+
else
|
526
|
+
revocationKey_old, msg = decode_private_key(options[:old_rev_enc].to_s)
|
527
|
+
end
|
528
|
+
else
|
529
|
+
revocationKey_old, msg = read_private_key(options[:old_rev_key].to_s)
|
530
|
+
end
|
531
|
+
if revocationKey_old.nil?
|
532
|
+
return [nil, "invalid or missing old private revocation key"]
|
533
|
+
end
|
534
|
+
|
484
535
|
if options[:rev_key].nil? && options[:rev_pwd].nil? && options[:rev_enc].nil?
|
485
536
|
revocationKey, msg = read_private_key(did10 + "_revocation_key.b58")
|
486
537
|
revocationLog = read_private_storage(did10 + "_revocation.json")
|
@@ -502,7 +553,7 @@ class Oydid
|
|
502
553
|
did_key_old = publicKey_old + ":" + pubRevoKey_old
|
503
554
|
subDid = {"doc": did_old_doc, "key": did_key_old}.to_json
|
504
555
|
subDidHash = hash(subDid)
|
505
|
-
signedSubDidHash = sign(subDidHash,
|
556
|
+
signedSubDidHash = sign(subDidHash, revocationKey_old).first
|
506
557
|
revocationLog = {
|
507
558
|
"ts": ts_old,
|
508
559
|
"op": 1, # REVOKE
|
@@ -519,7 +570,18 @@ class Oydid
|
|
519
570
|
hash(canonical(log_old[did_info["doc_log_id"].to_i])),
|
520
571
|
hash(canonical(log_old[did_info["termination_log_id"].to_i]))
|
521
572
|
]
|
573
|
+
return [revoc_log, ""]
|
574
|
+
end
|
522
575
|
|
576
|
+
def self.revoke_publish(did, revoc_log, options)
|
577
|
+
did_hash = did.delete_prefix("did:oyd:")
|
578
|
+
did10 = did_hash[0,10]
|
579
|
+
doc_location = options[:doc_location]
|
580
|
+
if did_hash.include?(LOCATION_PREFIX)
|
581
|
+
hash_split = did_hash.split(LOCATION_PREFIX)
|
582
|
+
did_hash = hash_split[0]
|
583
|
+
doc_location = hash_split[1]
|
584
|
+
end
|
523
585
|
if doc_location.to_s == ""
|
524
586
|
doc_location = DEFAULT_LOCATION
|
525
587
|
end
|
@@ -527,22 +589,29 @@ class Oydid
|
|
527
589
|
# publish revocation log based on location
|
528
590
|
case doc_location.to_s
|
529
591
|
when /^http/
|
530
|
-
retVal = HTTParty.post(doc_location.to_s + "/log/" +
|
592
|
+
retVal = HTTParty.post(doc_location.to_s + "/log/" + did_hash.to_s,
|
531
593
|
headers: { 'Content-Type' => 'application/json' },
|
532
594
|
body: {"log": revoc_log}.to_json )
|
533
595
|
if retVal.code != 200
|
534
|
-
msg = retVal.parsed_response("error").to_s rescue "invalid response from " + doc_location.to_s + "/log/" +
|
596
|
+
msg = retVal.parsed_response("error").to_s rescue "invalid response from " + doc_location.to_s + "/log/" + did_hash.to_s
|
535
597
|
return [nil, msg]
|
536
598
|
end
|
537
599
|
else
|
538
|
-
File.write(did10 + ".log",
|
600
|
+
File.write(did10 + ".log", revoc_log.to_json)
|
539
601
|
if !did_old.nil?
|
540
|
-
File.write(did10_old + ".log",
|
602
|
+
File.write(did10_old + ".log", revoc_log.to_json)
|
541
603
|
end
|
542
604
|
end
|
543
605
|
|
544
|
-
return [
|
606
|
+
return [did, ""]
|
607
|
+
end
|
545
608
|
|
609
|
+
def self.revoke(did, options)
|
610
|
+
revoc_log, msg = revoke_base(did, options)
|
611
|
+
if revoc_log.nil?
|
612
|
+
return [nil, msg]
|
613
|
+
end
|
614
|
+
success, msg = revoke_publish(did, revoc_log, options)
|
546
615
|
end
|
547
616
|
|
548
617
|
def self.clone(did, options)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oydid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoph Fabianek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dag
|