Himan
Новичок
Здравствуйте.
Помогите разобраться.
Задача стоит так: есть XML-ка. Надо получить хэш от неё, потом хэш подписывается ключом, шифруется в Base64 и отправляется.
Не могу разобраться в какой момент куда в каком виде передаются данные. И собственно, как надо по-проффессиональному.
Вот моя реализация и мои комменты как я понимаю.
$key = file_get_contents(__DIR__ . '/private_key.pem');
$PrivateKey = openssl_pkey_get_private($key, 'key_password');
if ($PrivateKey === false) {
die ('Key error');
}
$sign = '';
$binary_data = unpack("H*", $xml); //Здесь $binary_data в шестнадцатиричном виде
$hash = sha1($binary_data[1]); //$hash в шестнадцатиричном виде
openssl_sign(hex2bin($hash), $sign, $PrivateKey); //$hash переводим в бинарный вид. $sign получаем в бинарном виде
$sign = base64_encode($sign);
request($sign);
У меня вопрос, как правильно: в функцию openssl_sign данные нужно ложить в бинарном виде или достаточно в шестнадцатиричном?
Спасибо заранее за разъяснения
Помогите разобраться.
Задача стоит так: есть XML-ка. Надо получить хэш от неё, потом хэш подписывается ключом, шифруется в Base64 и отправляется.
Не могу разобраться в какой момент куда в каком виде передаются данные. И собственно, как надо по-проффессиональному.
Вот моя реализация и мои комменты как я понимаю.
$key = file_get_contents(__DIR__ . '/private_key.pem');
$PrivateKey = openssl_pkey_get_private($key, 'key_password');
if ($PrivateKey === false) {
die ('Key error');
}
$sign = '';
$binary_data = unpack("H*", $xml); //Здесь $binary_data в шестнадцатиричном виде
$hash = sha1($binary_data[1]); //$hash в шестнадцатиричном виде
openssl_sign(hex2bin($hash), $sign, $PrivateKey); //$hash переводим в бинарный вид. $sign получаем в бинарном виде
$sign = base64_encode($sign);
request($sign);
У меня вопрос, как правильно: в функцию openssl_sign данные нужно ложить в бинарном виде или достаточно в шестнадцатиричном?
Спасибо заранее за разъяснения