• AlexRUS1234's avatar
    apk: подпись индекса внутри APKINDEX.tar.gz — клиент принимает без флага
    · ec05fea3
    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