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
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