芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/kwesioben.com/paymoney/vendor/mdanter/ecc/src/Crypto/EcDH/EcDH.php
adapter = $adapter; } /** * {@inheritDoc} * @see \Mdanter\Ecc\Crypto\EcDH\EcDHInterface::calculateSharedKey() */ public function calculateSharedKey(): \GMP { $this->calculateKey(); return $this->secretKey->getPoint()->getX(); } /** * {@inheritDoc} * @see \Mdanter\Ecc\Crypto\EcDH\EcDHInterface::createMultiPartyKey() */ public function createMultiPartyKey(): PublicKeyInterface { $this->calculateKey(); return $this->secretKey; } /** * {@inheritDoc} * @see \Mdanter\Ecc\Crypto\EcDH\EcDHInterface::setRecipientKey() */ public function setRecipientKey(PublicKeyInterface $key = null) { $this->recipientKey = $key; return $this; } /** * {@inheritDoc} * @see \Mdanter\Ecc\Crypto\EcDH\EcDHInterface::setSenderKey() */ public function setSenderKey(PrivateKeyInterface $key) { $this->senderKey = $key; return $this; } /** * */ private function calculateKey() { $this->checkExchangeState(); if ($this->secretKey === null) { try { // Multiply our secret with recipients public key $point = $this->recipientKey->getPoint()->mul($this->senderKey->getSecret()); // Ensure we completed a valid exchange, ensure we can create a // public key instance for the shared secret using our generator. $this->secretKey = $this->senderKey->getPoint()->getPublicKeyFrom($point->getX(), $point->getY()); } catch (\Exception $e) { throw new ExchangeException("Invalid ECDH exchange", 0, $e); } } } /** * Verifies that the shared secret is known, or that the required keys are available * to calculate the shared secret. * @throws \RuntimeException when the exchange has not been made. */ private function checkExchangeState() { if ($this->secretKey !== null) { return; } if ($this->senderKey === null) { throw new ExchangeException('Sender key not set.'); } if ($this->recipientKey === null) { throw new ExchangeException('Recipient key not set.'); } // Check the point exists on our curve. $point = $this->recipientKey->getPoint(); if (!$this->senderKey->getPoint()->getCurve()->contains($point->getX(), $point->getY())) { throw new ExchangeException("Invalid ECDH exchange - Point does not exist on our curve"); } } }