Библиотека реализует требования черновика RFC подписи HTTP-сообщений и предоставляет необходимые интерфейсы и базовые реализации.
tl;dr: см. /examples с примерами кода.
- API криптографии.
- API для хэширования тела запроса.
- API для подписи запроса.
- API хранилища ключей для подписей.
- Заголовок Digest.
- Хэширование тела запроса для получения заголовка Digest.
- Заголовок Signature.
- Создание подписи HTTP-запроса.
- Проверка подписи HTTP-запроса.
- Парсинг и сборка RFC-совместимой строки подписи для заголовка Signature.
- Заголовок Authorization.
- Предоставление имени заголовка аутентификации и имени схемы аутентификации.
- PHP 7.1+.
- OpenSSL PHP Extension.
- Psr\HttpMessage.
- DigestAlgorithm — реализация конкретного алгоритма подписи тела запроса.
- DigestAlgorithmFactory — фабрики для инстанцирования конкретной реализации алгоритма подписи.
-
Clerk — компонент, инкапсулирующий логику подписи запроса и создания инстанса подписи.
-
Verifier — компонент, инкапсулирующий логику верификации подписи в запросе.
-
HeaderAccessor — компоненты для доступа к заголовкам запросов и ответов, откуда берутся данные для создания и проверки подписей. Позволяет инкапсулировать логику выборки псеведо-заголовоков вроде
(request-target)
из конкретных реализаций запросов и ответов. -
Key — ключи для использования в подписи. Интерфейс не определяет детали использования, т.к. заранее неизвестно, какой будет использован алгоритм подписи. Ответственность за знание деталей реализации ключа лежит на конкретном алгоритме подписи.
-
KeyStorage — обёртка над хранилищем ключей. Не определяет формат хранения, только обязывает получить какой-то набор данных под ID ключа.
-
KeyLoader — превращает данные, загруженные из хранилища, в инстанс ключа. Может использоваться группа загрузчиков для случаев, когда ключи хранятся в разных форматах и/или используется множество видов ключей.
-
KeyProvider — инкапсулирует логику для выборки ключа по ID и парсинга его в инстанс конкретного ключа. По сути, упрощает работу с хранилищем и группой загрузчиков.
-
SignatureAlgorithm — реализация алгоритма подписи и проверки подписи. Работает со строками, а не инстансами Signature.
-
SignatureAlgorithmFactory — фабрики реализаций алгоритмов подписи. Позволяют по названию алгоритма (например,
rsa-sha256
) получить алгоритм подписи. -
SignatureMarshaller — реализует перевод строки из заголовка Signature в инстанс подписи и обратно в соответствии с требованиями конкретной версии RFC.
-
SigningString — реализует перевод списка заголовков из HeaderAccessor в строку для подписи в соответствии с требованиями конкретной версии RFC.