Утилита signver из пакета nss-utils возвращает ненулевой код выхода (1) при успешном выполнении команды отображения информации о PKCS#7-подписи (-A), несмотря на то, что весь ожидаемый вывод формируется корректно и ошибок при работе не возникает. Это ломает сценарии автоматизации, где результат оценивается по коду возврата (например, тест-кейс repo-tests-14813 в Testlink вынужден оценивать вывод, а не exit code). Шаги воспроизведения: 1. Создать NSS-базу и самоподписанный сертификат с ключом: # mkdir /tmp/sv && cd /tmp/sv # echo 12345678 > pw # openssl rand -out noise 4096 # certutil -N -d . -f pw # certutil -S -s "CN=Joe Admin" -n joeadmin -x -t "C,C,C" -m 1003 -v 120 -d . -f pw -z noise --extSKID # echo "Hello World!" > hw.txt 2. Создать отсоединённую PKCS#7-подпись: # cmsutil -S -d . -N joeadmin -i hw.txt -o signed.p7s -p 12345678 3. Проверить подпись (код выхода 0 — ожидаемо): # signver -V -s signed.p7s -d . -i hw.txt signatureValid=yes # echo $? 0 4. Вывести всю информацию о подписи: # signver -A -s signed.p7s -d . -i hw.txt pkcs7.contentInfo=PKCS #7 Signed Data pkcs7.version=1 (0x1) pkcs7.digestAlgorithmListLength=1 pkcs7.digestAlgorithm[0]=SHA-256 pkcs7.contentInformation=PKCS #7 Data pkcs7UnknownData=<unsupported> ... # echo $? 1 Фактический результат: exit=1 при полностью корректном выводе. Ожидаемый результат: exit=0, т.к. операция выполнена успешно. Диагноз: причина в cmd/signver/signver.c — переменная result инициализируется 1 (int result = 1;), а сбрасывается в 0 только в ветке проверки подписи (doVerify, после вывода signatureValid). При запуске только с опцией -A (displayAll) ветка doVerify не выполняется, result остаётся равным 1 и возвращается из main как код выхода процесса. Условие «if (SV_PrintPKCS7ContentInfo(outFile, &pkcs7der)) result = 1;» ошибку фиксирует, но успех не обрабатывает. Логика не менялась как минимум с 2013 года (история gear-репозитория nss: последние изменения cmd/signver/signver.c — clang-format 2016/2022 и апстримный Bug 1254455 2016 г.); поведение идентично в 3.130 и 3.132, т.е. это многолетняя особенность, а не регрессия. В апстримном багтрекере Mozilla (bugzilla.mozilla.org) известного бага по этой проблеме не найдено. Предложение по исправлению: устанавливать result = 0 после успешного вывода в ветке displayAll: if (displayAll) { if (SV_PrintPKCS7ContentInfo(outFile, &pkcs7der)) result = 1; else result = 0; } Окружение: ALT Sisyphus / p11, nss-utils-3.132-alt1 (также nss-utils-3.130-alt1), x86_64.
nss-3.132-alt2 -> sisyphus: Tue Oct 27 2026 Ajrat Makhmutov <rauty@altlinux> 3.132-alt2 - Make signver -A exit with 0 on success (Closes: 61223).