Например:
Код: Выделить всё
"keyValue": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs\/J7ghdwu4\/b6NvqzQebS+Z80FEP8ZlGdAdWDUjfPeBKaV+YOWW0l6U\/4IGXnfY9NrsND1fwxAqRq0unR\/LCIg==",
"protocolVersion": "ECv2SigningOnly",
Я безуспешно пробовал функции openssl в PHP, а также phpseclib3. Всегда получаю сообщение «Невозможно прочитать ключ».
Это должен быть ключ EC, который начинается с 0x03 или 0x04, но этот ключ начинается с «0Y0», а количество байтов (25) является неожиданным.
Найденные мной сценарии Python (ECC.import_key) и C# просто загружают двоичный ключ после декодирования base64, но я сам не пробовал эти сценарии, поскольку я нужно заставить его работать на PHP. То же самое касается примера Java самого Google (с использованием их библиотеки Tink).
Следующие и другие параметры (с использованием phpseclib3), похоже, не работают, все они завершаются с ошибкой «Невозможно прочитать ключ»:
Код: Выделить всё
$keyValue = "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs/J7ghdwu4/b6NvqzQebS+Z80FEP8ZlGdAdWDUjfPeBKaV+YOWW0l6U\/4IGXnfY9NrsND1fwxAqRq0unR/LCIg==";
$ecPublicKeyBinary = base64_decode($keyValue);
$publicKey = PublicKeyLoader::load($ecPublicKeyBinary);
// or
$publicKey = EC::load($ecPublicKeyBinary, 'PKCS8');
Мне что-то не хватает, так как это должно быть понятно, надеюсь, кто-нибудь укажет мне правильное направление.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... -signature
Мобильная версия