Пример #1
0
def test_srk_table_cert_hashing(data_dir, srk_pem):
    """Recreate SRK_1_2_H3_H4 table from certificates"""
    srk_table = SrkTable(version=0x40)
    srk_table.append(
        SrkItem.from_certificate(
            x509.load_pem_x509_certificate(srk_pem[0], default_backend())))
    srk_table.append(
        SrkItem.from_certificate(
            x509.load_pem_x509_certificate(srk_pem[1], default_backend())))
    srk_table.append(
        SrkItem.from_certificate(
            x509.load_pem_x509_certificate(srk_pem[2],
                                           default_backend())).hashed_entry())
    srk_table.append(
        SrkItem.from_certificate(
            x509.load_pem_x509_certificate(srk_pem[3],
                                           default_backend())).hashed_entry())
    assert srk_table.export()
    assert len(srk_table.export_fuses()) == 32
    assert srk_table.info()  # test export returns any result

    with open(os.path.join(data_dir, 'SRK_1_2_H3_H4_table.bin'), 'rb') as f:
        preimaged_srk_table_data = f.read()
    assert srk_table.export() == preimaged_srk_table_data
    assert srk_table == SrkTable.parse(preimaged_srk_table_data)

    with open(os.path.join(data_dir, 'SRK_1_2_3_4_fuse.bin'), 'rb') as f:
        srk_fuses = f.read()
    assert srk_table.export_fuses() == srk_fuses
Пример #2
0
def test_srk_table_single_cert(srk_pem):
    """Smoke test that SrkTable with single certificate works"""
    srk_table = SrkTable(version=0x40)
    cert = x509.load_pem_x509_certificate(srk_pem[0], default_backend())
    srk_table.append(SrkItem.from_certificate(cert))

    # test export() returns any result
    assert srk_table.export()
    # test export_fuses() returns valid length
    assert len(srk_table.export_fuses()) == 32
    # test get_fuse() returns valid value
    for fuse_index in range(8):
        assert srk_table.get_fuse(fuse_index) >= 0
    with pytest.raises(AssertionError):
        srk_table.get_fuse(8)
    # test info() returns non-empty text
    assert srk_table.info()  # test export returns any result