public function calculateSharedSecret(PublicKey $publicKey) : SharedSecret
    {
        $exchange = $this->getEccKey()->createExchange($publicKey->getEccKey());
        $binary = new BinaryString(gmp_export($exchange->calculateSharedKey()));

        return new SharedSecret($binary);
    }