Перейти к содержимому
docs.
WORKSPACE

Документации проектов

Открыть каталог проектов
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компоненты✓Финансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Каталог
Документация/LWT / JWT / JOSE

LWT — API

LWT::encode($data, string $signatureKey = null, string $tokenEncryption = null, string $encryptionKey = null): string
LWT::decode(string $token, string $signatureKey = null, string $tokenEncryption = null, string $encryptionKey = null)

Ключ подписи и алгоритм обязательны по поведению; пустые значения отклоняются. Внутри статическое типизированное поле алгоритма получает аргумент до проверки пустоты, поэтому null может привести к TypeError, а не к прикладному исключению. Передавайте аргументы явно.

encode() возвращает compact-токен; decode() возвращает JSON-декодированные данные, без проверки application claims. Временной допуск, допустимый issuer/audience и replay policy аргументами не задаются.

ПолеСодержимое
typLWTv3
ctyJWS без payload encryption, LZX при заданном ключе шифрования
algПереданная строка алгоритма подписи
kidПубличное статическое LWT::$CLAIM_KID, если задано и не отфильтровано как пустое
encAES-256-CBC+RSA для зашифрованного режима

При decode проверяются typ, cty и alg. Это не полноценная политика JOSE critical headers и не resolver ключей по kid.

Без encryption payload — base64url от JSON. При encryption в base64url помещается бинарная структура:

uint32_be(4 + encrypted_key_length)
| RSA-encrypted AES key
| IV
| AES-256-CBC ciphertext in OpenSSL default encoded form

Использование openssl_encrypt() с options 0 означает, что ciphertext внутри этого envelope уже представлен в base64-форме. Не трактуйте его как стандартный raw JWE ciphertext. RSA padding выбирается из доступных констант с приоритетом OAEP; отдельного аргумента для фиксации профиля padding у API нет.

Подписывается исходная строка headerSegment.payloadSegment. HMAC использует бинарный результат hash_hmac(). Для обычного симметричного ключа берутся переданные байты; специальная ветка PEM не должна использоваться как замена секрету HMAC.

RSA/ECDSA обращаются к OpenSSL напрямую; EdDSA использует sodium. Для ECDSA не выполняется преобразование DER в фиксированную пару R/S. Строгая проверка размера RSA и соответствия EC curve алгоритму, имеющаяся в JWT::JwaSignature, здесь отсутствует.

base64UrlEncode() и base64UrlDecode() доступны публично. Decode дополняет padding и вызывает base64_decode() без strict mode; это не тот же строгий канонический decoder, что в библиотеке JWT.

Ошибки в key/envelope/JSON/signature обозначаются разными встроенными исключениями PHP и OpenSSL/sodium. Не передавайте их сообщения клиенту как подробный ответ endpoint. Ограничивайте длину токена до разбора, проверяйте application claims после успешного decode и не используйте decode как доказательство пригодности токена для конкретного действия.