cose-key 0.0.3 → 0.0.4
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/cose/key/ec2.rb +31 -22
- data/lib/cose/key/rsa.rb +18 -13
- data/lib/cose/key.rb +4 -12
- data/spec/cose/key_spec.rb +17 -17
- 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: c784f5570d8b6a8e70be5fab055c530c93fc11ae9c403f512b4104a82a48a14a
|
4
|
+
data.tar.gz: 80b22fce793a2855c191b86fd31bb553c461191d2707a81453a095bd8c1e6bd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97b1bbeafae1df9a0389e0168402b4f985723050a79f50323c35752861232d9d0591890dc20d414f8362518e3e5fd11f9a3e91a2128e2826869bc4bd746c3e7d
|
7
|
+
data.tar.gz: 7c0c92e1a663b35b1021e284bb8bf11c20452ce6fbf1192d946aa780d21e2c30fa2917c07f32bcca8e6666badb5d39c3e64b562840c3c8bcd1c4f149f42a519a
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/lib/cose/key/ec2.rb
CHANGED
@@ -6,13 +6,16 @@ module COSE
|
|
6
6
|
Y = -3
|
7
7
|
D = -4
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
ALGS = {
|
10
|
+
ES256: -7,
|
11
|
+
ES384: -35,
|
12
|
+
ES512: -36
|
13
|
+
}
|
14
|
+
CRVS = {
|
15
|
+
P256: 1,
|
16
|
+
P384: 2,
|
17
|
+
P521: 3
|
18
|
+
}
|
16
19
|
|
17
20
|
attr_accessor :crv, :x, :y, :d
|
18
21
|
|
@@ -24,37 +27,43 @@ module COSE
|
|
24
27
|
self.d = attrs[D]
|
25
28
|
end
|
26
29
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
+
def alg_key
|
31
|
+
ALGS.invert[alg] or
|
32
|
+
raise 'Unknown Algorithm'
|
33
|
+
end
|
34
|
+
|
35
|
+
def crv_key
|
36
|
+
CRVS.invert[crv] or
|
37
|
+
raise 'Unknown Curve'
|
38
|
+
end
|
39
|
+
|
40
|
+
def crv_name
|
41
|
+
case crv_key
|
42
|
+
when :P256
|
30
43
|
'prime256v1'
|
31
|
-
when P384
|
44
|
+
when :P384
|
32
45
|
'secp384r1'
|
33
|
-
when P521
|
46
|
+
when :P521
|
34
47
|
'secp521r1'
|
35
|
-
else
|
36
|
-
raise 'Unknown Curve'
|
37
48
|
end
|
38
49
|
end
|
39
50
|
|
40
51
|
def digest
|
41
|
-
case
|
42
|
-
when ES256
|
52
|
+
case alg_key
|
53
|
+
when :ES256
|
43
54
|
OpenSSL::Digest::SHA256
|
44
|
-
when ES384
|
55
|
+
when :ES384
|
45
56
|
OpenSSL::Digest::SHA384
|
46
|
-
when ES512
|
57
|
+
when :ES512
|
47
58
|
OpenSSL::Digest::SHA512
|
48
|
-
else
|
49
|
-
raise 'Unknown Algorithm'
|
50
59
|
end.new
|
51
60
|
end
|
52
61
|
|
53
62
|
def to_key
|
54
|
-
key = OpenSSL::PKey::EC.new
|
63
|
+
key = OpenSSL::PKey::EC.new crv_name
|
55
64
|
key.private_key = OpenSSL::BN.new(d, 2) if d
|
56
65
|
key.public_key = OpenSSL::PKey::EC::Point.new(
|
57
|
-
OpenSSL::PKey::EC::Group.new(
|
66
|
+
OpenSSL::PKey::EC::Group.new(crv_name),
|
58
67
|
OpenSSL::BN.new([
|
59
68
|
'04' +
|
60
69
|
x.unpack('H*').first +
|
data/lib/cose/key/rsa.rb
CHANGED
@@ -10,12 +10,14 @@ module COSE
|
|
10
10
|
DQ = -7
|
11
11
|
QI = -8
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
ALGS = {
|
14
|
+
PS256: -37,
|
15
|
+
PS384: -38,
|
16
|
+
PS512: -39,
|
17
|
+
RSAES_OAEP_SHA1: -40,
|
18
|
+
RSAES_OAEP_SHA256: -41,
|
19
|
+
RSAES_OAEP_SHA512: -42
|
20
|
+
}
|
19
21
|
|
20
22
|
attr_accessor :n, :e, :d, :p, :q, :dp, :dq, :qi
|
21
23
|
|
@@ -31,18 +33,21 @@ module COSE
|
|
31
33
|
self.qi = attrs[QI]
|
32
34
|
end
|
33
35
|
|
36
|
+
def alg_key
|
37
|
+
ALGS.invert[alg] or
|
38
|
+
raise 'Unknown Algorithm'
|
39
|
+
end
|
40
|
+
|
34
41
|
def digest
|
35
|
-
case
|
36
|
-
when RSAES_OAEP_SHA1
|
42
|
+
case alg_key
|
43
|
+
when :RSAES_OAEP_SHA1
|
37
44
|
OpenSSL::Digest::SHA1
|
38
|
-
when PS256, RSAES_OAEP_SHA256
|
45
|
+
when :PS256, :RSAES_OAEP_SHA256
|
39
46
|
OpenSSL::Digest::SHA256
|
40
|
-
when PS384
|
47
|
+
when :PS384
|
41
48
|
OpenSSL::Digest::SHA384
|
42
|
-
when PS512, RSAES_OAEP_SHA512
|
49
|
+
when :PS512, :RSAES_OAEP_SHA512
|
43
50
|
OpenSSL::Digest::SHA512
|
44
|
-
else
|
45
|
-
raise 'Unknown Algorithm'
|
46
51
|
end.new
|
47
52
|
end
|
48
53
|
|
data/lib/cose/key.rb
CHANGED
@@ -24,24 +24,16 @@ module COSE
|
|
24
24
|
self.base_iv = attrs[BASE_IV]
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
27
|
+
def alg_key
|
28
28
|
raise 'Implement me'
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
31
|
+
def digest
|
32
32
|
raise 'Implement me'
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
def to_pem
|
40
|
-
to_key.to_pem
|
41
|
-
end
|
42
|
-
|
43
|
-
def to_text
|
44
|
-
to_key.to_text
|
35
|
+
def to_key
|
36
|
+
raise 'Implement me'
|
45
37
|
end
|
46
38
|
|
47
39
|
class << self
|
data/spec/cose/key_spec.rb
CHANGED
@@ -21,8 +21,23 @@ RSpec.describe COSE::Key do
|
|
21
21
|
it { should be_instance_of COSE::Key::EC2 }
|
22
22
|
end
|
23
23
|
|
24
|
-
describe '#
|
25
|
-
subject { decoded.
|
24
|
+
describe '#raw' do
|
25
|
+
subject { decoded.raw }
|
26
|
+
it { should == ec2_cbor }
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#alg_key' do
|
30
|
+
subject { decoded.alg_key }
|
31
|
+
it { should == :ES256 }
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#crv_key' do
|
35
|
+
subject { decoded.crv_key }
|
36
|
+
it { should == :P256 }
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#crv_name' do
|
40
|
+
subject { decoded.crv_name }
|
26
41
|
it { should == 'prime256v1' }
|
27
42
|
end
|
28
43
|
|
@@ -35,21 +50,6 @@ RSpec.describe COSE::Key do
|
|
35
50
|
subject { decoded.to_key }
|
36
51
|
it { should be_instance_of OpenSSL::PKey::EC }
|
37
52
|
end
|
38
|
-
|
39
|
-
# describe '#to_s' do
|
40
|
-
# subject { decoded.to_s }
|
41
|
-
# it { should == ec2_cbor }
|
42
|
-
# end
|
43
|
-
|
44
|
-
describe '#to_pem' do
|
45
|
-
subject { decoded.to_pem }
|
46
|
-
it { should == ec2_pem }
|
47
|
-
end
|
48
|
-
|
49
|
-
describe '#to_text' do
|
50
|
-
subject { decoded.to_text }
|
51
|
-
it { should == ec2_key.to_text }
|
52
|
-
end
|
53
53
|
end
|
54
54
|
|
55
55
|
context 'for RSA keys' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cose-key
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nov matake
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cbor
|