Mercurial > hg > rc1
comparison vendor/pear/auth_sasl/Auth/SASL.php @ 0:1e000243b222
vanilla 1.3.3 distro, I hope
| author | Charlie Root |
|---|---|
| date | Thu, 04 Jan 2018 15:50:29 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:1e000243b222 |
|---|---|
| 1 <?php | |
| 2 // +-----------------------------------------------------------------------+ | |
| 3 // | Copyright (c) 2002-2003 Richard Heyes | | |
| 4 // | All rights reserved. | | |
| 5 // | | | |
| 6 // | Redistribution and use in source and binary forms, with or without | | |
| 7 // | modification, are permitted provided that the following conditions | | |
| 8 // | are met: | | |
| 9 // | | | |
| 10 // | o Redistributions of source code must retain the above copyright | | |
| 11 // | notice, this list of conditions and the following disclaimer. | | |
| 12 // | o Redistributions in binary form must reproduce the above copyright | | |
| 13 // | notice, this list of conditions and the following disclaimer in the | | |
| 14 // | documentation and/or other materials provided with the distribution.| | |
| 15 // | o The names of the authors may not be used to endorse or promote | | |
| 16 // | products derived from this software without specific prior written | | |
| 17 // | permission. | | |
| 18 // | | | |
| 19 // | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | | |
| 20 // | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | | |
| 21 // | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | | |
| 22 // | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | | |
| 23 // | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | | |
| 24 // | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | | |
| 25 // | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | | |
| 26 // | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | |
| 27 // | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | |
| 28 // | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | | |
| 29 // | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | |
| 30 // | | | |
| 31 // +-----------------------------------------------------------------------+ | |
| 32 // | Author: Richard Heyes <richard@php.net> | | |
| 33 // +-----------------------------------------------------------------------+ | |
| 34 // | |
| 35 // $Id$ | |
| 36 | |
| 37 /** | |
| 38 * Client implementation of various SASL mechanisms | |
| 39 * | |
| 40 * @author Richard Heyes <richard@php.net> | |
| 41 * @access public | |
| 42 * @version 1.0 | |
| 43 * @package Auth_SASL | |
| 44 */ | |
| 45 | |
| 46 require_once('PEAR.php'); | |
| 47 | |
| 48 class Auth_SASL | |
| 49 { | |
| 50 /** | |
| 51 * Factory class. Returns an object of the request | |
| 52 * type. | |
| 53 * | |
| 54 * @param string $type One of: Anonymous | |
| 55 * Plain | |
| 56 * CramMD5 | |
| 57 * DigestMD5 | |
| 58 * SCRAM-* (any mechanism of the SCRAM family) | |
| 59 * Types are not case sensitive | |
| 60 */ | |
| 61 public static function factory($type) | |
| 62 { | |
| 63 switch (strtolower($type)) { | |
| 64 case 'anonymous': | |
| 65 $filename = 'Auth/SASL/Anonymous.php'; | |
| 66 $classname = 'Auth_SASL_Anonymous'; | |
| 67 break; | |
| 68 | |
| 69 case 'login': | |
| 70 $filename = 'Auth/SASL/Login.php'; | |
| 71 $classname = 'Auth_SASL_Login'; | |
| 72 break; | |
| 73 | |
| 74 case 'plain': | |
| 75 $filename = 'Auth/SASL/Plain.php'; | |
| 76 $classname = 'Auth_SASL_Plain'; | |
| 77 break; | |
| 78 | |
| 79 case 'external': | |
| 80 $filename = 'Auth/SASL/External.php'; | |
| 81 $classname = 'Auth_SASL_External'; | |
| 82 break; | |
| 83 | |
| 84 case 'crammd5': | |
| 85 // $msg = 'Deprecated mechanism name. Use IANA-registered name: CRAM-MD5.'; | |
| 86 // trigger_error($msg, E_USER_DEPRECATED); | |
| 87 case 'cram-md5': | |
| 88 $filename = 'Auth/SASL/CramMD5.php'; | |
| 89 $classname = 'Auth_SASL_CramMD5'; | |
| 90 break; | |
| 91 | |
| 92 case 'digestmd5': | |
| 93 // $msg = 'Deprecated mechanism name. Use IANA-registered name: DIGEST-MD5.'; | |
| 94 // trigger_error($msg, E_USER_DEPRECATED); | |
| 95 case 'digest-md5': | |
| 96 // $msg = 'DIGEST-MD5 is a deprecated SASL mechanism as per RFC-6331. Using it could be a security risk.'; | |
| 97 // trigger_error($msg, E_USER_NOTICE); | |
| 98 $filename = 'Auth/SASL/DigestMD5.php'; | |
| 99 $classname = 'Auth_SASL_DigestMD5'; | |
| 100 break; | |
| 101 | |
| 102 default: | |
| 103 $scram = '/^SCRAM-(.{1,9})$/i'; | |
| 104 if (preg_match($scram, $type, $matches)) | |
| 105 { | |
| 106 $hash = $matches[1]; | |
| 107 $filename = dirname(__FILE__) .'/SASL/SCRAM.php'; | |
| 108 $classname = 'Auth_SASL_SCRAM'; | |
| 109 $parameter = $hash; | |
| 110 break; | |
| 111 } | |
| 112 return PEAR::raiseError('Invalid SASL mechanism type'); | |
| 113 break; | |
| 114 } | |
| 115 | |
| 116 require_once($filename); | |
| 117 if (isset($parameter)) | |
| 118 $obj = new $classname($parameter); | |
| 119 else | |
| 120 $obj = new $classname(); | |
| 121 return $obj; | |
| 122 } | |
| 123 } | |
| 124 | |
| 125 ?> |
