2017-03-21 5 views
0

Nous avons récemment effectué une mise à jour du bundle qui s'est mal passée. Comme nous l'avons compris, le soutien pour 'digérer/HMAC' a chuté, alors je voulais utiliser OpenSSL à la place:Mise à jour du paquet cassé Digest bibliothèque. Problème lors de la mise à niveau vers OpenSSL

ANCIEN [TRAVAIL] CODE:

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

NOUVEAU CODE:

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

Lorsque nous courons rspec:

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

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

parties pertinentes du Gemfile:

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

Nous sommes ouverts à toute suggestion pour résoudre le problème. Cette partie du code est principalement utilisée pour notre flux de connexion Google et Facebook.

Répondre

1

Je réponds à ma propre question car j'ai résolu le problème. La principale source de confusion est que sha2 n'est pas un algorithme spécifique. Cependant, sha256 fera le travail. Ainsi, le code suivant semble fonctionner correctement:

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