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 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