diff --git a/README.md b/README.md new file mode 100644 index 0000000..e394177 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +## Библиотека для ширования подписи на WASM + +Готовый шаблон тестов есть в example.html + +Ваша задача фундаментально такая: +1) сгенерировать подпись +2) отправить подпись на эндпоинт нужным образом + + +Как сгенерировать подпись? +1) в метод get_secret_value сунуть: +- user_agent (че угодно) +- cur_time (время из эндпоинта https://api.id.hublab.ru/api/v1/server-timestamp ) +- url (на самом деле это path) + +Формат подписи: набор букв и чисел. Если в результате будет что-то типа "Ошибка 95d19684-e70e-47f5-9341-94f5fd575d08", то значит +что-то пошло не так. Отправить такую подпись вы можете, но бэк её не свалидирует и вернёт 401)) + + + + diff --git a/example.html b/example.html index ee16c6a..c01cd55 100644 --- a/example.html +++ b/example.html @@ -26,16 +26,68 @@ document.getElementById('getSecretValue').addEventListener('click', async () => { - const userAgent = document.getElementById('userAgent').value || navigator.userAgent; // Используем введенный user agent или стандартный - const url = document.getElementById('url').value || window.location.href; // Используем введенный URL или текущий + const userAgent = document.getElementById('userAgent').value || navigator.userAgent; +<<<<<<< HEAD const secretValue = get_secret_value(BigInt(Math.floor(Date.now() / 1000)), userAgent, url); +======= + const serverTs = await fetchServerTimestamp() + const secretValue = await get_secret_value(BigInt(serverTs.timestamp), userAgent, '/api/v1/guestlogin'); + console.log(secretValue) +>>>>>>> 48f507f7dde5c9ec4ea370f103d3af1c0dc59262 document.getElementById('result').innerText = secretValue; + + const txt = 'https://api.id.hublab.ru/api/v1/guestlogin?given_time=' + + serverTs.timestamp + + '&user_agent=' + userAgent + + '&gotten_sign=' + secretValue; + + const response1 = await makePostRequest(txt) + + + document.getElementById('result-check').innerText = response1.ok; }); } +<<<<<<< HEAD +======= + async function fetchServerTimestamp() { + const url = "https://api.id.hublab.ru/api/v1/server-timestamp"; + try { + const response = await fetch(url); + // Проверяем, успешен ли ответ + if (!response.ok) { + throw new Error(`Ошибка HTTP: ${response.status}`); + } + // Парсим JSON из ответа + const data = await response.json(); + return data; + } catch (error) { + console.error("Произошла ошибка при получении времени сервера:", error); + return null; // Возвращаем null в случае ошибки + } + } + async function makePostRequest(url) { + try { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', // Указываем, что отправляем данные в формате JSON + }, + }); + if (!response.ok) { + throw new Error(`HTTP error! Статус: ${response.status}`); + } + const responseData = await response.json(); // Получаем ответ как JSON + return responseData; // Возвращаем полученные данные + } catch (error) { + console.error('Ошибка при выполнении POST-запроса:', error); + throw error; // Пробрасываем ошибку дальше + } + } +>>>>>>> 48f507f7dde5c9ec4ea370f103d3af1c0dc59262