Зависимости под контур: PyJWT 2.8.0, cryptography 43.0.3 (#43) #50

Merged
aep merged 1 commits from feat/43-pyjwt-2-8 into main 2026-10-07 17:41:38 +03:00
Owner

Closes #43

Что сделано

  • api/requirements.txt: PyJWT[crypto]==2.8.0, cryptography==43.0.3; requirements-dev.txt: PyJWT[crypto]==2.8.0.
  • JwksVerifier._signing_key: в jwt.decode передаётся signing_key.key (PyJWK в decode — только с PyJWT 2.10), алгоритм выводится из типа ключа общей функцией _algorithms_for_key (RSA → RS256, EC P-256 → ES256), решение #72 Среза 0 сохранено; неподдерживаемый тип ключа → AuthError (401).
  • Тест: RSA-ключ из JWKS + ES256-токен и наоборот → AuthError. PyJWKClientConnectionError в 2.8.0 есть, тесты не менялись.
  • make check-full зелёный (797 passed); в venv pyjwt 2.8.0, cryptography 43.0.3.

Rulings I made

  • R-1: константа JWKS_ALGORITHMS удалена (стала неиспользуемой), алгоритм по типу ключа.
  • R-2: на 2.8.0 jwt.decode не оборачивает нечисловой exp (список) в InvalidTokenError — DevHs256Verifier.verify теперь ловит TypeError/ValueError → AuthError (тест test_garbage_exp[exp6] падал на 2.8.0). Fixed в этом PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3

Closes #43 ## Что сделано - `api/requirements.txt`: PyJWT[crypto]==2.8.0, cryptography==43.0.3; `requirements-dev.txt`: PyJWT[crypto]==2.8.0. - `JwksVerifier._signing_key`: в `jwt.decode` передаётся `signing_key.key` (PyJWK в decode — только с PyJWT 2.10), алгоритм выводится из типа ключа общей функцией `_algorithms_for_key` (RSA → RS256, EC P-256 → ES256), решение #72 Среза 0 сохранено; неподдерживаемый тип ключа → AuthError (401). - Тест: RSA-ключ из JWKS + ES256-токен и наоборот → AuthError. `PyJWKClientConnectionError` в 2.8.0 есть, тесты не менялись. - `make check-full` зелёный (797 passed); в venv pyjwt 2.8.0, cryptography 43.0.3. ## Rulings I made - R-1: константа `JWKS_ALGORITHMS` удалена (стала неиспользуемой), алгоритм по типу ключа. - R-2: на 2.8.0 `jwt.decode` не оборачивает нечисловой `exp` (список) в InvalidTokenError — `DevHs256Verifier.verify` теперь ловит TypeError/ValueError → AuthError (тест test_garbage_exp[exp6] падал на 2.8.0). Fixed в этом PR. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep added 1 commit 2026-10-07 17:38:54 +03:00
- requirements: PyJWT[crypto]==2.8.0, cryptography==43.0.3 (dev согласован)
- JwksVerifier: в decode передаётся signing_key.key, алгоритм выводится из типа ключа
  (_algorithms_for_key: RSA -> RS256, EC P-256 -> ES256), как для AUTH_PUBLIC_KEY
- DevHs256Verifier: TypeError/ValueError от PyJWT 2.8 (нечисловой exp) -> AuthError, не 500
- тест: RSA-ключ из JWKS + ES256-токен (и наоборот) -> AuthError

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep merged commit fbbf3efc37 into main 2026-10-07 17:41:38 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#50
No description provided.