From 8ca6cc32b2c789a3149861159ad258f2cb9491e3 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 14:39:39 +0200 Subject: Adding upstream version 2.11.4. Signed-off-by: Daniel Baumann --- .../Zend/Mail/Protocol/Smtp/Auth/Crammd5.php | 107 +++++++++++++++++++++ .../vendor/Zend/Mail/Protocol/Smtp/Auth/Login.php | 97 +++++++++++++++++++ .../vendor/Zend/Mail/Protocol/Smtp/Auth/Plain.php | 95 ++++++++++++++++++ 3 files changed, 299 insertions(+) create mode 100644 library/vendor/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php create mode 100644 library/vendor/Zend/Mail/Protocol/Smtp/Auth/Login.php create mode 100644 library/vendor/Zend/Mail/Protocol/Smtp/Auth/Plain.php (limited to 'library/vendor/Zend/Mail/Protocol/Smtp') diff --git a/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php b/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php new file mode 100644 index 0000000..2a5ca3d --- /dev/null +++ b/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php @@ -0,0 +1,107 @@ +_username = $config['username']; + } + if (isset($config['password'])) { + $this->_password = $config['password']; + } + } + + parent::__construct($host, $port, $config); + } + + + /** + * @todo Perform CRAM-MD5 authentication with supplied credentials + * + * @return void + */ + public function auth() + { + // Ensure AUTH has not already been initiated. + parent::auth(); + + $this->_send('AUTH CRAM-MD5'); + $challenge = $this->_expect(334); + $challenge = base64_decode($challenge); + $digest = $this->_hmacMd5($this->_password, $challenge); + $this->_send(base64_encode($this->_username . ' ' . $digest)); + $this->_expect(235); + $this->_auth = true; + } + + + /** + * Prepare CRAM-MD5 response to server's ticket + * + * @param string $key Challenge key (usually password) + * @param string $data Challenge data + * @param string $block Length of blocks + * @return string + */ + protected function _hmacMd5($key, $data, $block = 64) + { + if (strlen($key) > 64) { + $key = pack('H32', md5($key)); + } elseif (strlen($key) < 64) { + $key = str_pad($key, $block, "\0"); + } + + $k_ipad = substr($key, 0, 64) ^ str_repeat(chr(0x36), 64); + $k_opad = substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64); + + $inner = pack('H32', md5($k_ipad . $data)); + $digest = md5($k_opad . $inner); + + return $digest; + } +} diff --git a/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Login.php b/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Login.php new file mode 100644 index 0000000..5295b65 --- /dev/null +++ b/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Login.php @@ -0,0 +1,97 @@ +_username = $config['username']; + } + if (isset($config['password'])) { + $this->_password = $config['password']; + } + } + + parent::__construct($host, $port, $config); + } + + + /** + * Perform LOGIN authentication with supplied credentials + * + * @return void + */ + public function auth() + { + // Ensure AUTH has not already been initiated. + parent::auth(); + + $this->_send('AUTH LOGIN'); + $this->_expect(334); + $this->_send(base64_encode($this->_username)); + $this->_expect(334); + $this->_send(base64_encode($this->_password)); + $this->_expect(235); + $this->_auth = true; + } +} diff --git a/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Plain.php b/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Plain.php new file mode 100644 index 0000000..abd788e --- /dev/null +++ b/library/vendor/Zend/Mail/Protocol/Smtp/Auth/Plain.php @@ -0,0 +1,95 @@ +_username = $config['username']; + } + if (isset($config['password'])) { + $this->_password = $config['password']; + } + } + + parent::__construct($host, $port, $config); + } + + + /** + * Perform PLAIN authentication with supplied credentials + * + * @return void + */ + public function auth() + { + // Ensure AUTH has not already been initiated. + parent::auth(); + + $this->_send('AUTH PLAIN'); + $this->_expect(334); + $this->_send(base64_encode("\0" . $this->_username . "\0" . $this->_password)); + $this->_expect(235); + $this->_auth = true; + } +} -- cgit v1.2.3