mirror of
https://github.com/php/php-src.git
synced 2025-08-19 08:49:28 +02:00
Improved ldap_exop test to encode&decode a passwd EXOP to test sending/recieving data
This commit is contained in:
parent
413e9c84f6
commit
5020325a6f
1 changed files with 34 additions and 6 deletions
|
@ -12,14 +12,30 @@ require "connect.inc";
|
||||||
$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
|
$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
|
||||||
insert_dummy_data($link, $base);
|
insert_dummy_data($link, $base);
|
||||||
|
|
||||||
function ber_encode($string) {
|
function build_reqdata_passwd($user, $oldpw, $newpw)
|
||||||
$null_padded_string = '';
|
{
|
||||||
for($i = 0; $i<strlen($string); $i++) {
|
// This is basic and will only work for small strings
|
||||||
$null_padded_string .= substr($string,$i,1)."\0";
|
$hex = '';
|
||||||
|
if (!empty($user)) {
|
||||||
|
$hex .= '80'.sprintf("%'.02x", strlen($user)).bin2hex($user);
|
||||||
}
|
}
|
||||||
return base64_encode($null_padded_string);
|
if (!empty($oldpw)) {
|
||||||
|
$hex .= '81'.sprintf("%'.02x", strlen($oldpw)).bin2hex($oldpw);
|
||||||
|
}
|
||||||
|
if (!empty($newpw)) {
|
||||||
|
$hex .= '82'.sprintf("%'.02x", strlen($newpw)).bin2hex($newpw);
|
||||||
|
}
|
||||||
|
return hex2bin('30'.sprintf("%'.02x", strlen($hex)/2).$hex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function extract_genpw($retdata)
|
||||||
|
{
|
||||||
|
// Only works for small strings as well
|
||||||
|
return hex2bin(substr(bin2hex($retdata), 4*2));
|
||||||
|
}
|
||||||
|
|
||||||
|
$userAPassword = "oops";
|
||||||
|
|
||||||
// ldap_exop(resource link, string reqoid [, string reqdata [, string retoid [, string retdata]]])
|
// ldap_exop(resource link, string reqoid [, string reqdata [, string retoid [, string retdata]]])
|
||||||
// bool ldap_parse_exop(resource link, resource result [, string retoid [, string retdata]])
|
// bool ldap_parse_exop(resource link, resource result [, string retoid [, string retdata]])
|
||||||
var_dump(
|
var_dump(
|
||||||
|
@ -29,7 +45,13 @@ var_dump(
|
||||||
$r = ldap_exop($link, LDAP_EXOP_WHO_AM_I),
|
$r = ldap_exop($link, LDAP_EXOP_WHO_AM_I),
|
||||||
ldap_parse_exop($link, $r, $retoid2, $retdata2),
|
ldap_parse_exop($link, $r, $retoid2, $retdata2),
|
||||||
$retdata2,
|
$retdata2,
|
||||||
$retoid2
|
$retoid2,
|
||||||
|
test_bind($host, $port, "cn=userA,$base", $userAPassword, $protocol_version),
|
||||||
|
$r = ldap_exop($link, LDAP_EXOP_MODIFY_PASSWD, build_reqdata_passwd("cn=userA,$base", $userAPassword, "")),
|
||||||
|
ldap_parse_exop($link, $r, $retpwoid, $retpwdata),
|
||||||
|
$genpw = extract_genpw($retpwdata),
|
||||||
|
$retpwoid,
|
||||||
|
test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version)
|
||||||
);
|
);
|
||||||
?>
|
?>
|
||||||
===DONE===
|
===DONE===
|
||||||
|
@ -49,4 +71,10 @@ resource(%d) of type (ldap result)
|
||||||
bool(true)
|
bool(true)
|
||||||
string(%d) "dn:%s"
|
string(%d) "dn:%s"
|
||||||
string(0) ""
|
string(0) ""
|
||||||
|
bool(true)
|
||||||
|
resource(%d) of type (ldap result)
|
||||||
|
bool(true)
|
||||||
|
string(%d) "%s"
|
||||||
|
string(0) ""
|
||||||
|
bool(true)
|
||||||
===DONE===
|
===DONE===
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue