<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>61223</bug_id>
          
          <creation_ts>2026-10-26 15:33:53 +0300</creation_ts>
          <short_desc>signver возвращает код выхода 1 при успешном выполнении опции -A</short_desc>
          <delta_ts>2026-10-27 16:37:56 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>nss</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Makeenkov">amakeenk</reporter>
          <assigned_to name="Ajrat Makhmutov">rauty</assigned_to>
          <cc>legion</cc>
    
    <cc>rauty</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>303417</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Makeenkov">amakeenk</who>
    <bug_when>2026-10-26 15:33:53 +0300</bug_when>
    <thetext>Утилита signver из пакета nss-utils возвращает ненулевой код выхода (1) при успешном выполнении команды отображения информации о PKCS#7-подписи (-A), несмотря на то, что весь ожидаемый вывод формируется корректно и ошибок при работе не возникает.

Это ломает сценарии автоматизации, где результат оценивается по коду возврата (например, тест-кейс repo-tests-14813 в Testlink вынужден оценивать вывод, а не exit code).

Шаги воспроизведения:

1. Создать NSS-базу и самоподписанный сертификат с ключом:

   # mkdir /tmp/sv &amp;&amp; cd /tmp/sv
   # echo 12345678 &gt; pw
   # openssl rand -out noise 4096
   # certutil -N -d . -f pw
   # certutil -S -s &quot;CN=Joe Admin&quot; -n joeadmin -x -t &quot;C,C,C&quot; -m 1003 -v 120 -d . -f pw -z noise --extSKID
   # echo &quot;Hello World!&quot; &gt; 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=&lt;unsupported&gt;
   ...
   # 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, &amp;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, &amp;pkcs7der))
          result = 1;
      else
          result = 0;
  }

Окружение: ALT Sisyphus / p11, nss-utils-3.132-alt1 (также nss-utils-3.130-alt1), x86_64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303506</commentid>
    <comment_count>1</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2026-10-27 16:37:56 +0300</bug_when>
    <thetext>nss-3.132-alt2 -&gt; sisyphus:

Tue Oct 27 2026 Ajrat Makhmutov &lt;rauty@altlinux&gt; 3.132-alt2
- Make signver -A exit with 0 on success (Closes: 61223).</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>