Package: src:python-pyhanko-certvalidator
Version: 0.26.3-5
Severity: important
Tags: ftbfs forky sid
User: [email protected]
Usertags: ftbfs-during-forky-support-period

Dear maintainer:

During a rebuild of all packages in unstable with the system clock set
at 2030-08-09 (estimated to be three years after the release date of forky),
this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/ftbfs-future/

About the archive rebuild: This is an effort to keep forky free from
FTBFS bugs during its lifetime as a supported distribution, as
explained here for trixie:

https://lists.debian.org/debian-devel/2024/05/msg00414.html

This category of bugs is considered to be RC for forky, but I will
wait two months from now before raising to serious to give people a
little bit more time to fix them.

The build was made using sbuild and a reduced chroot with only
build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:python-pyhanko-certvalidator, so that this 
is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
tests/test_validate.py::test_nist_pkits[41413 
(valid_onlycontainscacerts_crl_test13)] PASSED [ 86%]
tests/test_validate.py::test_nist_pkits[41414 
(invalid_onlycontainsattributecerts_crl_test14)] PASSED [ 86%]
tests/test_validate.py::test_nist_pkits[41415 (invalid_onlysomereasons_test15)] 
PASSED [ 86%]
tests/test_validate.py::test_nist_pkits[41416 (invalid_onlysomereasons_test16)] 
PASSED [ 87%]
tests/test_validate.py::test_nist_pkits[41417 (invalid_onlysomereasons_test17)] 
PASSED [ 87%]
tests/test_validate.py::test_nist_pkits[41418 (valid_onlysomereasons_test18)] 
PASSED [ 87%]
tests/test_validate.py::test_nist_pkits[41419 (valid_onlysomereasons_test19)] 
PASSED [ 87%]
tests/test_validate.py::test_nist_pkits[41420 (invalid_onlysomereasons_test20)] 
PASSED [ 88%]
tests/test_validate.py::test_nist_pkits[41421 (invalid_onlysomereasons_test21)] 
PASSED [ 88%]
tests/test_validate.py::test_nist_pkits[41422 
(valid_idp_with_indirectcrl_test22)] PASSED [ 88%]
tests/test_validate.py::test_nist_pkits[41423 
(invalid_idp_with_indirectcrl_test23)] PASSED [ 89%]
tests/test_validate.py::test_nist_pkits[41424 
(valid_idp_with_indirectcrl_test24)] PASSED [ 89%]
tests/test_validate.py::test_nist_pkits[41425 
(valid_idp_with_indirectcrl_test25)] PASSED [ 89%]
tests/test_validate.py::test_nist_pkits[41426 
(invalid_idp_with_indirectcrl_test26)] PASSED [ 89%]
tests/test_validate.py::test_nist_pkits[41427 (invalid_crlissuer_test27)] 
PASSED [ 90%]
tests/test_validate.py::test_nist_pkits[41428 (valid_crlissuer_test28)] PASSED 
[ 90%]
tests/test_validate.py::test_nist_pkits[41429 (valid_crlissuer_test29)] PASSED 
[ 90%]
tests/test_validate.py::test_nist_pkits[41430 (valid_crlissuer_test30)] PASSED 
[ 91%]
tests/test_validate.py::test_nist_pkits[41431 (invalid_crlissuer_test31)] 
PASSED [ 91%]
tests/test_validate.py::test_nist_pkits[41432 (invalid_crlissuer_test32)] 
PASSED [ 91%]
tests/test_validate.py::test_nist_pkits[41433 (valid_crlissuer_test33)] PASSED 
[ 91%]
tests/test_validate.py::test_nist_pkits[41434 (invalid_crlissuer_test34)] 
PASSED [ 92%]
tests/test_validate.py::test_nist_pkits[41435 (invalid_crlissuer_test35)] 
PASSED [ 92%]
tests/test_validate.py::test_nist_pkits[41501 
(invalid_deltacrlindicator_no_base_set_test1)] PASSED [ 92%]
tests/test_validate.py::test_nist_pkits[41502 (valid_deltacrl_test2)] PASSED [ 
93%]
tests/test_validate.py::test_nist_pkits[41503 (invalid_deltacrl_test3)] PASSED 
[ 93%]
tests/test_validate.py::test_nist_pkits[41504 (invalid_deltacrl_test4)] PASSED 
[ 93%]
tests/test_validate.py::test_nist_pkits[41505 (valid_deltacrl_test5)] PASSED [ 
93%]
tests/test_validate.py::test_nist_pkits[41506 (invalid_deltacrl_test6)] PASSED 
[ 94%]
tests/test_validate.py::test_nist_pkits[41507 (valid_deltacrl_test7)] PASSED [ 
94%]
tests/test_validate.py::test_nist_pkits[41508 (valid_deltacrl_test8)] PASSED [ 
94%]
tests/test_validate.py::test_nist_pkits[41509 (invalid_deltacrl_test9)] PASSED 
[ 94%]
tests/test_validate.py::test_nist_pkits[41510 (invalid_deltacrl_test10)] PASSED 
[ 95%]
tests/test_validate.py::test_nist_pkits[41601 
(valid_unknown_not_critical_certificate_extension_test1)] PASSED [ 95%]
tests/test_validate.py::test_nist_pkits[41602 
(invalid_unknown_critical_certificate_extension_test2)] PASSED [ 95%]
tests/test_validate.py::test_nist_pkits_user_notice[40815 
(user_notice_qualifier_test15)] PASSED [ 96%]
tests/test_validate.py::test_nist_pkits_user_notice[40816 
(user_notice_qualifier_test16)] PASSED [ 96%]
tests/test_validate.py::test_nist_pkits_user_notice[40817 
(user_notice_qualifier_test17)] PASSED [ 96%]
tests/test_validate.py::test_nist_pkits_user_notice[40818 
(user_notice_qualifier_test18_q4)] PASSED [ 96%]
tests/test_validate.py::test_nist_pkits_user_notice[40818 
(user_notice_qualifier_test18_q5)] PASSED [ 97%]
tests/test_validate.py::test_nist_pkits_user_notice[40818 
(user_notice_qualifier_test19)] PASSED [ 97%]
tests/test_validate.py::test_nist_pkits_user_notice[41012 
(valid_policy_mapping_test12_with_testpol1)] PASSED [ 97%]
tests/test_validate.py::test_nist_pkits_user_notice[41012 
(valid_policy_mapping_test12_with_testpol2)] PASSED [ 98%]
tests/test_validate.py::test_408020_cps_pointer_qualifier_test20 PASSED  [ 98%]
tests/test_validate.py::test_building_trust_path_with_pkcs7_in_different_orders[cert_order0]
 
-------------------------------- live log call ---------------------------------
2030-08-09 12:00:36 INFO Retrieving issuer certs for Common Name: FREDERICO 
SCHARDONG:00489369014; Organizational Unit: RFB e-CPF A3, ARSERPRO, Secretaria 
da Receita Federal do Brasil - RFB, 33683111000107, videoconferencia; 
Organization: ICP-Brasil; Country: BR...
PASSED                                                                   [ 98%]
tests/test_validate.py::test_building_trust_path_with_pkcs7_in_different_orders[cert_order1]
 
-------------------------------- live log call ---------------------------------
2030-08-09 12:00:36 INFO Retrieving issuer certs for Common Name: FREDERICO 
SCHARDONG:00489369014; Organizational Unit: RFB e-CPF A3, ARSERPRO, Secretaria 
da Receita Federal do Brasil - RFB, 33683111000107, videoconferencia; 
Organization: ICP-Brasil; Country: BR...
PASSED                                                                   [ 98%]
tests/test_validate.py::test_building_trust_path_with_pkcs7_in_different_orders[cert_order2]
 
-------------------------------- live log call ---------------------------------
2030-08-09 12:00:36 INFO Retrieving issuer certs for Common Name: FREDERICO 
SCHARDONG:00489369014; Organizational Unit: RFB e-CPF A3, ARSERPRO, Secretaria 
da Receita Federal do Brasil - RFB, 33683111000107, videoconferencia; 
Organization: ICP-Brasil; Country: BR...
PASSED                                                                   [ 99%]
tests/test_validate.py::test_building_trust_path_with_pkcs7_in_different_orders[cert_order3]
 
-------------------------------- live log call ---------------------------------
2030-08-09 12:00:36 INFO Retrieving issuer certs for Common Name: FREDERICO 
SCHARDONG:00489369014; Organizational Unit: RFB e-CPF A3, ARSERPRO, Secretaria 
da Receita Federal do Brasil - RFB, 33683111000107, videoconferencia; 
Organization: ICP-Brasil; Country: BR...
PASSED                                                                   [ 99%]
tests/test_validate.py::test_building_trust_path_with_pkcs7_in_different_orders[cert_order4]
 
-------------------------------- live log call ---------------------------------
2030-08-09 12:00:36 INFO Retrieving issuer certs for Common Name: FREDERICO 
SCHARDONG:00489369014; Organizational Unit: RFB e-CPF A3, ARSERPRO, Secretaria 
da Receita Federal do Brasil - RFB, 33683111000107, videoconferencia; 
Organization: ICP-Brasil; Country: BR...
PASSED                                                                   [ 99%]
tests/test_validate.py::test_building_trust_path_with_pkcs7_in_different_orders[cert_order5]
 
-------------------------------- live log call ---------------------------------
2030-08-09 12:00:36 INFO Retrieving issuer certs for Common Name: FREDERICO 
SCHARDONG:00489369014; Organizational Unit: RFB e-CPF A3, ARSERPRO, Secretaria 
da Receita Federal do Brasil - RFB, 33683111000107, videoconferencia; 
Organization: ICP-Brasil; Country: BR...
PASSED                                                                   [100%]

=================================== FAILURES ===================================
__________________ test_basic_ac_validation_aacontrols_norev ___________________

    @pytest.mark.asyncio
    async def test_basic_ac_validation_aacontrols_norev():
        ac = load_attr_cert(
            os.path.join(basic_aa_dir, 'aa', 'alice-role-norev.attr.crt')
        )
    
        root = load_cert(os.path.join(basic_aa_dir, 'root', 'root.crt'))
        interm = load_cert(os.path.join(basic_aa_dir, 'root', 
'interm-role.crt'))
        role_aa = load_cert(os.path.join(basic_aa_dir, 'interm', 'role-aa.crt'))
    
        vc = ValidationContext(
            trust_roots=[root],
            other_certs=[interm, role_aa],
        )
    
>       result = await validate.async_validate_ac(ac, vc)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/test_ac_validate.py:60: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pyhanko_certvalidator/validate.py:721: in async_validate_ac
    _check_validity(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

validity = <asn1crypto.x509.Validity 140599064714832 
b'0"\x18\x0f20100101000000Z\x18\x0f20300101000000Z'>
moment = datetime.datetime(2030, 8, 9, 12, 0, 34, 261911, 
tzinfo=datetime.timezone.utc)
tolerance = datetime.timedelta(seconds=1)
proc_state = <pyhanko_certvalidator._state.ValProcState object at 
0x7fdfc54edbd0>

    def _check_validity(
        validity: Validity, moment, tolerance, proc_state: ValProcState
    ):
        if moment < validity['not_before'].native - tolerance:
            raise NotYetValidError.format(
                valid_from=validity['not_before'].native, proc_state=proc_state
            )
        if moment > validity['not_after'].native + tolerance:
>           raise ExpiredError.format(
                expired_dt=validity['not_after'].native, proc_state=proc_state
            )
E           pyhanko_certvalidator.errors.ExpiredError: The path could not be 
validated because intermediate certificate 0 expired 2030-01-01 00:00:00Z

pyhanko_certvalidator/validate.py:1215: ExpiredError
_________________ test_basic_ac_validation_good_targeting_name _________________

    @pytest.mark.asyncio
    async def test_basic_ac_validation_good_targeting_name():
        root, interm, aa, ac = _load_targeted_ac()
    
        vc = ValidationContext(
            trust_roots=[root],
            other_certs=[interm, aa],
            acceptable_ac_targets=ACTargetDescription(
                validator_names=[
                    x509.GeneralName(
                        name='directory_name',
                        value=x509.Name.build(
                            {
                                'country_name': 'XX',
                                'organization_name': 'Testing Attribute 
Authority',
                                'organizational_unit_name': 'Validators',
                                'common_name': 'Validator',
                            }
                        ),
                    )
                ]
            ),
        )
    
>       result = await validate.async_validate_ac(ac, vc)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/test_ac_validate.py:286: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pyhanko_certvalidator/validate.py:721: in async_validate_ac
    _check_validity(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

validity = <asn1crypto.x509.Validity 140599069102640 
b'0"\x18\x0f20100101000000Z\x18\x0f20300101000000Z'>
moment = datetime.datetime(2030, 8, 9, 12, 0, 34, 324929, 
tzinfo=datetime.timezone.utc)
tolerance = datetime.timedelta(seconds=1)
proc_state = <pyhanko_certvalidator._state.ValProcState object at 
0x7fdfc57bbd50>

    def _check_validity(
        validity: Validity, moment, tolerance, proc_state: ValProcState
    ):
        if moment < validity['not_before'].native - tolerance:
            raise NotYetValidError.format(
                valid_from=validity['not_before'].native, proc_state=proc_state
            )
        if moment > validity['not_after'].native + tolerance:
>           raise ExpiredError.format(
                expired_dt=validity['not_after'].native, proc_state=proc_state
            )
E           pyhanko_certvalidator.errors.ExpiredError: The path could not be 
validated because intermediate certificate 0 expired 2030-01-01 00:00:00Z

pyhanko_certvalidator/validate.py:1215: ExpiredError
________________ test_basic_ac_validation_good_targeting_group _________________

    @pytest.mark.asyncio
    async def test_basic_ac_validation_good_targeting_group():
        root, interm, aa, ac = _load_targeted_ac()
    
        vc = ValidationContext(
            trust_roots=[root],
            other_certs=[interm, aa],
            acceptable_ac_targets=ACTargetDescription(
                group_memberships=[
                    x509.GeneralName(
                        name='directory_name',
                        value=x509.Name.build(
                            {
                                'country_name': 'XX',
                                'organization_name': 'Testing Attribute 
Authority',
                                'organizational_unit_name': 'Validators',
                            }
                        ),
                    )
                ]
            ),
        )
    
>       result = await validate.async_validate_ac(ac, vc)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/test_ac_validate.py:315: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pyhanko_certvalidator/validate.py:721: in async_validate_ac
    _check_validity(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

validity = <asn1crypto.x509.Validity 140599067718272 
b'0"\x18\x0f20100101000000Z\x18\x0f20300101000000Z'>
moment = datetime.datetime(2030, 8, 9, 12, 0, 34, 342966, 
tzinfo=datetime.timezone.utc)
tolerance = datetime.timedelta(seconds=1)
proc_state = <pyhanko_certvalidator._state.ValProcState object at 
0x7fdfc54fd4f0>

    def _check_validity(
        validity: Validity, moment, tolerance, proc_state: ValProcState
    ):
        if moment < validity['not_before'].native - tolerance:
            raise NotYetValidError.format(
                valid_from=validity['not_before'].native, proc_state=proc_state
            )
        if moment > validity['not_after'].native + tolerance:
>           raise ExpiredError.format(
                expired_dt=validity['not_after'].native, proc_state=proc_state
            )
E           pyhanko_certvalidator.errors.ExpiredError: The path could not be 
validated because intermediate certificate 0 expired 2030-01-01 00:00:00Z

pyhanko_certvalidator/validate.py:1215: ExpiredError
_____________________________ test_match_holder_ac _____________________________

    @pytest.mark.asyncio
    async def test_match_holder_ac():
        ac = load_attr_cert(
            os.path.join(basic_aa_dir, 'aa', 'alice-role-norev.attr.crt')
        )
    
        root = load_cert(os.path.join(basic_aa_dir, 'root', 'root.crt'))
        interm = load_cert(os.path.join(basic_aa_dir, 'root', 
'interm-role.crt'))
        role_aa = load_cert(os.path.join(basic_aa_dir, 'interm', 'role-aa.crt'))
    
        alice = load_cert(os.path.join(basic_aa_dir, 'people-ca', 'alice.crt'))
    
        vc = ValidationContext(
            trust_roots=[root],
            other_certs=[interm, role_aa],
        )
    
>       await validate.async_validate_ac(ac, vc, holder_cert=alice)

tests/test_ac_validate.py:338: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pyhanko_certvalidator/validate.py:721: in async_validate_ac
    _check_validity(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

validity = <asn1crypto.x509.Validity 140599065110608 
b'0"\x18\x0f20100101000000Z\x18\x0f20300101000000Z'>
moment = datetime.datetime(2030, 8, 9, 12, 0, 34, 360304, 
tzinfo=datetime.timezone.utc)
tolerance = datetime.timedelta(seconds=1)
proc_state = <pyhanko_certvalidator._state.ValProcState object at 
0x7fdfc54dec10>

    def _check_validity(
        validity: Validity, moment, tolerance, proc_state: ValProcState
    ):
        if moment < validity['not_before'].native - tolerance:
            raise NotYetValidError.format(
                valid_from=validity['not_before'].native, proc_state=proc_state
            )
        if moment > validity['not_after'].native + tolerance:
>           raise ExpiredError.format(
                expired_dt=validity['not_after'].native, proc_state=proc_state
            )
E           pyhanko_certvalidator.errors.ExpiredError: The path could not be 
validated because intermediate certificate 0 expired 2030-01-01 00:00:00Z

pyhanko_certvalidator/validate.py:1215: ExpiredError
=========================== short test summary info ============================
FAILED tests/test_ac_validate.py::test_basic_ac_validation_aacontrols_norev
FAILED tests/test_ac_validate.py::test_basic_ac_validation_good_targeting_name
FAILED tests/test_ac_validate.py::test_basic_ac_validation_good_targeting_group
FAILED tests/test_ac_validate.py::test_match_holder_ac - pyhanko_certvalidato...
=========== 4 failed, 350 passed, 4 skipped, 10 deselected in 2.26s ============
E: pybuild pybuild:483: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pyhanko-certvalidator/build; python3.13 
-m pytest -k 'not test_basic_certificate_validator_tls_aia and not 
test_fetch_requests and not test_fetch_ocsp_requests and not 
test_fetch_crl_aiohttp and not test_fetch_ocsp_aiohttp'
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 
3.13" returned exit code 13
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit 
status 2
--------------------------------------------------------------------------------

Reply via email to