diff options
-rw-r--r-- | Net/OpenID/DiffieHellman.php | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Net/OpenID/DiffieHellman.php b/Net/OpenID/DiffieHellman.php index e984645..3eab483 100644 --- a/Net/OpenID/DiffieHellman.php +++ b/Net/OpenID/DiffieHellman.php @@ -40,6 +40,19 @@ class Net_OpenID_DiffieHellman { var $private; var $lib = null; + function fromBase64($mod, $gen) + { + if ($mod !== null) { + $mod = Net_OpenID_CryptUtil::base64ToLong($mod); + } + + if ($gen !== null) { + $gen = Net_OpenID_CryptUtil::base64ToLong($gen); + } + + return new Net_OpenID_DiffieHellman($mod, $gen); + } + function Net_OpenID_DiffieHellman($mod = null, $gen = null, $private = null) { @@ -100,4 +113,12 @@ class Net_OpenID_DiffieHellman { { return $this->public; } + + function xorSecret($composite, $secret) + { + $dh_shared = $this->getSharedSecret($composite); + $sha1_dh_shared = Net_OpenID_CryptUtil::sha1( + Net_OpenID_CryptUtil::longToBinary($dh_shared)); + return Net_OpenID_CryptUtil::strxor($secret, $sha1_dh_shared); + } } |