diff --git a/CHANGELOG.md b/CHANGELOG.md index f5997b9..8585a65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,30 @@ Versions correspond to git tags (`v_X_Y_Z` tag → `X.Y.Z` version); see ## [Unreleased] +## [1.3.26] - 2026-08-12 + + + +### Added + +- JWT Bearer **RS256**, **RS384**, and **RS512** via platform `ТокенДоступа` + (Closes #13): schema field `privateKey` (PEM, unencrypted); HS* still uses + `secret`. Choice button loads `.pem`/`.txt` into the private key field. + Postman `jwt` import/export round-trips `privateKey`. +- JWT Bearer **PS256**, **PS384**, and **PS512** (RSA-PSS) via the same + `privateKey` PEM field (Closes #13). +- JWT Bearer **ES256**, **ES384**, and **ES512** (ECDSA) via the same + `privateKey` PEM field (Closes #13). + +### Changed + +- JWT Bearer form shows **Secret** only for HS* and **Private key (PEM)** for + RS*/PS*/ES* (Postman-like); both keys remain in the params table for round-trip. +- JWT Bearer signing migrated from hand-rolled HMAC (`ХешированиеДанных`) to + platform `ТокенДоступа` / `АлгоритмПодписиТокенаДоступа` for **HS256**, + **HS384**, and **HS512** (Closes #13). +- Updated README demo GIF and main form screenshot for JWT Bearer. + ## [1.3.25] - 2026-08-07 @@ -237,6 +261,31 @@ Versions correspond to git tags (`v_X_Y_Z` tag → `X.Y.Z` version); see ## [Unreleased] +## [1.3.26] - 2026-08-12 + + + +### Добавлено + +- JWT Bearer **RS256**, **RS384** и **RS512** через платформенный `ТокенДоступа` + (Closes #13): поле схемы `privateKey` (PEM без пароля); для HS* по-прежнему + `secret`. Кнопка выбора загружает `.pem`/`.txt` в поле приватного ключа. + Импорт/экспорт Postman `jwt` сохраняет `privateKey`. +- JWT Bearer **PS256**, **PS384** и **PS512** (RSA-PSS) через то же поле + `privateKey` (Closes #13). +- JWT Bearer **ES256**, **ES384** и **ES512** (ECDSA) через то же поле + `privateKey` (Closes #13). + +### Изменено + +- В форме JWT Bearer поле **Секрет** только для HS*, **Приватный ключ (PEM)** + для RS*/PS*/ES* (как в Postman); оба ключа остаются в таблице параметров для + round-trip. +- Подпись JWT Bearer переведена с самописного HMAC (`ХешированиеДанных`) на + платформенный `ТокенДоступа` / `АлгоритмПодписиТокенаДоступа` для **HS256**, + **HS384** и **HS512** (Closes #13). +- Обновлены demo GIF и скриншот главной формы в README под JWT Bearer. + ## [1.3.25] - 2026-08-07 @@ -447,7 +496,8 @@ Versions correspond to git tags (`v_X_Y_Z` tag → `X.Y.Z` version); see - Разные исправления стабильности. -[Unreleased]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_25...HEAD +[Unreleased]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_26...HEAD +[1.3.26]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_25...v_1_3_26 [1.3.25]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_24...v_1_3_25 [1.3.24]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_23...v_1_3_24 [1.3.23]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_22...v_1_3_23 diff --git a/README.md b/README.md index 3a99bdd..5530fea 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [](https://github.com/LunatikDG/GetManHTTP/blob/main/LICENSE.txt) [](#) -[](https://github.com/LunatikDG/GetManHTTP/releases) +[](https://github.com/LunatikDG/GetManHTTP/releases) [](https://github.com/LunatikDG/GetManHTTP/actions/workflows/bsl-lint.yml)
@@ -58,7 +58,9 @@ indicator, response headers and formatted body.

**Authorization** — type selector (Basic / Token / Bearer Token / API Key / JWT Bearer) with fields that adapt to
-the selected scheme. JWT Bearer signs HS256/HS512 locally (no crypto provider required).
+the selected scheme. JWT Bearer signs HS256/HS384/HS512 (HMAC secret) and
+RS256/RS384/RS512, PS256/PS384/PS512, ES256/ES384/ES512 (PEM private key, no
+passphrase) via platform `ТокенДоступа`.

@@ -223,7 +225,9 @@ GetManHTTP — это HTTP-клиент, оформленный как **вне

**Авторизация** — выбор типа (Basic / Token / Bearer Token / API Key / JWT Bearer) с полями, которые меняются в
-зависимости от схемы. JWT Bearer подписывает HS256/HS512 локально (криптопровайдер не нужен).
+зависимости от схемы. JWT Bearer подписывает HS256/HS384/HS512 (HMAC-секрет) и
+RS256/RS384/RS512, PS256/PS384/PS512, ES256/ES384/ES512 (PEM приватный ключ без
+пароля) через платформенный `ТокенДоступа`.

diff --git a/docs/collection-format.md b/docs/collection-format.md
index 03cfecf..123e85c 100644
--- a/docs/collection-format.md
+++ b/docs/collection-format.md
@@ -105,7 +105,7 @@ Portable authorization object (collection, folder, or request).
| `Token` | collection, folder, request | `tokenPrefix`, `token` | Sent as `Authorization: {tokenPrefix} {token}`. Default prefix when empty at apply time: `Token`. `token` is secret. |
| `BearerToken` | collection, folder, request | `token` | Sent as `Authorization: Bearer {token}` (fixed prefix, RFC 6750). `token` is secret. |
| `ApiKey` | collection, folder, request | `key`, `value`, `addTo` | `addTo`: `Header` (default) or `Query`. Default `key` name: `X-API-Key`. `value` is secret. |
-| `JwtBearer` | collection, folder, request | `algorithm`, `secret`, `claims`, `ttlSeconds` | Builds JWT (HS256/HS512) and sends `Authorization: Bearer {jwt}`. `algorithm` default `HS256`; `claims` is a JSON object string; `ttlSeconds` > 0 sets `iat`/`exp` (Unix). `secret` is secret. |
+| `JwtBearer` | collection, folder, request | `algorithm`, `secret`, `privateKey`, `claims`, `ttlSeconds` | Builds JWT via platform `ТокенДоступа` and sends `Authorization: Bearer {jwt}`. Algorithms: **HS256/HS384/HS512** (signing material: `secret`) and **RS256/RS384/RS512**, **PS256/PS384/PS512**, **ES256/ES384/ES512** (signing material: `privateKey` PEM, unencrypted; RSA or EC depending on algorithm). Default `algorithm`: `HS256`. `claims` is a JSON object string; `ttlSeconds` > 0 sets `iat`/`exp` (Unix). Both `secret` and `privateKey` are secret; empty required material omits the Authorization header. |
| `InheritFromOwner` | folder, request | _(none)_ | Walk up folder → collection auth. **Not** valid as collection root auth (importers coerce unsupported types to the context default). |
---
@@ -378,7 +378,7 @@ v2.1: файлы Postman определяются отдельно и преоб
| `Token` | коллекция, папка, запрос | `tokenPrefix`, `token` | Заголовок `Authorization: {tokenPrefix} {token}`. Префикс по умолчанию при применении: `Token`. `token` — секрет. |
| `BearerToken` | коллекция, папка, запрос | `token` | Заголовок `Authorization: Bearer {token}` (фиксированный префикс, RFC 6750). `token` — секрет. |
| `ApiKey` | коллекция, папка, запрос | `key`, `value`, `addTo` | `addTo`: `Header` (по умолчанию) или `Query`. Имя ключа по умолчанию: `X-API-Key`. `value` — секрет. |
-| `JwtBearer` | коллекция, папка, запрос | `algorithm`, `secret`, `claims`, `ttlSeconds` | Собирает JWT (HS256/HS512) и шлёт `Authorization: Bearer {jwt}`. `algorithm` по умолчанию `HS256`; `claims` — JSON-объект строкой; `ttlSeconds` > 0 задаёт `iat`/`exp` (Unix). `secret` — секрет. |
+| `JwtBearer` | коллекция, папка, запрос | `algorithm`, `secret`, `privateKey`, `claims`, `ttlSeconds` | Собирает JWT через платформенный `ТокенДоступа` и шлёт `Authorization: Bearer {jwt}`. Алгоритмы: **HS256/HS384/HS512** (материал: `secret`) и **RS256/RS384/RS512**, **PS256/PS384/PS512**, **ES256/ES384/ES512** (материал: `privateKey` PEM без пароля; RSA или EC в зависимости от алгоритма). `algorithm` по умолчанию `HS256`. `claims` — JSON-объект строкой; `ttlSeconds` > 0 задаёт `iat`/`exp` (Unix). И `secret`, и `privateKey` — секреты; пустой нужный материал — без заголовка Authorization. |
| `InheritFromOwner` | папка, запрос | _(нет)_ | Наследование папка → коллекция. На корне коллекции не используется. |
---
diff --git a/docs/images/demo.gif b/docs/images/demo.gif
index d1c68b7..f8a5fbc 100644
Binary files a/docs/images/demo.gif and b/docs/images/demo.gif differ
diff --git a/docs/images/main-form.png b/docs/images/main-form.png
index 23a22b2..8599bb9 100644
Binary files a/docs/images/main-form.png and b/docs/images/main-form.png differ
diff --git "a/src/ExternalDataProcessors/GetManHTTP/Forms/\320\244\320\276\321\200\320\274\320\260/Form.form" "b/src/ExternalDataProcessors/GetManHTTP/Forms/\320\244\320\276\321\200\320\274\320\260/Form.form"
index 37b36ce..a1ca695 100644
--- "a/src/ExternalDataProcessors/GetManHTTP/Forms/\320\244\320\276\321\200\320\274\320\260/Form.form"
+++ "b/src/ExternalDataProcessors/GetManHTTP/Forms/\320\244\320\276\321\200\320\274\320\260/Form.form"
@@ -2,7 +2,7 @@
Ошибки и предложения: репозиторий на GitHub, почта Версия обработки: 1.3.25 Версия обработки: 1.3.26Настройка HTTP-запроса
Authorization (префикс по умолчанию Token);Authorization: Bearer … (фиксированный префикс);iat/exp; заголовок Authorization: Bearer ….ТокенДоступа: HS256/HS384/HS512 (поле «Секрет») и RS256/RS384/RS512, PS256/PS384/PS512, ES256/ES384/ES512 (поле «Приватный ключ (PEM)» без пароля, кнопка выбора файла .pem/.txt), Claims (JSON), TTL для iat/exp; заголовок Authorization: Bearer ….Обратная связь
main@lunatikdg.ru, Telegram @LunatikDG.