class HibpCheck
Constants
- API_URL
- VERSION
Attributes
hashes[R]
params[R]
prefix[R]
remainder[R]
request[R]
response[R]
Public Class Methods
new(params={})
click to toggle source
# File lib/hibp_check.rb, line 11 def initialize(params={}) @params = params end
Public Instance Methods
password_used(password)
click to toggle source
# File lib/hibp_check.rb, line 15 def password_used(password) return nil if password.nil? sha1_used Digest::SHA1.hexdigest(password.to_s) end
sha1_used(hashed)
click to toggle source
# File lib/hibp_check.rb, line 20 def sha1_used(hashed) return nil unless hashed =~ /^[0-9a-f]{40}$/i @prefix = hashed.slice(0..4).upcase @remainder = hashed.slice(5..-1).upcase @hashes = fetch_hashes_by_prefix prefix if hashes return $1.to_i if hashes.match(/#{remainder}:(\d+)/) return 0 end nil end
Private Instance Methods
fetch(url)
click to toggle source
# File lib/hibp_check.rb, line 40 def fetch(url) uri = URI(url) Net::HTTP.start(uri.host, uri.port, params.merge(use_ssl: uri.scheme=='https')) do |http| @request = Net::HTTP::Get.new uri @response = http.request @request # Net::HTTPResponse object end end
fetch_hashes_by_prefix(prefix)
click to toggle source
# File lib/hibp_check.rb, line 34 def fetch_hashes_by_prefix(prefix) fetch "#{API_URL}#{prefix}" return response.body if response.code == "200" nil end