module Steam::Totp
Constants
- CHARS
- VERSION
Public Class Methods
generate_auth_code(shared_secret, time)
click to toggle source
# File lib/steam/totp.rb, line 11 def self.generate_auth_code(shared_secret, time) signature = [time / 30].pack('Q>') digest = OpenSSL::HMAC.digest('sha1', Base64.decode64(shared_secret), signature) digest = digest.unpack('C*') start = digest[19] & 0x0f digest = digest[start, 4] full_code = digest.pack('C*').unpack('L>').first & 0x7fffffff 5.times.map do char = CHARS[full_code % CHARS.size] full_code /= CHARS.size char end.join end
generate_confirmation_key(identity_secret, time, tag)
click to toggle source
# File lib/steam/totp.rb, line 28 def self.generate_confirmation_key(identity_secret, time, tag) signature = [time].pack('Q>') + tag[0..31] digest = OpenSSL::HMAC.digest('sha1', Base64.decode64(identity_secret), signature) Base64.encode64(digest).chomp end
mobile_device_id(steam_id)
click to toggle source
# File lib/steam/totp.rb, line 34 def self.mobile_device_id(steam_id) digest = Digest::SHA1.hexdigest steam_id "android:#{digest[0..7]}-#{digest[8..11]}-#{digest[12..15]}-#{digest[16..19]}-#{digest[20..31]}" end