public function testDiffieHellman() { $ecdsa1 = new BitcoinECDSA(); $ecdsa1->generateRandomPrivateKey(mcrypt_create_iv(32)); $ecdsa2 = new BitcoinECDSA(); $ecdsa2->generateRandomPrivateKey(mcrypt_create_iv(32)); $pub1 = $ecdsa1->getPubKeyPoints(); $priv1 = $ecdsa1->getPrivateKey(); $pub2 = $ecdsa2->getPubKeyPoints(); $priv2 = $ecdsa2->getPrivateKey(); $der1A = $ecdsa2->getDerPubKeyWithPubKeyPoints($pub1); $der1B = $ecdsa1->getDerPubKeyWithPubKeyPoints($pub1); $this->assertEquals($der1A, $der1B); $productA = $this->diffieHellman($pub1, $priv2); $productB = $this->diffieHellman($pub2, $priv1); $this->assertEquals($productA, $productB); }