openssl_dh_compute_key возвращает false

Я пытаюсь вычислить общий секрет для ECDH (Diffie Hellman с эллиптической кривой), используя PHP.

Предположим, у меня есть чей-то открытый ключ:

$clientPublickey="BOLcHOg4ajSHR6BjbSBeX_6aXjMu1V5RrUYXqyV_FqtQSd8RzdU1gkMv1DlRPDIUtFK6Nd16Jql0eSzyZh4V2uc";

Я генерирую свои ключи, используя openssl:

exec('openssl ecparam -genkey -name prime256v1 -noout -out example-ecc.pem');
$private = openssl_pkey_get_private("file://example-ecc.pem");

Тогда я звоню:

$sharedSecret=openssl_dh_compute_key(base64_decode($clientPublickey), $private);

… и я ошибаюсь
Вызов openssl_error_string () ничего не возвращает, ошибки нет.

Я var_dumped openssl_pkey_get_details ($ private) и убедился, что он был создан правильно.

Любой совет кто-нибудь? Там, кажется, не так много информации об этой функции.
http://php.net/manual/en/function.openssl-dh-compute-key.php

0

Решение

https://www.openssl.org/docs/manmaster/crypto/DH_compute_key.html описывает эту функцию как для (не EC) Диффи Хеллмана. Вам нужно ECDH_compute_key (что я не знаю, если PHP выставляет).

Хоть https://wiki.openssl.org/index.php/Elliptic_Curve_Diffie_Hellman рекомендует использовать оболочки EVP_PKEY вместо подпрограмм низкого уровня. Но, опять же, я не могу сказать, какую поддержку имеет PHP.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]