捆绑更新打破了摘要库。无法升级到OpenSSL

时间:2017-03-21 18:10:56

标签: ruby-on-rails ruby openssl digest sha2

我们最近做了一个捆绑更新,出错了。据我们了解,对'digest / hmac'的支持有所下降,所以我想改用OpenSSL:

旧[工作]代码:

 def signature(str)
    key = EnvHelpers.google_oauth2_hmac_key
    Digest::HMAC.hexdigest(str, key, Digest::SHA2)
 end

新代码:

def signature(str)
  key = EnvHelpers.google_oauth2_hmac_key
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha2"), key, str)
end

当我们运行rspec时:

Failure/Error: OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha2"), key, str)

 RuntimeError:
   Unsupported digest algorithm (sha2).: first num too large

Gemfile的相关部分:

ruby "2.3.3"
gem "openssl", require: true # Gemfile.lock says I am at (2.0.3)

我们对任何解决问题的建议持开放态度。这部分代码主要用于我们的Google和Facebook连接流程。

1 个答案:

答案 0 :(得分:1)

当我解决问题时,我正在回答我自己的问题。混淆的主要原因是sha2不是特定的算法。然而,sha256将完成这项工作。所以下面的代码似乎工作正常:

def signature(str)
  key = EnvHelpers.google_oauth2_hmac_key
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA256.new, key, str)
end