Hello community,

here is the log from the commit of package rubygem-aes_key_wrap for 
openSUSE:Factory checked in at 2020-10-05 19:29:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-aes_key_wrap (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-aes_key_wrap.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-aes_key_wrap"

Mon Oct  5 19:29:40 2020 rev:2 rq:838018 version:1.1.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/rubygem-aes_key_wrap/rubygem-aes_key_wrap.changes    
    2018-05-08 13:37:18.605617826 +0200
+++ 
/work/SRC/openSUSE:Factory/.rubygem-aes_key_wrap.new.4249/rubygem-aes_key_wrap.changes
      2020-10-05 19:29:48.152524165 +0200
@@ -1,0 +2,6 @@
+Fri Sep 25 13:24:52 UTC 2020 - Stephan Kulow <[email protected]>
+
+updated to version 1.1.0
+  no changelog found
+
+-------------------------------------------------------------------

Old:
----
  aes_key_wrap-1.0.1.gem

New:
----
  aes_key_wrap-1.1.0.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-aes_key_wrap.spec ++++++
--- /var/tmp/diff_new_pack.nBda30/_old  2020-10-05 19:29:49.916525868 +0200
+++ /var/tmp/diff_new_pack.nBda30/_new  2020-10-05 19:29:49.920525872 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package rubygem-aes_key_wrap
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-aes_key_wrap
-Version:        1.0.1
+Version:        1.1.0
 Release:        0
 %define mod_name aes_key_wrap
 %define mod_full_name %{mod_name}-%{version}
@@ -32,7 +32,7 @@
 BuildRequires:  %{rubygem gem2rpm}
 BuildRequires:  %{ruby}
 BuildRequires:  ruby-macros >= 5
-Url:            https://github.com/tomdalling/aes_key_wrap
+URL:            https://github.com/tomdalling/aes_key_wrap
 Source:         https://rubygems.org/gems/%{mod_full_name}.gem
 Source1:        gem2rpm.yml
 Summary:        A Ruby implementation of AES Key Wrap, a.k.a RFC 3394, a.k.a 
NIST
@@ -48,7 +48,7 @@
 
 %install
 %gem_install \
-  --doc-files="LICENSE.txt README.md" \
+  --doc-files="CHANGELOG.md LICENSE.txt README.md" \
   -f
 
 %gem_packages

++++++ aes_key_wrap-1.0.1.gem -> aes_key_wrap-1.1.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.rspec new/.rspec
--- old/.rspec  2015-04-24 16:55:59.000000000 +0200
+++ new/.rspec  1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
---format documentation
---color
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.ruby-version new/.ruby-version
--- old/.ruby-version   2015-04-24 16:55:59.000000000 +0200
+++ new/.ruby-version   2020-07-11 17:11:09.000000000 +0200
@@ -1 +1 @@
-2.2.0
+2.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.travis.yml new/.travis.yml
--- old/.travis.yml     2015-04-24 16:55:59.000000000 +0200
+++ new/.travis.yml     2020-07-11 17:11:09.000000000 +0200
@@ -1 +1,22 @@
+script: bundle exec ruby test/aes_key_wrap.rb
 language: ruby
+
+# test on old rubies
+rvm:
+  - 2.3.8
+  - 2.4.10
+  - 2.5.8
+  - 2.6.6
+
+# run latest ruby differently (run codeclimate)
+matrix:
+  include:
+  - rvm: 2.7.1
+    # code climate config
+    env: 
CC_TEST_REPORTER_ID=112d90dacd3bbf36bbf39282309a52581175ae544be2cf8ef3b8c0c0221515f5
+    before_script:
+      - curl -L 
https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64
 > ./cc-test-reporter
+      - chmod +x ./cc-test-reporter
+      - ./cc-test-reporter before-build
+    after_script:
+      - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md    1970-01-01 01:00:00.000000000 +0100
+++ new/CHANGELOG.md    2020-07-11 17:11:09.000000000 +0200
@@ -0,0 +1,21 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a 
Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic 
Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [1.1.0] - 2020-07-12
+### Added
+- IV arguments can be either `String`s or `Integer`s. Previously, they could
+  only be `Integer`s. This is a backwards-compatible addition as long as you
+  aren't doing something freaky with IVs, like using negative numbers (they are
+  supposed to be unsigned).
+
+## [1.0.1] - 2015-04-24
+### Fixed
+- Didn't work unless you had `require 'openssl'` somewhere first. The gem now
+  `require`s its own dependencies, surprising no one.
+
+## [1.0.0] - 2015-04-24
+### Added
+- Everything (Initial release)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2015-04-24 16:55:59.000000000 +0200
+++ new/README.md       2020-07-11 17:11:09.000000000 +0200
@@ -1,4 +1,5 @@
 [![Build 
Status](https://travis-ci.org/tomdalling/aes_key_wrap.svg?branch=master)](https://travis-ci.org/tomdalling/aes_key_wrap)
+[![Test 
Coverage](https://codeclimate.com/github/tomdalling/aes_key_wrap/badges/coverage.svg)](https://codeclimate.com/github/tomdalling/aes_key_wrap)
 
 # AESKeyWrap 
 
@@ -14,20 +15,22 @@
 
 ```ruby
 require 'aes_key_wrap'
+
 plaintext_key = ['00112233445566778899AABBCCDDEEFF'].pack('H*') #binary string
 kek =  ['000102030405060708090A0B0C0D0E0F'].pack('H*') # binary string
-iv = 0xDEADBEEFC0FFEEEE
-wrapped_key = AESKeyWrap.wrap(plaintext_key, kek, iv)
+iv = ['DEADBEEFC0FFEEEE'].pack("H*") # binary string (always 8 bytes)
+
+wrapped_key = AESKeyWrap.wrap(plaintext_key, kek, iv)  # iv is optional
 ```
 
 To unwrap a key, call `AESKeyWrap.unwrap`:
 
 ```ruby
-unwrapped = AESKeyWrap.unwrap(wrapped_key, kek, iv)
+unwrapped = AESKeyWrap.unwrap(wrapped_key, kek, iv)  # iv is optional
 ```
 
-There also `unwrap!`, which throws an exception if unwrapping
-fails, instead of returning nil.
+There also `unwrap!`, which throws an exception if unwrapping fails, instead of
+returning nil.
 
 ## Contributing
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile        2015-04-24 16:55:59.000000000 +0200
+++ new/Rakefile        1970-01-01 01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-require "bundler/gem_tasks"
-
-begin
-  require 'rspec/core/rake_task'
-  RSpec::Core::RakeTask.new(:spec)
-rescue LoadError
-end
-
-task :default => :spec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aes_key_wrap.gemspec new/aes_key_wrap.gemspec
--- old/aes_key_wrap.gemspec    2015-04-24 16:55:59.000000000 +0200
+++ new/aes_key_wrap.gemspec    2020-07-11 17:11:09.000000000 +0200
@@ -16,7 +16,11 @@
   spec.files         = `git ls-files -z`.split("\x0").reject { |f| 
f.match(%r{^(test|spec|features)/}) }
   spec.require_paths = ['lib']
 
-  spec.add_development_dependency 'rake', '~> 10.0'
-  spec.add_development_dependency 'rspec', '~> 3.2.0'
+  spec.add_development_dependency 'test_bench', '~> 1.0'
+  spec.add_development_dependency 'gem-release'
+
+  # code climate doesn't support v0.18+
+  # see: https://github.com/codeclimate/test-reporter/issues/413
+  spec.add_development_dependency 'simplecov', '< 0.18'
 end
 
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/aes_key_wrap/version.rb 
new/lib/aes_key_wrap/version.rb
--- old/lib/aes_key_wrap/version.rb     2015-04-24 16:55:59.000000000 +0200
+++ new/lib/aes_key_wrap/version.rb     2020-07-11 17:11:09.000000000 +0200
@@ -1,3 +1,3 @@
 module AESKeyWrap
-  VERSION = '1.0.1'
+  VERSION = '1.1.0'
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/aes_key_wrap.rb new/lib/aes_key_wrap.rb
--- old/lib/aes_key_wrap.rb     2015-04-24 16:55:59.000000000 +0200
+++ new/lib/aes_key_wrap.rb     2020-07-11 17:11:09.000000000 +0200
@@ -5,6 +5,8 @@
 #
 module AESKeyWrap
   DEFAULT_IV = 0xA6A6A6A6A6A6A6A6
+  IV_SIZE = 8 # bytes
+
   UnwrapFailedError = Class.new(StandardError)
 
   class << self
@@ -18,7 +20,9 @@
     #
     # @param unwrapped_key [String] The plaintext key to be wrapped, as a 
binary string
     # @param kek [String] The key-encrypting key, as a binary_string
-    # @param iv [Integer] The "initial value", as unsigned 64bit integer
+    # @param iv [Integer, String] The "initial value", as either an unsigned
+    #   64-bit integer (e.g. `0xDEADBEEFC0FFEEEE`) or an 8-byte string (e.g.
+    #   `"\xDE\xAD\xBE\xEF\xC0\xFF\xEE\xEE"`).
     # @return [String] The wrapped key, as a binary string
     #
     def wrap(unwrapped_key, kek, iv=DEFAULT_IV)
@@ -31,7 +35,7 @@
       #    n: block_count
       #    AES: aes(:encrypt, _, _)
       #    IV: iv
-      buffer = [iv] + unwrapped_key.unpack('Q>*')
+      buffer = [coerce_uint64(iv)] + unwrapped_key.unpack('Q>*')
       block_count = buffer.size - 1
 
       # 2) Calculate intermediate values.
@@ -61,10 +65,12 @@
     #
     # @param wrapped_key [String] The wrapped key (cyphertext), as a binary 
string
     # @param kek [String] The key-encrypting key, as a binary string
-    # @param expected_iv [Integer] The IV used to wrap the key, as an unsigned 
64bit integer
+    # @param expected_iv [Integer, String] The IV used to wrap the key, as 
either
+    #   an unsigned 64-bit integer (e.g. `0xDEADBEEFC0FFEEEE`) or an 8-byte
+    #   string (e.g. `"\xDE\xAD\xBE\xEF\xC0\xFF\xEE\xEE"`).
     # @return [String] The unwrapped (plaintext) key as a binary string, or
-    #                  `nil` if unwrapping failed due to `expected_iv` not 
matching the
-    #                  decrypted IV
+    #   `nil` if unwrapping failed due to `expected_iv` not matching the
+    #   decrypted IV
     #
     # @see #unwrap!
     #
@@ -95,7 +101,7 @@
       end
 
       # 3) Output the results.
-      if buffer[0] == expected_iv
+      if buffer[0] == coerce_uint64(expected_iv)
         buffer.drop(1).pack('Q>*')
       else
         nil
@@ -113,6 +119,8 @@
 
     private
 
+      MAX_UINT64 = 0xFFFFFFFFFFFFFFFF
+
       def aes(encrypt_or_decrypt, key, data)
         decipher = OpenSSL::Cipher::AES.new(key.bytesize * 8, :ECB)
         decipher.send(encrypt_or_decrypt)
@@ -121,6 +129,27 @@
 
         decipher.update(data) + decipher.final
       end
+
+      def coerce_uint64(value)
+        case value
+        when Integer
+          if value > MAX_UINT64
+            raise ArgumentError, "IV is too large to fit in a 64-bit unsigned 
integer"
+          elsif value < 0
+            raise ArgumentError, "IV is not an unsigned integer (it's 
negative)"
+          else
+            value
+          end
+        when String
+          if value.bytesize == IV_SIZE
+            value.unpack("Q>").first
+          else
+            raise ArgumentError, "IV is not #{IV_SIZE} bytes long"
+          end
+        else
+          raise ArgumentError, "IV is not valid: #{value.inspect}"
+        end
+      end
   end
 end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2015-04-24 16:55:59.000000000 +0200
+++ new/metadata        2020-07-11 17:11:09.000000000 +0200
@@ -1,43 +1,57 @@
 --- !ruby/object:Gem::Specification
 name: aes_key_wrap
 version: !ruby/object:Gem::Version
-  version: 1.0.1
+  version: 1.1.0
 platform: ruby
 authors:
 - Tom Dalling
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2015-04-24 00:00:00.000000000 Z
+date: 2020-07-11 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
-  name: rake
+  name: test_bench
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: '10.0'
+        version: '1.0'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: '10.0'
+        version: '1.0'
 - !ruby/object:Gem::Dependency
-  name: rspec
+  name: gem-release
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ">="
       - !ruby/object:Gem::Version
-        version: 3.2.0
+        version: '0'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: '0'
+- !ruby/object:Gem::Dependency
+  name: simplecov
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "<"
+      - !ruby/object:Gem::Version
+        version: '0.18'
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "<"
       - !ruby/object:Gem::Version
-        version: 3.2.0
+        version: '0.18'
 description: 
 email:
 - [email protected]
@@ -46,13 +60,12 @@
 extra_rdoc_files: []
 files:
 - ".gitignore"
-- ".rspec"
 - ".ruby-version"
 - ".travis.yml"
+- CHANGELOG.md
 - Gemfile
 - LICENSE.txt
 - README.md
-- Rakefile
 - aes_key_wrap.gemspec
 - bin/console
 - bin/setup
@@ -77,10 +90,8 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubyforge_project: 
-rubygems_version: 2.4.5
+rubygems_version: 3.1.2
 signing_key: 
 specification_version: 4
 summary: A Ruby implementation of AES Key Wrap, a.k.a RFC 3394, a.k.a NIST Key 
Wrap.
 test_files: []
-has_rdoc: 


Reply via email to