Class: Net::IMAP::CramMD5Authenticator
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/net/imap.rb |
Overview
Authenticator for the “CRAM-MD5” authentication type. See #authenticate().
Class Method Summary
- .new(user, password) ⇒ CramMD5Authenticator constructor private
Instance Method Summary
Constructor Details
.new(user, password) ⇒ CramMD5Authenticator
(private)
# File 'lib/net/imap.rb', line 3554
def initialize(user, password) @user = user @password = password end
Instance Method Details
#hmac_md5(text, key) (private)
[ GitHub ]# File 'lib/net/imap.rb', line 3559
def hmac_md5(text, key) if key.length > 64 key = Digest::MD5.digest(key) end k_ipad = key + "\0" * (64 - key.length) k_opad = key + "\0" * (64 - key.length) for i in 0..63 k_ipad[i] = (k_ipad[i].ord ^ 0x36).chr k_opad[i] = (k_opad[i].ord ^ 0x5c).chr end digest = Digest::MD5.digest(k_ipad + text) return Digest::MD5.hexdigest(k_opad + digest) end
#process(challenge)
[ GitHub ]# File 'lib/net/imap.rb', line 3547
def process(challenge) digest = hmac_md5(challenge, @password) return @user + " " + digest end