Я хочу сделать 256 бит ECDSA
закрытый ключ с secp256k1
кривая по php.
Я использовал этот фрагмент:
$pk_Generate = openssl_pkey_new(array(
'private_key_bits' => 256,
'private_key_type' => OPENSSL_KEYTYPE_EC,
'curve_name' => 'secp256k1'
));
while ($msg = openssl_error_string())
echo $msg . "<br />\n";
openssl_pkey_export($pk_Generate, $pk_Generate_Private);
var_dump($pk_Generate_Private); // show me NULL
но это дает мне эту ошибку:
error:0E06D06C:configuration file routines:NCONF_get_string:no value
error:0E06D06C:configuration file routines:NCONF_get_string:no value
error:0E06D06C:configuration file routines:NCONF_get_string:no value
error:0E06D06C:configuration file routines:NCONF_get_string:no value
также, если этот код работает нормально, он показывает мне закрытый ключ в PEM
формат, но я хочу это в шестнадцатеричном формате.
пожалуйста, направь меня.
Попробуй это
$config = [
"config" => getenv('OPENSSL_CONF'),
'private_key_type' => OPENSSL_KEYTYPE_EC,
'curve_name' => 'secp256k1'
];
$res = openssl_pkey_new($config);
if (!$res) {
echo 'ERROR: Fail to generate private key. -> ' . openssl_error_string();
exit;
}
// Generate Private Key
openssl_pkey_export($res, $priv_key, NULL, $config);
// Get The Public Key
$key_detail = openssl_pkey_get_details($res);
$pub_key = $key_detail["key"];
echo "priv_key:<br>".$priv_key;
echo "<br><br>pub_key:<br>".$pub_key;
Других решений пока нет …