20 функций · сверено с lib/xacme · RFC 8555

Справочник функций xacme

Вкомпилируется вариантом build.bat xacme. Клиент сертификатов ACME (RFC 8555): счёт, заказ, вызов dns-01 и получение сертификата в одном API, с дисковым хранилищем и проверками продления.

Счёт и конфигурация

xrtAcmeAccountConfigInit конфигурация

Обнулить конфигурацию счёта; пресеты ЦС XACME_DIRECTORY_LE / LE_STAGING / ZEROSSL / GOOGLE / BUYPASS присваиваются прямо в sDirectoryUrl.

void xrtAcmeAccountConfigInit(xacmeaccountconfig* pConfig);

Поток выпуска (5 входов)

xacmeClientInit / Unit / AccountPem жизненный цикл

Создание клиента: разбор directory, регистрация или переиспользование счёта (kid из заголовка Location); AccountPem экспортирует ключ счёта для сохранения. Неудача ставит потоковую ошибку (домен "xrt.acme.flow").

bool xacmeClientInit(xacmeclient* pClient, struct xnetengine* pBorrowedEngine, cstr sCaPem, cstr sDirectoryUrl, cstr sAccountKeyPem);

xacmeClientIssue выпуск

Один выпуск dns-01: домены могут быть с шаблонами; возвращает цепочку сертификатов PEM (освобождение xrtFree). Add провайдера вызывается до вызова, Remove — по мере возможности после.

str xacmeClientIssue(xacmeclient* pClient, const xstrview* pDomains, size_t iDomainCount, const struct xacmednsprovider* pDns);

xacmeClientIssueStored продление одним шагом

В композиции с хранилищем: при остатке ≥ iRenewalDays вернуть существующую цепочку как есть (*pbRenewed=false); иначе выпустить, записать (fullchain + происхождение ЦС) и вернуть новую цепочку.

str xacmeClientIssueStored(xacmeclient* pClient, const xstrview* pDomains, size_t iDomainCount, const struct xacmednsprovider* pDns, cstr sStoreRoot, int iRenewalDays, bool* pbRenewed);

DNS-провайдеры

xrtAcmeDnsProviderValidate / Count / Id интерфейс

Проверка структуры провайдера и перечисление встроенного реестра (сейчас только "ali"); сторонние вендоры подключаются заполнением структуры (id/Add/Remove/необязательный Propagate).

xrtAcmeDnsAliConfigInit / xrtAcmeDnsAli / ProviderUnit aliyun

Конструирование провайдера Aliyun alidns (подпись ACS3-HMAC-SHA256 V3) и уборка; ключи — через окружение/Custom.

bool xrtAcmeDnsAli(const xacmednaliconfig* pConfig, xacmednsprovider* pProvider);

Библиотека несёт собственный зонд распространения TXT (UDP к авторитетному NS) и сообщает ЦС о проверке только когда запись видна.

Хранилище и продление

xrtAcmeStoreSaveAccount / LoadAccount счёт

Сохранение/чтение ключа счёта (PKCS#8 PEM) — передайте его в Init для переиспользования, минуя повторную регистрацию.

xrtAcmeStoreSaveCert / LoadCert / LoadCertCa сертификаты

Раздельные запись и чтение полной цепочки и происхождения ЦС, атомарная запись.

xrtAcmeStoreNeedRenew проверка продления

Решение по остатку дней, пора ли продлевать (разбор x509, без внешних процессов).

bool xrtAcmeStoreNeedRenew(cstr sStoreRoot, cstr sDomain, int iRenewalDays, bool* pbNeed);
Все 20 символов (13 публичных + 5 входов потока + 2 приращения) импортированы в скрипты и вложенный TCC; VFS отдаёт заголовки потока в поддереве xacme/. Учебник — глава 38; стыкуется с развёртыванием гл. 42 и горячей заменой сертификатов гл. 47.