Чтобы проверить подпись, использовать исходную немодифицированную полезную нагрузку, отправленную с тома, и проверить ее с помощью открытого ключа тома, расположенного здесь:
песочница 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;
}
}
ИНФО - 2024-10- 07 20:53:37 --> Данные сервера:
{"DOMAIN_NAME":"realmoneytransfer.co.uk","DOMAIN_ROOT":"/customers/a/2/c/realmoneytransfer.co.uk/" ,"COM_MEMORYLIMIT":"2147483648","COM_CPU_SHARES":"2048","COM_EXEC":"php8.0","COM_CONFIG_MTIME":"1727265261702181","COM_DOCUMENT_ROOT":"/customers/a/2/c/realmoneytransfer .co.uk/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/realmoneytransfer.co.uk/httpd.www/index.php","SERVER_ADMIN":"support@omee.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":"realmoneytransfer.co.uk","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_GROUP_HOST":"realmoneytransfer.co.uk","HTTP_X_ORIGINAL_URL":"/ VolumePayment/webhook","HTTP_X_GROUP_FORWARDED_IP":"52.30.246.188","HTTP_X_COM_HOST":"realmoneytransfer.co.uk","HTTP_X_GROUPO_BRAND":"o.com","HTTP_X_OCOM_BRAND":"o.com","HTTP_X_FORWARDED_PROTO" :"https","HTTP_X_OCOM_FORWARDED_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","HT TP_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":"588763744007 379664","CONTENT_LENGTH":"414","CONTENT_TYPE":"application/ json","HTTP_ACCEPT":"/","HTTP_HOST":"realmoneytransfer.co.uk","HTTP_USER_AGENT":"ReactorNetty/dev","ENV_VCV_ENV_ADDONS_ID":"one.com", "ENV_VCV_TOKEN_URL":"https://wpapi.one.com/api/v1.0/plugins/ ... :"webshop2 .cst.webpod13-cph3.one.com","HTTPS":"on","ONECOM_PHP_WORKERS":"8","GROUPONE_BRAND_NAME":"one.com","ONECOM_BRAND_ID":"1","ONECOM_TMPDIR": "/customers/a/2/c/realmoneytransfer.co.uk//tmp","DOMAIN_NAME":"realmoneytransfer.co.uk","DOCUMENT_ROOT":"/customers/a/2/c/realmoneytransfer.co. uk/httpd.www","HTTP_AUTHORIZATION":"SHA256withRSA
aa0ILSmN6vaQPktyCYQ9g8qEEAZX7D8fa4GMNKTaba9LweEtH+UMCEYDLDa1BzVX1bO3eYP8EndOhrG3fC8Ce5hCeMSQml9xnYvsojEnIBzI256 QaHYYz5APatt512s8XW3A9w0JX3+rxSQdBurGVDEgCjT5sYRGWN1thH2FIEiktE43TPHdDRY0 Ywz5fdhO2jU46eESQNS02B0uCF2tmoW8Y/ifkTSaogvDv/GcIYhBzaCd8qhz9EObEDbFbDKvP 82KbZQoId1e2/EMG6csIAsqWAWG5JkKH2UmRSwNn6egQJWuJngAgXFzUSWI0nX4hyorkqEz7oL8Pvmkh1aNfQ==","REDIRECT_STATUS":"200","REDIRECT_ENV_VCV_ENV_ADDONS_ID":"one.com", "REDIRECT_ENV_VCV_TOKEN_URL":"https://wpapi.one.com/api/v1.0/plugins/ ... :"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":"one .com","REDIRECT_ONECOM_BRAND_ID":"1","REDIRECT_ONECOM_CONFIG_MTIME":"1727265261702181","REDIRECT_ONECOM_EXEC":"php8.0","REDIRECT_ONECOM_TMPDIR":"/customers/a/2/c/realmoneytransfer.co.uk/ /tmp","REDIRECT_ONECOM_DOMAIN_ROOT":"/customers/a/2/c/realmoneytransfer.co.uk/","REDIRECT_DOMAIN_NAME":"realmoneytransfer.co.uk","REDIRECT_DOMAIN_NAME":"realmoneytransfer.co.uk", "REDIRECT_ONECOM_DOCUMENT_ROOT":"/customers/a/2/c/realmoneytransfer.co.uk/httpd.www","REDIRECT_DOCUMENT_ROOT":"/customers/a/2/c/realmoneytransfer.co.uk/httpd.www", "REDIRECT_HTTP_AUTHORIZATION":"SHA256withRSA
aa0ILSmN6vaQPktyCYQ9g8qEEAZX7D8fa4GMNKTaba9LweEtH+UMCEYDLa1BzVX1bO3eYP8EndOhrG3fC8Ce5hCeMSQml9xnYvsojEnIBzI256QaHY Yz5APatt512s8XW3A9w0JX3+rxSQdBurGVDEgCjT5sYRGWN1thH2FIEiktE43TPHdDRY0Ywz 5fdhO2jU46eESQNS02B0uCF2tmoW8Y/ifkTSaogvDv/GcIYhBzaCd8qhz9EObEDbFbDKvP82K bZQoId1e2/EMG6csIAsqWAWG5JkKH2UmRSwNn6egQJWuJngAgXFzUSWI0nX4hyorkqEz7oL8Pvmkh1aNfQ==","FCGI_ROLE":"RESPONDER","PHP_SELF":"/index.php","REQUEST_TIME_FLOAT":17283452 17.8310699462890625, "REQUEST_TIME":1728345217
Подробнее здесь: https://stackoverflow.com/questions/790 ... get-public
Мобильная версия