jose 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/docs/KeyGeneration.md +1 -1
- data/lib/jose/jwk.rb +5 -3
- data/lib/jose/jwk/kty.rb +3 -5
- data/lib/jose/jwk/set.rb +22 -1
- data/lib/jose/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d737f594b6ef3c926a323bc2c06b797ce24fc09
|
4
|
+
data.tar.gz: 8a4989e67d3dcbea62c84f1f60a40b41f3ca5a74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f079c8178b435afd07a54c61e415b84ac4f9c0197b7961adde3313e460088a1b979a3d79f8308d4a64be686d5d4da7dba4af1bce38dc918c198102898717279
|
7
|
+
data.tar.gz: 569191e6793162f0ca29a9efa2d45fd09208f629b8e2e043ca08db21c4590f58c15aec92af220b7ad32bc2f8a3bc29819ef5efe1cdd81d2bb58bacdca8002e46
|
data/CHANGELOG.md
CHANGED
data/docs/KeyGeneration.md
CHANGED
@@ -127,7 +127,7 @@ jwk_oct64 = JOSE::JWE.generate_key({"alg" => "dir", "enc" => "A256CBC-HS512"})
|
|
127
127
|
|
128
128
|
### Method 4
|
129
129
|
|
130
|
-
If you have a JWS header with an `"alg"` field that requires a symmetric key, a new `oct` key will be generated based on the byte size recommended for `"alg"
|
130
|
+
If you have a JWS header with an `"alg"` field that requires a symmetric key, a new `oct` key will be generated based on the byte size recommended for `"alg"`.
|
131
131
|
|
132
132
|
```ruby
|
133
133
|
jwk_oct32 = JOSE::JWS.generate_key({"alg" => "HS256"})
|
data/lib/jose/jwk.rb
CHANGED
@@ -340,6 +340,8 @@ module JOSE
|
|
340
340
|
end
|
341
341
|
if key and jwe
|
342
342
|
return JOSE::JWE.block_encrypt(key, to_binary, jwe)
|
343
|
+
elsif kty.nil? and keys
|
344
|
+
return keys.to_map(fields)
|
343
345
|
else
|
344
346
|
return kty.to_map(fields)
|
345
347
|
end
|
@@ -370,7 +372,7 @@ module JOSE
|
|
370
372
|
# @param [String] file
|
371
373
|
# @return [Fixnum] bytes written
|
372
374
|
def self.to_oct_file(jwk, file)
|
373
|
-
return from(jwk).
|
375
|
+
return from(jwk).to_oct_file(file)
|
374
376
|
end
|
375
377
|
|
376
378
|
# Calls {JOSE::JWK#to_oct JOSE::JWK#to_oct} on a {JOSE::JWK JOSE::JWK} and then writes the binary to `file`.
|
@@ -425,7 +427,7 @@ module JOSE
|
|
425
427
|
# @param [String] file
|
426
428
|
# @return [Fixnum] bytes written
|
427
429
|
def self.to_openssh_key_file(jwk, file)
|
428
|
-
return from(jwk).
|
430
|
+
return from(jwk).to_openssh_key_file(file)
|
429
431
|
end
|
430
432
|
|
431
433
|
# Calls {JOSE::JWK#to_openssh_key JOSE::JWK#to_openssh_key} on a {JOSE::JWK JOSE::JWK} and then writes the binary to `file`.
|
@@ -464,7 +466,7 @@ module JOSE
|
|
464
466
|
# @param [String] password
|
465
467
|
# @return [Fixnum] bytes written
|
466
468
|
def self.to_pem_file(jwk, file, password = nil)
|
467
|
-
return from(jwk).
|
469
|
+
return from(jwk).to_pem_file(file, password)
|
468
470
|
end
|
469
471
|
|
470
472
|
# Calls {JOSE::JWK#to_pem JOSE::JWK#to_pem} on a {JOSE::JWK JOSE::JWK} and then writes the binary to `file`.
|
data/lib/jose/jwk/kty.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
module JOSE::JWK::KTY
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
def from_key(object)
|
3
|
+
def self.from_key(object)
|
6
4
|
object = object.__getobj__ if object.is_a?(JOSE::JWK::PKeyProxy)
|
7
5
|
case object
|
8
6
|
when OpenSSL::PKey::EC
|
@@ -10,11 +8,11 @@ module JOSE::JWK::KTY
|
|
10
8
|
when OpenSSL::PKey::RSA
|
11
9
|
return JOSE::JWK::KTY_RSA.from_key(object)
|
12
10
|
else
|
13
|
-
raise ArgumentError, "'object' is not a recognized key type"
|
11
|
+
raise ArgumentError, "'object' is not a recognized key type: #{object.class.name}"
|
14
12
|
end
|
15
13
|
end
|
16
14
|
|
17
|
-
def key_encryptor(kty, fields, key)
|
15
|
+
def self.key_encryptor(kty, fields, key)
|
18
16
|
if key.is_a?(String)
|
19
17
|
return JOSE::Map[
|
20
18
|
'alg' => 'PBES2-HS256+A128KW',
|
data/lib/jose/jwk/set.rb
CHANGED
@@ -1,2 +1,23 @@
|
|
1
|
-
|
1
|
+
require 'hamster/vector'
|
2
|
+
|
3
|
+
# Immutable Set structure based on `Hamster::Vector`.
|
4
|
+
class JOSE::JWK::Set < Hamster::Vector
|
5
|
+
|
6
|
+
def self.from_map(fields)
|
7
|
+
if fields['keys'].is_a?(Array)
|
8
|
+
keys = fields['keys'].map do |key|
|
9
|
+
next JOSE::JWK.from(key)
|
10
|
+
end
|
11
|
+
return JOSE::JWK::Set.new(keys), fields.except('keys')
|
12
|
+
end
|
13
|
+
raise ArgumentError, "invalid 'OKP' crv 'X448' JWK"
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_map(fields)
|
17
|
+
jwks = self.map do |key|
|
18
|
+
next key.to_map
|
19
|
+
end.to_a
|
20
|
+
return fields.put('keys', jwks)
|
21
|
+
end
|
22
|
+
|
2
23
|
end
|
data/lib/jose/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Bennett
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hamster
|