SRP PHP Client

PHP Client for Login over Secure Remote Password Protocol

1. registrate

generate s (salt) and v (verifier). generated by client, stored by server

$username = "falk";
$password = "test123";
$s = $srp->getRandomSeed();
$x = $srp->generateX($s, $username, $password);
$v = $srp->generateV($x);
$send = array("phase" => 0, "I" => $username, "v" => $v, "s" => $s);

Send

Array ( [phase] => 0 [I] => falk [v] => 35102469ba9f06fd771b9e4e2f5bc80353f7ba32de3cec41dcafc6a9207dc49f0b43aae4b4395d7288f68c7aaa8d8ccee68cb0e7ff4c2e1a1658f9d447e5401f [s] => 51d814e67385e93c76fd867a52641f997ed3cfc1c8111f12acbf56f2bd9d74f10015dc84782c0091c128649d1fb42b5c9e9267af8c9613a1c341b3c5c1da12c0 )

Recive

Array ( [success] => 1 )

2. Login - Phase 1

client generate a (private random key), A (public generated key) and send A, I (username) to server.

$a = $srp->getRandomSeed();
$A = $srp->generateA($a);
$send = array("phase" => 1, "I" => $username, "A" => $A);

Send

Array ( [phase] => 1 [I] => falk [A] => 1b78d41e2c1572992d946e55241a5a3cf215ac1cb6c28119d8ade9e75c33f48445fac7f53a668ac326bdf0308741a61ce2658187dfdd274539c831f031697b49 )

Recive

Array ( [success] => )

3. Login - Phase 2

Client receive s (salt) und B (public key of Server) in Phase 1. Client build M1 and send it sto Server.


Warning: Undefined array key "B" in /html/code.falk-m.de/srp/client.php on line 128

Warning: Undefined array key "s" in /html/code.falk-m.de/srp/client.php on line 129

Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in /html/code.falk-m.de/srp/php/lib/srp.php on line 222

Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in /html/code.falk-m.de/srp/php/lib/srp.php on line 222

Warning: Uninitialized string offset -9223372036854775808 in /html/code.falk-m.de/srp/php/lib/srp.php on line 209
$B = $res1["B"];
$s = $res1["s"];
$x = $srp->generateX($s, $username, $password);
$S = $srp->generateS_Client($A, $B, $a, $x);
$M1 = $srp->generateM1($A, $B, $S);
$send = array("phase" => 2, "M1" => $M1);

Send

Array ( [phase] => 2 [M1] => 13068ca499b73ec0707bc57ea904452b058f07a2df2aaa94ad34940844239613 )

Recive

4. Server verification

Client receive M2 from Server, rebiuld and compare them and build session key

$res2 = json_decode($res["body"], true);
$M2 = $res2["M2"];
$M2_check = $srp->generateM2($A, $M1, $S);

if($M2 == $M2_check){
echo "SUCCESS;";
$K = $srp->generateK($S);
echo "SESSION KEY: ".$K;
}

Output


Warning: Trying to access array offset on null in /html/code.falk-m.de/srp/client.php on line 180