bundle更新破坏了摘要库.升级到 OpenSSL 时遇到问题



我们最近做了一个包更新,结果出错了。据我们了解,对"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

宝石文件的相关部分:

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

我们愿意接受解决问题的任何建议。这部分代码主要用于我们的谷歌和Facebook连接流程。

我在解决问题时回答我自己的问题。混淆的主要来源是sha2不是一个特定的算法。但是,sha256 可以完成这项工作。因此,以下代码似乎可以正常工作:

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

最新更新