baibaratsky / php-wmsigner

WebMoney Signer
Other
16 stars 5 forks source link

Передача ключа в виде строки #17

Closed fedl closed 5 years ago

fedl commented 5 years ago

If you have your key not in a file, it is possible to provide a key as a string: $signer = new Signer('wmid', $yourKeyData, 'password');

Подскажите как правильно преобразовать key.kwm в строку для $yourKeyData ? Пытаюсь через base64 - ошибка Key file not found

fedl commented 5 years ago

Вопрос снят. Ну конечно же прогоняем ключ через base64_encode, сохраняем ключ в проекте как строку и перед использованием декодируем обратно через base64_decode.

baibaratsky commented 5 years ago

@fedl, как вы уже поняли, base64_encode/decode здесь роли не играет. На вход подается просто содержимое файла ключа в строковом виде. Хранить вы его можете, как вам удобно, в том числе и закодированным в base64.

fedl commented 5 years ago

Андрей, здравствуйте, Да, но ключ-то в файле находится в бинарном виде. Собственно поэтому возникло непонимание каким образом подать его в функцию в строковом виде, согласно документации. Изначально предположил что надо перевести его в строку через base64_encode и в таком виде подать в функцию, но это оказалось не верным.

Сейчас я предварительно преобразую ключ из бинарного вида в строку через base64_encode. Далее добавляю эту строку в файл с кодом, где она и "хранится". А перед подачей ключа в функцию делаю обратное преобразование строки через base64_decode. То есть получается что фактически на вход функции ключ передается не в виде строки а в бинарном виде.

Имеет место неточность в описании или я что-то неверно понимаю ?

С уважением, Федорук Александр.

20.07.2019 21:51, Andrei Baibaratsky пишет:

@fedl https://github.com/fedl, как вы уже поняли, base64_encode/decode здесь роли не играет. На вход подается просто содержимое файла ключа в строковом виде. Хранить вы его можете, как вам удобно, в том числе и закодированным в base64.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/baibaratsky/php-wmsigner/issues/17?email_source=notifications&email_token=ADRB5I5ZP4EXYPFNMAUYG3DQANNBZA5CNFSM4IFPDG42YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2NT6YI#issuecomment-513490785, or mute the thread https://github.com/notifications/unsubscribe-auth/ADRB5I35JREIJ74OC3KM7PDQANNBZANCNFSM4IFPDG4Q.

baibaratsky commented 5 years ago

it is possible to provide a key as a string

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

fedl commented 5 years ago

Посмотрите, например, какой тип данных возвращает упомянутая вами base64_decode https://www.php.net/manual/en/function.base64-decode.php. Из руководства: The returned data may be binary.

В моем случае она как раз binary и возвращает

Да, я понимаю, что строка в php это не то, что строка в Си и может хранить бинарные данные. Но видимо моё Си-прошлое бунтует против этого ). Я бы всё таки для лучшего понимания разделял понятия "данные в виде строки" и "binary данные"

С уважением, Федорук Александр

22.07.2019 13:55, Andrei Baibaratsky пишет:

it is possible to provide a key as a string

Не вижу проблемы. Конструктор принимает тип данных string. Если строка не имеет человекочитабельный вид, она не перестает быть строкой. Посмотрите, например, какой тип данных возвращает упомянутая вами base64_decode https://www.php.net/manual/en/function.base64-decode.php.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/baibaratsky/php-wmsigner/issues/17?email_source=notifications&email_token=ADRB5I63IR7BIYC356CNMW3QAWGZHA5CNFSM4IFPDG42YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2PRUXY#issuecomment-513743455, or mute the thread https://github.com/notifications/unsubscribe-auth/ADRB5I2IJYVM22JGBHLNFTLQAWGZHANCNFSM4IFPDG4Q.

baibaratsky commented 5 years ago
base64_decode ( string $data [, bool $strict = FALSE ] ) : string

Называйте их как хотите, но в php нет типа данных binary, здесь для этого используется string. Посмотрите, например, на hex2bin или pack.