2017-03-21 19 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