Sha256: 9f86ec48da34ffebb62490dc47ab07f3ad68fb886b284b5d9f042809f4426a08
Contents?: true
Size: 1.59 KB
Versions: 2
Compression:
Stored size: 1.59 KB
Contents
# frozen_string_literal: true # Authenticator for the "+LOGIN+" SASL mechanism. See Net::IMAP#authenticate. # # +LOGIN+ authentication sends the password in cleartext. # RFC3501[https://tools.ietf.org/html/rfc3501] encourages servers to disable # cleartext authentication until after TLS has been negotiated. # RFC8314[https://tools.ietf.org/html/rfc8314] recommends TLS version 1.2 or # greater be used for all traffic, and deprecate cleartext access ASAP. +LOGIN+ # can be secured by TLS encryption. # # == Deprecated # # The {SASL mechanisms # registry}[https://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml] # marks "LOGIN" as obsoleted in favor of "PLAIN". It is included here for # compatibility with existing servers. See # {draft-murchison-sasl-login}[https://www.iana.org/go/draft-murchison-sasl-login] # for both specification and deprecation. class Net::IMAP::SASL::LoginAuthenticator STATE_USER = :USER STATE_PASSWORD = :PASSWORD STATE_DONE = :DONE private_constant :STATE_USER, :STATE_PASSWORD, :STATE_DONE def initialize(user, password, warn_deprecation: true, **_ignored) if warn_deprecation warn "WARNING: LOGIN SASL mechanism is deprecated. Use PLAIN instead." end @user = user @password = password @state = STATE_USER end def initial_response?; false end def process(data) case @state when STATE_USER @state = STATE_PASSWORD return @user when STATE_PASSWORD @state = STATE_DONE return @password when STATE_DONE raise ResponseParseError, data end end def done?; @state == STATE_DONE end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
net-imap-0.4.1 | lib/net/imap/sasl/login_authenticator.rb |
net-imap-0.4.0 | lib/net/imap/sasl/login_authenticator.rb |