jose 1.1.3 → 1.2.0
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/.github/workflows/ci.yml +27 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +11 -0
- data/Gemfile +9 -2
- data/LICENSE.md +22 -373
- data/README.md +2 -2
- data/Rakefile +1 -0
- data/jose.gemspec +6 -5
- data/lib/jose/jwa/curve25519_rbnacl.rb +0 -4
- data/lib/jose/jwa/ed25519_rbnacl.rb +18 -1
- data/lib/jose/jwa/pkcs1.rb +2 -2
- data/lib/jose/jwa/xchacha20poly1305.rb +61 -0
- data/lib/jose/jwa/xchacha20poly1305_rbnacl.rb +35 -0
- data/lib/jose/jwa/xchacha20poly1305_unsupported.rb +16 -0
- data/lib/jose/jwa.rb +9 -4
- data/lib/jose/jwe/alg.rb +2 -0
- data/lib/jose/jwe/alg_aes_gcm_kw.rb +1 -1
- data/lib/jose/jwe/alg_c20p_kw.rb +100 -0
- data/lib/jose/jwe/alg_xc20p_kw.rb +86 -0
- data/lib/jose/jwe/enc.rb +2 -0
- data/lib/jose/jwe/enc_c20p.rb +62 -0
- data/lib/jose/jwe/enc_xc20p.rb +49 -0
- data/lib/jose/jwe.rb +8 -0
- data/lib/jose/jwk/kty_ec.rb +20 -5
- data/lib/jose/jwk/kty_rsa.rb +46 -32
- data/lib/jose/jwk/openssh_key.rb +0 -1
- data/lib/jose/jwk/set.rb +3 -3
- data/lib/jose/jwk.rb +1 -1
- data/lib/jose/version.rb +1 -1
- data/lib/jose.rb +23 -3
- metadata +35 -15
- data/.travis.yml +0 -18
    
        data/lib/jose.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            require 'jose/version'
         | 
| 2 2 |  | 
| 3 3 | 
             
            require 'base64'
         | 
| 4 | 
            -
            require ' | 
| 4 | 
            +
            require 'immutable/hash'
         | 
| 5 5 | 
             
            require 'json'
         | 
| 6 6 | 
             
            require 'openssl'
         | 
| 7 7 | 
             
            require 'securerandom'
         | 
| @@ -28,8 +28,8 @@ module JOSE | |
| 28 28 | 
             
              # @!visibility private
         | 
| 29 29 | 
             
              MUTEX = Mutex.new
         | 
| 30 30 |  | 
| 31 | 
            -
              # Immutable Map structure based on ` | 
| 32 | 
            -
              class Map <  | 
| 31 | 
            +
              # Immutable Map structure based on `Immutable::Hash`.
         | 
| 32 | 
            +
              class Map < Immutable::Hash; end
         | 
| 33 33 |  | 
| 34 34 | 
             
              @__crypto_fallback__ = ENV['JOSE_CRYPTO_FALLBACK'] ? true : false
         | 
| 35 35 | 
             
              @__unsecured_signing__ = ENV['JOSE_UNSECURED_SIGNING'] ? true : false
         | 
| @@ -148,11 +148,31 @@ module JOSE | |
| 148 148 | 
             
                return Base64.strict_encode64(binary).tr('+/', '-_').delete('=')
         | 
| 149 149 | 
             
              end
         | 
| 150 150 |  | 
| 151 | 
            +
              # Gets the current XChaCha20-Poly1305 module used by {JOSE::JWA::XChaCha20Poly1305 JOSE::JWA::XChaCha20Poly1305}, see {.xchacha20poly1305_module=} for default.
         | 
| 152 | 
            +
              # @return [Module]
         | 
| 153 | 
            +
              def self.xchacha20poly1305_module
         | 
| 154 | 
            +
                return JOSE::JWA::XChaCha20Poly1305.__implementation__
         | 
| 155 | 
            +
              end
         | 
| 156 | 
            +
             | 
| 157 | 
            +
              # Sets the current XChaCha20Poly1305 module used by {JOSE::JWA::XChaCha20Poly1305 JOSE::JWA::XChaCha20Poly1305}.
         | 
| 158 | 
            +
              #
         | 
| 159 | 
            +
              # Currently supported XChaCha20Poly1305 modules (first found is used as default):
         | 
| 160 | 
            +
              #
         | 
| 161 | 
            +
              #   * {https://github.com/cryptosphere/rbnacl `RbNaCl`}
         | 
| 162 | 
            +
              #
         | 
| 163 | 
            +
              # Additional modules that implement the functions specified in {JOSE::JWA::XChaCha20Poly1305 JOSE::JWA::XChaCha20Poly1305} may also be used.
         | 
| 164 | 
            +
              # @param [Module] mod
         | 
| 165 | 
            +
              # @return [Module]
         | 
| 166 | 
            +
              def self.xchacha20poly1305_module=(mod)
         | 
| 167 | 
            +
                JOSE::JWA::XChaCha20Poly1305.__implementation__ = mod
         | 
| 168 | 
            +
              end
         | 
| 169 | 
            +
             | 
| 151 170 | 
             
            private
         | 
| 152 171 |  | 
| 153 172 | 
             
              def self.__config_change__
         | 
| 154 173 | 
             
                JOSE::JWA::Curve25519.__config_change__
         | 
| 155 174 | 
             
                JOSE::JWA::Curve448.__config_change__
         | 
| 175 | 
            +
                JOSE::JWA::XChaCha20Poly1305.__config_change__
         | 
| 156 176 | 
             
              end
         | 
| 157 177 |  | 
| 158 178 | 
             
              def self.sort_maps(term)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,17 +1,31 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: jose
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Andrew Bennett
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-01-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 14 | 
            +
              name: base64
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ">="
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '0'
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ">="
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '0'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: immutable-ruby
         | 
| 15 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 30 | 
             
                requirements:
         | 
| 17 31 | 
             
                - - ">="
         | 
| @@ -30,28 +44,28 @@ dependencies: | |
| 30 44 | 
             
                requirements:
         | 
| 31 45 | 
             
                - - "~>"
         | 
| 32 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: ' | 
| 47 | 
            +
                    version: '2.5'
         | 
| 34 48 | 
             
              type: :development
         | 
| 35 49 | 
             
              prerelease: false
         | 
| 36 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 51 | 
             
                requirements:
         | 
| 38 52 | 
             
                - - "~>"
         | 
| 39 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: ' | 
| 54 | 
            +
                    version: '2.5'
         | 
| 41 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 56 | 
             
              name: rake
         | 
| 43 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 58 | 
             
                requirements:
         | 
| 45 59 | 
             
                - - "~>"
         | 
| 46 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: ' | 
| 61 | 
            +
                    version: '13.1'
         | 
| 48 62 | 
             
              type: :development
         | 
| 49 63 | 
             
              prerelease: false
         | 
| 50 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 65 | 
             
                requirements:
         | 
| 52 66 | 
             
                - - "~>"
         | 
| 53 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 68 | 
            +
                    version: '13.1'
         | 
| 55 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 70 | 
             
              name: minitest
         | 
| 57 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -81,7 +95,7 @@ dependencies: | |
| 81 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 96 | 
             
                    version: '0'
         | 
| 83 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name: rbnacl | 
| 98 | 
            +
              name: rbnacl
         | 
| 85 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 100 | 
             
                requirements:
         | 
| 87 101 | 
             
                - - ">="
         | 
| @@ -130,10 +144,10 @@ extensions: [] | |
| 130 144 | 
             
            extra_rdoc_files: []
         | 
| 131 145 | 
             
            files:
         | 
| 132 146 | 
             
            - ".editorconfig"
         | 
| 147 | 
            +
            - ".github/workflows/ci.yml"
         | 
| 133 148 | 
             
            - ".gitignore"
         | 
| 134 149 | 
             
            - ".ruby-gemset"
         | 
| 135 150 | 
             
            - ".ruby-version"
         | 
| 136 | 
            -
            - ".travis.yml"
         | 
| 137 151 | 
             
            - ".yardopts"
         | 
| 138 152 | 
             
            - CHANGELOG.md
         | 
| 139 153 | 
             
            - CODE_OF_CONDUCT.md
         | 
| @@ -173,17 +187,24 @@ files: | |
| 173 187 | 
             
            - lib/jose/jwa/x25519_cryptorb.rb
         | 
| 174 188 | 
             
            - lib/jose/jwa/x25519_rbnacl.rb
         | 
| 175 189 | 
             
            - lib/jose/jwa/x448.rb
         | 
| 190 | 
            +
            - lib/jose/jwa/xchacha20poly1305.rb
         | 
| 191 | 
            +
            - lib/jose/jwa/xchacha20poly1305_rbnacl.rb
         | 
| 192 | 
            +
            - lib/jose/jwa/xchacha20poly1305_unsupported.rb
         | 
| 176 193 | 
             
            - lib/jose/jwe.rb
         | 
| 177 194 | 
             
            - lib/jose/jwe/alg.rb
         | 
| 178 195 | 
             
            - lib/jose/jwe/alg_aes_gcm_kw.rb
         | 
| 179 196 | 
             
            - lib/jose/jwe/alg_aes_kw.rb
         | 
| 197 | 
            +
            - lib/jose/jwe/alg_c20p_kw.rb
         | 
| 180 198 | 
             
            - lib/jose/jwe/alg_dir.rb
         | 
| 181 199 | 
             
            - lib/jose/jwe/alg_ecdh_es.rb
         | 
| 182 200 | 
             
            - lib/jose/jwe/alg_pbes2.rb
         | 
| 183 201 | 
             
            - lib/jose/jwe/alg_rsa.rb
         | 
| 202 | 
            +
            - lib/jose/jwe/alg_xc20p_kw.rb
         | 
| 184 203 | 
             
            - lib/jose/jwe/enc.rb
         | 
| 185 204 | 
             
            - lib/jose/jwe/enc_aes_cbc_hmac.rb
         | 
| 186 205 | 
             
            - lib/jose/jwe/enc_aes_gcm.rb
         | 
| 206 | 
            +
            - lib/jose/jwe/enc_c20p.rb
         | 
| 207 | 
            +
            - lib/jose/jwe/enc_xc20p.rb
         | 
| 187 208 | 
             
            - lib/jose/jwe/zip.rb
         | 
| 188 209 | 
             
            - lib/jose/jwe/zip_def.rb
         | 
| 189 210 | 
             
            - lib/jose/jwk.rb
         | 
| @@ -213,9 +234,9 @@ files: | |
| 213 234 | 
             
            - lib/jose/version.rb
         | 
| 214 235 | 
             
            homepage: https://github.com/potatosalad/ruby-jose
         | 
| 215 236 | 
             
            licenses:
         | 
| 216 | 
            -
            -  | 
| 237 | 
            +
            - MIT
         | 
| 217 238 | 
             
            metadata: {}
         | 
| 218 | 
            -
            post_install_message: | 
| 239 | 
            +
            post_install_message:
         | 
| 219 240 | 
             
            rdoc_options: []
         | 
| 220 241 | 
             
            require_paths:
         | 
| 221 242 | 
             
            - lib
         | 
| @@ -230,9 +251,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 230 251 | 
             
                - !ruby/object:Gem::Version
         | 
| 231 252 | 
             
                  version: '0'
         | 
| 232 253 | 
             
            requirements: []
         | 
| 233 | 
            -
             | 
| 234 | 
            -
             | 
| 235 | 
            -
            signing_key: 
         | 
| 254 | 
            +
            rubygems_version: 3.5.3
         | 
| 255 | 
            +
            signing_key:
         | 
| 236 256 | 
             
            specification_version: 4
         | 
| 237 257 | 
             
            summary: JSON Object Signing and Encryption
         | 
| 238 258 | 
             
            test_files: []
         | 
    
        data/.travis.yml
    DELETED