Как я могу проверить доказательство TON на php?

Не могу гарантировать, что помогу с исправлением ошибки, но я могу попробовать проанализировать ее и дать рекомендации. 

Ошибка, которую вы получаете, говорит о том, что аргумент #1 ($signature) должен содержать байты длиной SODIUM_CRYPTO_SIGN_BYTES. 

У вас есть фрагмент кода:

$signature="CMEgAPyCLG71CecF1MsTnjjlChMieIDMwcSrHAp89eyofre4Gwm7QtfO2qbNaeExgvS5qW72sU6DzdjWsxtkBw=="

Вы пытаетесь использовать TON proof и PHP, но возникает ошибка. Если воспользоваться этой информацией, я могу предположить, что вы используете библиотеку sodium_crypto_sign_verify_detached() для проверки подписи и ваш $signature является значением, которое вы хотите проверить.

Предположу, что проблема заключается в формате $signature. sodium_crypto_sign_verify_detached() ожидает, чтобы $signature содержал байты. Однако, ваш $signature представлен в кодировке Base64.

Рекомендую попробовать декодировать $signature из Base64 обратно в байты перед его использованием в sodium_crypto_sign_verify_detached(). В PHP вы можете использовать функцию base64_decode() для этого:

$decoded_signature = base64_decode($signature);

Затем вы можете использовать $decoded_signature вместо $signature в sodium_crypto_sign_verify_detached():

$result = sodium_crypto_sign_verify_detached($decoded_signature, $message, $public_key);

Пожалуйста, попробуйте эту рекомендацию и сообщите, если это помогло решить проблему.
  • 21 ноября 2023 г. 13:20
Ответы на вопрос 1
С учетом предоставленной информации, вы можете использовать следующий код на PHP для проверки доказательства TON:

```php
$signature = "CMEgAPyCLG71CecF1MsTnjjlChMieIDMwcSrHAp89eyofre4Gwm7QtfO2qbNaeExgvS5qW72sU6DzdjWsxtkBw==";
$message = "Сообщение, которое нужно проверить";
$public_key = "Публичный ключ для проверки";

$decoded_signature = base64_decode($signature);

$result = sodium_crypto_sign_verify_detached($decoded_signature, $message, $public_key);

if ($result) {
    echo "Подпись верна";
} else {
    echo "Подпись неверна";
}
```

Обратите внимание, что вам также понадобится установить расширение Sodium для PHP, чтобы использовать функции sodium_crypto_sign_verify_detached() и base64_decode().
Похожие вопросы