-
AlexRUS1234 создал
Живая проба 193 показала: apk update из личного репо без --allow-untrusted давал UNTRUSTED signature (exit 2 в 2.14.6 / 1 в 3.0.7). Причина — формат: генератор писал detached APKINDEX.tar.gz.sig armored-подписью OpenPGP, а apk-tools такой файл не запрашивает вовсе (на CDN Alpine .sig — 404: подпись лежит первым tar-членом ВНУТРИ APKINDEX.tar.gz). - gen.go: индекс подписывается форматом apk — первым gzip-членом tar с единственным членом .SIGN.RSA.khrazhevnik.rsa.pub (RSA PKCS#1 v1.5 над SHA-1-DigestInfo от sha1 СЖАТЫХ байт телесного члена), вторым — индекс; концевые нулевые блоки tar остаются только в теле (иначе парсер видит лишь сигнатуру и индекс пуст — находка живой пробы); отдельного .sig нет; внедрение через port.RsaSignerInjector вместо port.Signer. - port/rsasha256: SignSHA1DigestInfo (SHA-1-DigestInfo вокруг дайджеста). - web: GET /repo/<name>/apk-key (SPKI-PEM, тот же ключ, что xbps-key). - тесты: контракт формата (verifyrecover публичным ключом без openssl), непрерывность архива через границу членов, точка выдачи ключа, регресс xbps-подписи. - доки: apk.md (ru/en), personal-repos.md (ru/en), SPECIFICATION, ROADMAP, RELEASE, CHANGELOG (ru/en) — рецепт без --allow-untrusted. Живая проба 2026-10-01 (alpine:3.21 apk-tools 2.14.6, alpine:edge 3.0.7): apk update / apk add tree / apk fetch — exit 0 БЕЗ флага; без импортированного ключа — ровно UNTRUSTED signature (негативный контроль).
ec05fea3