def test_meta_assign_read_ac(): obj = objects.AppData(0xf1d0) old_meta = {'read': obj.meta['read']} obj.meta = {'read': 'never'} with pytest.raises(IOError): print(obj.read()) obj.meta = old_meta
def test_meta_assign_change_ac(): obj = objects.AppData(0xf1d0) old_meta = {'change': obj.meta['change']} obj.meta = {'change': 'never'} with pytest.raises(IOError): print(obj.write(b'\x00\x00\x00')) obj.meta = old_meta
def test_meta_assign_complex_ac(ki): obj = objects.AppData(0xf1d0) for key, value in ki.items(): if key not in obj.meta: old_meta = {key: 'always'} else: old_meta = {key: obj.meta[key]} obj.meta = {key: value} assert {key: value} == {key: obj.meta[key]} obj.meta = old_meta
def test_tls_prf_secret_from_appdata_minimum(hash_alg): app_data = objects.AppData(0xf1d0) app_data.write(bytes().fromhex(secret)) old_type = app_data.meta['type'] old_execute_ac = app_data.meta['execute'] app_data.meta = {'type': 'pre_sh_secret', 'execute': 'always'} optiga_ec.tls_prf(app_data, 32, seed=bytes().fromhex(seed), hash_algorithm=hash_alg) app_data.meta = {'type': old_type, 'execute': old_execute_ac}
def test_hkdf_secret_from_appdata(hash_alg): app_data = objects.AppData(0xf1d0) app_data.write(bytes().fromhex(secret)) old_type = app_data.meta['type'] old_execute_ac = app_data.meta['execute'] app_data.meta = {'type': 'pre_sh_secret', 'execute': 'always'} derived_key = optiga_ec.hkdf(app_data, 32, hash_algorithm=hash_alg, export=True) app_data.meta = {'type': old_type, 'execute': old_execute_ac}
def test_meta_set_object_type(obj_type): obj = objects.AppData(0xf1d0) old_meta = None if 'type' in obj.meta: old_meta = {'type': obj.meta['type']} obj.meta = {'type': obj_type} assert obj.meta['type'] == obj_type if old_meta is not None: obj.meta = old_meta
def test_meta_assign_used_size(): obj = objects.AppData(0xf1d0) with pytest.raises(OSError): obj.meta = {'used_size': 100}
def test_meta_check_used_size(): obj = objects.AppData(0xf1d0) assert isinstance(obj.meta['used_size'], int) assert isinstance(obj.used_size, int)
def test_meta_check_max_size(): obj = objects.AppData(0xf1d0) assert 140 == obj.meta['max_size'] assert 140 == obj.max_size
def test_meta_assign_wrong_tag_value(): obj = objects.AppData(0xf1d0) with pytest.raises(ValueError): obj.meta = {'change': 'nie'}
def test_meta_assign_wrong_tag(): obj = objects.AppData(0xf1d0) with pytest.raises(ValueError): obj.meta = {'write': 'never'}
def test_meta_read_appdata(): obj = objects.AppData(0xf1d0) print(obj.meta)