Can't verify openssl public key

2019-07-06 10:26发布

问题:

I'm trying to use openssl_verify() to verify $payload with $publicKey. Here's my code:

$publicKey = openssl_pkey_get_public($_POST['publicKeyURL']);
$playerID = $_POST['playerID'];
$timestamp = intval($_POST['timestamp']);
$signature = base64_decode($_POST['signature']);
$salt = base64_decode($_POST['salt']);

$payload = $playerID . $bundleID . $timestamp . $salt;

$status = openssl_verify($payload, $signature, $publicKey);
openssl_free_key($publicKey);

if ($status == 1) { /* */ }

I'm getting the following error:

openssl_verify() supplied key param cannot be coerced into a public key

The POST information is coming from an iOS app using this Game Center method.