Чтобы проверить подпись, использовать исходную немодифицированную полезную нагрузку, отправленную с тома, и проверить ее с помощью открытого ключа тома, расположенного здесь:
песочница https: //api.sandbox.volumepay.io/.well-known/signature/pem
live https://api.volumepay.io/.well-known/signature/pem
Я получаю две ошибки:
Ошибка OpenSSL: ошибка: 02000068: процедуры rsa:: неверная подпись
Ошибка OpenSSL: ошибка: 1C880004: Подпрограммы поставщика::RSA lib
Мой источник:
Код: Выделить всё
private function verifySignature($payload, $signature) {
$pemUrl= 'https://api.sandbox.volumepay.io/.well-known/signature/pem';
$pemContent = file_get_contents($pemUrl);
$pemContent = trim(preg_replace('/\s+/', '', $pemContent));
if (empty($pemContent)) {
custom_log_message('ERROR', "O conteúdo do PEM está vazio.");
return false;
}
$publicKey = "-----BEGIN PUBLIC KEY-----\n" . $pemContent . "\n-----END PUBLIC KEY-----";
$publicKeyResource = openssl_pkey_get_public($publicKey);
if ($publicKeyResource === false) {
while ($error = openssl_error_string()) {
custom_log_message('ERROR', "\n OpenSSL error: {$error} \n ");
}
return false;
}
$hashedPayload = hash('sha256', $payload, true);
$result = openssl_verify($hashedPayload, base64_decode($signature), $publicKeyResource, OPENSSL_ALGO_SHA256);
if ($result === 1) {
custom_log_message('SUCCESS', 'OpenSSL Aceito: ' . " \n");
return true;
} else {
custom_log_message('ERROR', 'OpenSSL error: ' . openssl_error_string() ." \n");
return false;
}
}
Сервер: Сервер: {COM_DOMAIN_NAME":"real.com" ,"COM_DOMAIN_ROOT":"/real.com/",COM_MEMORYLIMIT":"2147483648",COM_CPU_SHARES":"2048",COM_EXEC":"php8.0",COM_CONFIG_MTIME":"1727265261702181",COM_DOCUMENT_ROOT":"/customers/ a/2/c/real.com/httpd.www","HTTP_CONNECTION":"close","SCRIPT_NAME":"/index.php","REQUEST_URI":"/volumePayment/webhook","QUERY_STRING":" ","REQUEST_METHOD":"PUT","SERVER_PROTOCOL":"HTTP/1.1","GATEWAY_INTERFACE":"CGI/1.1","REDIRECT_QUERY_STRING":"volumePayment/webhook","REDIRECT_URL":"/volumePayment/webhook" ,"REMOTE_PORT":"47356","SCRIPT_FILENAME":"/customers/a/2/c/real.com/httpd.www/index.php","SERVER_ADMIN":"support@one.com","CONTEXT_DOCUMENT_ROOT ":"/var/www","CONTEXT_PREFIX":"","REQUEST_SCHEME":"https","REMOTE_ADDR":"52.30.246.188","SERVER_PORT":"80","SERVER_ADDR":"10.27.5.21 ","SERVER_NAME":"real.com","SERVER_SOFTWARE":"Apache","SERVER_SIGNATURE":"","PATH":"/usr/local/sbin:/usr/local/bin:/usr/sbin :/usr/bin:/sbin:/bin","HTTP_X_VARNISH":"36059175","HTTP_X_GROUPONE_REQID":"0-1728345217-f1f4d43736059174","HTTP_X_GROUPONE_HOST":"real.com","HTTP_X_ORIGINAL_URL":"/volumePa yment /webhook","HTTP_X_GROUPONE_FORWARDED_IP":"52.30.246.188","HTTP_X_ONECOM_HOST":"real.com","HTTP_X_GROUPONE_BRAND":.com","HTTP_X_ONECOM_BRAND":.com","HTTP_X_FORWARDED_PROTO":"https","HTTP_X_ONECOM_F ORWARDED_PROTO ":"https","HTTP_VIA":"1.1 webcache1 (Varnish/trunk)","HTTP_X_FORWARDED_FOR":"52.30.246.188","HTTP_TRACESTATE":"dd=s:1;p:3d4ec978861e3f2d;t.dm:- 1;t.tid:6704748100000000","HTTP_TRACEPARENT":"00-6704748100000000082bb5817a305ad0-3d4ec978861e3f2d-01","HTTP_X_DATADOG_TAGS":"_dd.p.dm=-1,_dd.p. tid=6704748100000000","HTTP_X_DATADOG_SAMPLING_PRIORITY": "1","HTTP_X_DATADOG_PARENT_ID":"4417689803980422957","HTTP_X_DATADOG_TRACE_ID":"588763744007379664","CONTENT_LENGTH":"414","CONTENT_TYPE":"application/json","HTTP_ACCEPT":"/","HTTP_HOST":"real.com","HTTP_USER_AGENT":"ReactorNetty/dev","ENV_VCV_ENV_ADDONS_ID":.com","ENV_VCV_TOKEN_URL":"https://wpapi.one.com/api/v1. 0/plugins/visualcomposer/activate",COM_WP_ADDONS_API":"https://wpapi.one.com",COM_WEBSHOP_HOST":"webshop2.cst.webpod13-cph3.one.com","HTTPS":"on",COM_PHP_WORKERS ":"8","GROUPONE_BRAND_NAME":.com",COM_BRAND_ID":"1",COM_TMPDIR":"/customers/a/2/c/real.com//tmp","DOMAIN_NAME":"real.com ","DOCUMENT_ROOT":"/customers/a/2/c/real.com/httpd.www","HTTP_AUTHORIZATION":"SHA256withRSA aa0ILSmN6vaQPktyCYQ9g8qEEAZX7D8fa4GMNKTaba9LweEtH+UMCEYDLDa1BzVX1bO3eYP8EndOhrG3fC8Ce5h CeMSQml9xnYvsojEnIBzI256QaHYYz5APatt512s8XW3A9w0JX3+rxSQdBurGVDEgCjT5sYRGWN1thH2FIEIktE43TPHdDRY0Ywz5fdhO2jU46eESQNS02B0uCF2tmoW8Y/ifkTSaogvDv/GcIY hBzaCd8qhz9EObEDbFbDKvP82KbZQoId1e2/EMG6csIAsqWAWG5JkKH2UmRSwNn6egQJWuJngAgXFzUSWI0nX4hyorkqEz7oL8Pvmkh1aNfQ==","REDIRECT_STATUS": "200","REDIRECT_ENV_VCV_ENV_ADDONS_ID":.com","REDIRECT_ENV_VCV_TOKEN_URL":"https://wpapi.one.com/api/v1.0/plugins/ ... ps://wpapi .one.com","REDIRECT_ONECOM_WEBSHOP_HOST":"webshop2.cst.webpod13-cph3.one.com","REDIRECT_HTTPS":"on","REDIRECT_ONECOM_CPU_SHARES":"2048","REDIRECT_ONECOM_MEMORYLIMIT":"2147483648","REDIRECT_ONECOM_PHP_WORKERS ":"8","REDIRECT_GROUPONE_BRAND_NAME":.com","REDIRECT_ONECOM_BRAND_ID":"1","REDIRECT_ONECOM_CONFIG_MTIME":"1727265261702181","REDIRECT_ONECOM_EXEC":"php8.0","REDIRECT_ONECOM_TMPDIR":"/customers/a/ 2/c/real.com//tmp","REDIRECT_COM_DOMAIN_ROOT":"/real.com/","REDIRECT_ONECOM_DOMAIN_NAME":"real.com","REDIRECT_DOMAIN_NAME":"real.com","REDIRECT_ONECOM_DOCUMENT_ROOT":"/ customer/a/2/c/real.com/httpd.www","REDIRECT_DOCUMENT_ROOT":"/customers/a/2/c/real.com/httpd.www","REDIRECT_HTTP_AUTHORIZATION":"SHA256withRSA aa0ILSmN6vaQPktyCYQ9g8qEEAZX7D8fa4GMNKTaba9LweEtH+UMCEYDLDa1Bz VX1bO3eYP8EndOhrG3fC8Ce5hCeMSQml9xnYvsojEnIBzI256QaHYYz5APatt512s8XW3A9w0JX3+ rxSQdBurGVDEgCjT5sYRGWN1thH2FIEIktE43TPHdDRY0Ywz5fdhO2jU46eESQNS02B0uCF2tmoW8Y/ifkTSaogvDv/GcIYhBzaCd8qhz9EObEDbFbDKvP82KbZQoId1e2/EMG6csIAsqWAWG5 JkKH2UmRSwNn6egQJWuJngAgXFzUSWI0nX4hyorkqEz7oL8Pvmkh1aNfQ==","FCGI_ROLE":"RESPONDER","PHP_SELF":"/index.php","REQUEST_TIME_FLOAT":1728345217.831069946289062 5, "REQUEST_TIME": 1728345217
Подробнее здесь: https://stackoverflow.com/questions/790 ... get-public
Мобильная версия