Как воспроизвести успешный openssl_verify - PullRequest
0 голосов
/ 24 сентября 2019

У моего веб-приложения есть конечная точка, которая получает POST от webhook, и служба, которая отправляет полезную нагрузку, также подписывает его, используя openssl_sign.

Как и следовало ожидать, я знаю открытый ключ службыпоэтому я использую openssl_verify и проверяю, соответствует ли «подпись», отправленная моей конечной точке, «полезной нагрузке» («полезная нагрузка» и «подпись» являются именами параметров).

Все работает нормально.

Теперь я хочу написать функциональный тест контроллера моей конечной точки.Я хочу доказать, что он правильно обрабатывает, когда «полезная нагрузка» и «подпись» проверяются по сравнению с недопустимыми «полезная нагрузка» и «подпись».

Поскольку у меня НЕ есть закрытый ключ службы, я не могусгенерировать мои собственные значения для контрольного примера.

Поэтому я использовал ведение журнала, чтобы увидеть реальные значения "payload" и "signature".

Но тогда, когда я использую эти значения длямой тест не пройден!

Я думаю, что проблема как-то связана с символами разрыва строки или чем-то, что не может быть точно записано на 100% при ведении журнала Laravel.

Как я могу точно захватить«полезная нагрузка» и «подпись» производства?

PS Я также сделал это:

$payload = $request->input(self::PARAM_PAYLOAD);
Log::debug(sha1($payload));
Log::debug($payload);

А потом, когда я смотрю в журнале значение $payload и запускаю sha1 на нем хэш не совпадает с зарегистрированным хешем оригинала $payload.

1 Ответ

0 голосов
/ 24 сентября 2019

json_encode не помогло и serialize не помогло.Наконец-то сработало:

$payload = $request->input(self::PARAM_PAYLOAD);
Log::debug(encrypt($payload));

Независимо от того, происходило ли повреждение из-за разрывов строк, одинарных кавычек, двойных кавычек или других специальных символов, очевидно, что функция encrypt сделала это проблемой.

Итак, я скопировал зашифрованное значение полезной нагрузки из моего журнала и вставил его в const в моем тесте.

И затем я расшифровал полезную нагрузку перед запуском теста.Pass!

Я до сих пор не понимаю причину проблемы, но по крайней мере этот обходной путь помог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...