summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Net/OpenID/DiffieHellman.php21
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);
+ }
}