2017-03-21 16 views
0

最近、バンドルのアップデートが間違っていました。私たちが理解できるように、 'ダイジェスト/ HMAC' のサポートがドロップされたので、私が代わりにOpenSSLを使用していた:バンドルアップデートがダイジェストライブラリを破棄しました。 OpenSSLへのアップグレードのトラブル

OLD [WORKING] CODE:

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

NEW CODE:

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

私たちは、RSpecの実行:Gemfileの

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) 

この問題を解決するための提案があります。コードのこの部分は、GoogleとFacebookの接続フローによく使用されます。

答えて

1

私はこの問題を解決したので、私自身の質問に答えています。混乱の主な原因は、sha2が特定のアルゴリズムではないことです。しかしsha256は仕事をします。したがって、次のコードはうまくいくようです:

def signature(str) 
    key = EnvHelpers.google_oauth2_hmac_key 
    OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA256.new, key, str) 
end 
関連する問題