Я работаю с API-интерфейсом keybase.io - пытаясь запустить его из javascript. Вход в систему - это двухэтапный процесс. Второй этап подробно описан в https://keybase.io/docs/api/1.0/call/login.Реализация HMAC-SHA256 для Keybase в Javascript
Я застрял на следующем;
Сервер и доля клиента этот секрет, и для клиента успешно зарегистрировать пользователя в, он должен доказать знание этого секрета к серверу. Чтобы защитить от повторных атак, не отправляет сам секрет. Скорее всего, это относится к PWH как ключ MAC и MACs временного login_session найденному на предыдущем шаге:
hmac_pwh = HMAC-SHA512(pwh, base64decode(login_session))
Оба входа в двоичном формате; ключ pwh был выведен в двоичном формате из вышеприведенного скриншота, а login_session base64-decoded , а затем отправлен в HMAC в двоичном формате.
Я использую библиотеку CryptoJS, которая дает следующий пример реализации
var hash = CryptoJS.HmacSHA256('Message','Secret Passphrase');
У меня есть несколько проблем;
как вопрос терминологии означает «ключ MAC» равный «Секретный Passphrase» и, следовательно, параметры функции CryptoJS перепутаны в порядке их против примера коды, заданного на Keybase?
Пример CryptoJS имеет простые входы ascii, в то время как инструкции на Keybase предназначены для подачи двоичных входов. Когда я пытаюсь передать его параметру uint8array (который я получаю с предыдущего этапа использования API-интерфейса keybase), он кипит следующим образом;
TypeError: g.clamp is not a function
e,m=4*h; g.sigBytes>m&&(g=f.finalize(g)); g.clamp(); for(var r=this._oKey=g.clone()