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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d1a9a636263c7a8b720c8f54649b22a02d3afd4e
4
- data.tar.gz: f5a8c4e5ed511dc60a7df47ed4239eeff3437513
3
+ metadata.gz: 0d737f594b6ef3c926a323bc2c06b797ce24fc09
4
+ data.tar.gz: 8a4989e67d3dcbea62c84f1f60a40b41f3ca5a74
5
5
  SHA512:
6
- metadata.gz: 89419348db067439802b64b2018ba3706e904be1f164255e046d3a39879b874e88b6772ebd6777b6634b2447ef4daae8300c710a59b637b809019774561b2968
7
- data.tar.gz: 6e5c379c6de44614898d587aa09e810a968b163121859627e5f9f8dfcfa4bf5a31720af2300f9671272515a7c92528a84a6d74e8a959b5b6d6978546039a1bab
6
+ metadata.gz: 5f079c8178b435afd07a54c61e415b84ac4f9c0197b7961adde3313e460088a1b979a3d79f8308d4a64be686d5d4da7dba4af1bce38dc918c198102898717279
7
+ data.tar.gz: 569191e6793162f0ca29a9efa2d45fd09208f629b8e2e043ca08db21c4590f58c15aec92af220b7ad32bc2f8a3bc29819ef5efe1cdd81d2bb58bacdca8002e46
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.1 (2016-05-27)
4
+
5
+ * Enhancements
6
+ * Support for `JOSE::JWK::Set` for key sets.
7
+
8
+ * Fixes
9
+ * Many of the file writing operations for `JOSE::JWK` have been fixed.
10
+
3
11
  ## 1.1.0 (2016-05-10)
4
12
 
5
13
  * Enhancements
@@ -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"})
@@ -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).to_file(file)
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).to_file(file)
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).to_file(file, password)
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`.
@@ -1,8 +1,6 @@
1
1
  module JOSE::JWK::KTY
2
2
 
3
- extend self
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',
@@ -1,2 +1,23 @@
1
- class JOSE::JWK::Set
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
@@ -1,3 +1,3 @@
1
1
  module JOSE
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
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.0
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-10 00:00:00.000000000 Z
11
+ date: 2016-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hamster