шифрование — Как использовать уже заданный закрытый ключ в качестве ресурса секретного ключа в PHP?

Я работаю над интеграцией Walmart API. Они требуют цифровой подписи с каждым вызовом API. Кажется, мой код работает до тех пор, пока мне не придется иметь дело с закрытым ключом. Вот моя функция для создания цифровой подписи:

//Most of this code is from a Walmart API sample
function _GetWalmartAuthSignature($URL, $RequestMethod, $TimeStamp, $ConsumerId) {
$WalmartPrivateKey = {given PEM formatted string};
//Construct the authentication data we need to sign
$AuthData = $ConsumerId."\n";
$AuthData .= $URL."\n";
$AuthData .= $RequestMethod."\n";
$AuthData .= $TimeStamp."\n";

//THIS METHOD IS RETURNING FALSE!!!!
$PrivateKey = openssl_pkey_get_private($WalmartPrivateKey);

//Sign the data using sha256 hash
defined("OPENSSL_ALGO_SHA256") ? $Hash = OPENSSL_ALGO_SHA256 : $Hash = "sha256";
if (!openssl_sign($AuthData, $Signature, $privKey, $Hash)) {
return null;
}

//Encode the signature and return
return base64_encode($Signature);

}

Функция openssl_pkey_get_private () продолжает возвращать false. Итак, моя функция openssl_sign () выдает мне ошибку: openssl_sign (): предоставленный параметр ключа не может быть приведен в закрытый ключ

Я попытался сначала создать новый ключевой ресурс, используя

$res = openssl_pkey_new();
openssl_pkey_export($res, $privKey);

и затем сохраняя мой $ WalmartPrivateKey в $ privKey, но я получил ту же ошибку. Я пытался использовать openssl_get_private_key (), но опять же — ничего не получалось.

Я знаю только основы шифрования с открытым / закрытым ключом, и я впервые использую эти функции.

Может кто-нибудь мне помочь?

0

Решение

У меня была похожая проблема, и это было потому, что формат PEM был неправильным. Убедитесь, что у вас есть правильные маркеры начала и конца:
«—— BEGIN PRIVATE KEY ——«, «—— END PRIVATE KEY ——«.
Оба маркера должны иметь ровно 5 штрихов до и после слов, а слова должны быть заглавными.
Удачи!

0

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

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

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