oydid 0.3.5 → 0.4.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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/oydid/didcomm.rb +50 -0
  4. data/lib/oydid.rb +7 -3
  5. metadata +17 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 650a9932c8e9415475df701ed1586a7e62571ce1321882d2727d50afdb3a1310
4
- data.tar.gz: '0097527fb39e8d7ffcb45600adee12e57fe75d6a38086f55f425c1ad8575324a'
3
+ metadata.gz: '080c68f559573f4402ed202c539848c9bdc72e173697061b8e8005c06b64d06b'
4
+ data.tar.gz: 5614b9dc152ff70f3f1e951f0db39a41a46dddaa17aa4088652e1d3c17cd8115
5
5
  SHA512:
6
- metadata.gz: 531da000b53c0badd365323041b3765b9e05cd1a53e5f7f2aa6afc83cf91c1c7f9e8cdb1ac3bcd88ac4c9a7c8fc9eea10ab43e02b260461a28e4b98aff4fcf03
7
- data.tar.gz: 0e37c5cfa2212596750861a8c7854064974535341a39c177fd89cbadbfe48ff6e6839ee2dfd25997cfa0e0305ce05648cde958925ca11ed16a7315bde7198d88
6
+ metadata.gz: 7d594168b9e609882afff27e8b92e9740acb5500a328ecf9599a3c8ee848a4917921744117810263957585f6f3b8d742c5a00362d516b871ffe3f2dd73d4f494
7
+ data.tar.gz: '0571905fda5580900ecaea886909e951da2fe1636cb001e8984f95837733a4ce453aaae928525cf6521e8c50b9428afc7941aed1bd02855fd20e3a61e16d10d8'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.5
1
+ 0.4.1
@@ -0,0 +1,50 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ class Oydid
5
+
6
+ # DIDComm Plain Message ---------------------
7
+ def self.dcpm(payload, options)
8
+ dcDoc = {}
9
+ dcDoc["id"] = SecureRandom.random_number(10e14).to_i
10
+ dcDoc["type"] = options[:didcomm_type]
11
+ if !options[:didcomm_from_did].nil?
12
+ dcDoc["from"] = options[:didcomm_from_did]
13
+ end
14
+ dcDoc["to"] = [options[:didcomm_to_did]]
15
+ dcDoc["created_time"] = Time.now.utc.to_i
16
+ dcDoc["body"] = payload
17
+ return [dcDoc, ""]
18
+
19
+ end
20
+
21
+ # signing -----------------------------------
22
+ def self.msg_encrypt(payload, private_key_encoded)
23
+ error = ""
24
+ code, length, digest = decode(private_key_encoded).unpack('SCa*')
25
+ case Multicodecs[code].name
26
+ when 'ed25519-priv'
27
+ private_key = RbNaCl::Signatures::Ed25519::SigningKey.new(digest)
28
+ token = JWT.encode payload, private_key, 'ED25519'
29
+ else
30
+ token = nil
31
+ error = "unsupported key codec"
32
+ end
33
+ return [token, error]
34
+ end
35
+
36
+ def self.msg_decrypt(token, public_key_encoded)
37
+ error = ""
38
+ code, length, digest = Oydid.decode(public_key_encoded).unpack('CCa*')
39
+ case Multicodecs[code].name
40
+ when 'ed25519-pub'
41
+ public_key = RbNaCl::Signatures::Ed25519::VerifyKey.new(digest)
42
+ payload = JWT.decode token.to_s, public_key, true, { algorithm: 'ED25519' }
43
+ else
44
+ payload = nil
45
+ error = "unsupported key codec"
46
+ end
47
+ return [payload, error]
48
+ end
49
+
50
+ end
data/lib/oydid.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'dag'
5
+ require 'jwt'
5
6
  require 'rbnacl'
6
7
  require 'ed25519'
7
8
  require 'httparty'
@@ -11,6 +12,7 @@ require 'multicodecs'
11
12
  require 'json/canonicalization'
12
13
  require 'oydid/basic'
13
14
  require 'oydid/log'
15
+ require 'oydid/didcomm'
14
16
 
15
17
  class Oydid
16
18
 
@@ -670,17 +672,17 @@ class Oydid
670
672
  wd = {}
671
673
  wd["@context"] = "https://www.w3.org/ns/did/v1"
672
674
  wd["id"] = did
673
- wd["verificationMethod"] = [{
675
+ wd["assertionMethod"] = [{
674
676
  "id": did,
675
677
  "type": "Ed25519VerificationKey2020",
676
678
  "controller": did,
677
- "publicKeyBase58": pubDocKey
679
+ "publicKeyMultibase": pubDocKey
678
680
  }]
679
681
  wd["keyAgreement"] = [{
680
682
  "id": did,
681
683
  "type": "Ed25519VerificationKey2020",
682
684
  "controller": did,
683
- "publicKeyBase58": pubRevKey
685
+ "publicKeyMultibase": pubRevKey
684
686
  }]
685
687
 
686
688
  if didDoc["@context"].to_s == "https://www.w3.org/ns/did/v1"
@@ -711,6 +713,8 @@ class Oydid
711
713
  else
712
714
  newDidDoc = didDoc["service"]
713
715
  end
716
+ else
717
+ newDidDoc = didDoc
714
718
  end
715
719
  else
716
720
  newDidDoc = didDoc
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.3.5
4
+ version: 0.4.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-05-23 00:00:00.000000000 Z
11
+ date: 2022-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dag
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.0.9
27
+ - !ruby/object:Gem::Dependency
28
+ name: jwt
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.4.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.4.1
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rbnacl
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -148,6 +162,7 @@ files:
148
162
  - VERSION
149
163
  - lib/oydid.rb
150
164
  - lib/oydid/basic.rb
165
+ - lib/oydid/didcomm.rb
151
166
  - lib/oydid/log.rb
152
167
  - spec/input/basic/arrays.json
153
168
  - spec/input/basic/french.json