jose 1.1.0 → 1.1.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/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
|