def test_keyset_info(self): keyset = tink_pb2.Keyset(primary_key_id=2) keyset.key.extend([ helper.fake_key(value=b'v1', type_url='t1', key_id=1, status=tink_pb2.ENABLED, output_prefix_type=tink_pb2.TINK), helper.fake_key(value=b'v2', type_url='t2', key_id=2, status=tink_pb2.DESTROYED, output_prefix_type=tink_pb2.RAW) ]) handle = core.KeysetHandle(keyset) expected_keyset_info = tink_pb2.KeysetInfo(primary_key_id=2) info1 = expected_keyset_info.key_info.add() info1.type_url = 't1' info1.status = tink_pb2.ENABLED info1.output_prefix_type = tink_pb2.TINK info1.key_id = 1 info2 = expected_keyset_info.key_info.add() info2.type_url = 't2' info2.status = tink_pb2.DESTROYED info2.output_prefix_type = tink_pb2.RAW info2.key_id = 2 self.assertEqual(expected_keyset_info, handle.keyset_info())
def test_primitive_fails_on_empty_keyset(self): keyset = tink_pb2.Keyset() keyset.key.extend( [helper.fake_key(key_id=1, status=tink_pb2.DESTROYED)]) keyset.primary_key_id = 1 handle = core.KeysetHandle(keyset) with self.assertRaisesRegex(core.TinkError, 'empty keyset'): handle.primitive(aead.Aead)
def test_primitive_fails_on_key_with_unknown_status(self): keyset = tink_pb2.Keyset() keyset.key.extend( [helper.fake_key(key_id=1234, status=tink_pb2.UNKNOWN_STATUS)]) keyset.primary_key_id = 1234 handle = core.KeysetHandle(keyset) with self.assertRaisesRegex(core.TinkError, 'key 1234 has unknown status'): handle.primitive(aead.Aead)
def test_primitive_fails_on_key_without_keydata(self): keyset = tink_pb2.Keyset() key = helper.fake_key(key_id=123) key.ClearField('key_data') keyset.key.extend([key]) keyset.primary_key_id = 123 handle = core.KeysetHandle(keyset) with self.assertRaisesRegex(core.TinkError, 'key 123 has no key data'): handle.primitive(aead.Aead)
def test_primitive_fails_on_multiple_primary_keys(self): keyset = tink_pb2.Keyset() keyset.key.extend( [helper.fake_key(key_id=12345), helper.fake_key(key_id=12345)]) keyset.primary_key_id = 12345 handle = core.KeysetHandle(keyset) with self.assertRaisesRegex(core.TinkError, 'keyset contains multiple primary keys'): handle.primitive(aead.Aead)
def test_primitive_fails_on_key_with_unknown_prefix(self): keyset = tink_pb2.Keyset() keyset.key.extend([ helper.fake_key(key_id=12, output_prefix_type=tink_pb2.UNKNOWN_PREFIX) ]) keyset.primary_key_id = 12 handle = core.KeysetHandle(keyset) with self.assertRaisesRegex(core.TinkError, 'key 12 has unknown prefix'): handle.primitive(aead.Aead)
def test_primitive_fails_on_wrong_primitive_class(self): keyset = tink_pb2.Keyset() key = keyset.key.add() key.key_data.CopyFrom( core.Registry.new_key_data(aead.aead_key_templates.AES128_EAX)) key.output_prefix_type = tink_pb2.TINK key.key_id = 1 key.status = tink_pb2.ENABLED keyset.primary_key_id = 1 handle = core.KeysetHandle(keyset) with self.assertRaisesRegex(core.TinkError, 'Wrong primitive class'): handle.primitive(mac.Mac)
def test_primitive_fails_without_primary_key_present(self): keyset = tink_pb2.Keyset() key = keyset.key.add() key.key_data.CopyFrom( core.Registry.new_key_data(aead.aead_key_templates.AES128_EAX)) key.output_prefix_type = tink_pb2.TINK key.key_id = 2 key.status = tink_pb2.ENABLED keyset.primary_key_id = 1 handle = core.KeysetHandle(keyset) with self.assertRaisesRegex( core.TinkError, 'keyset does not contain a valid primary key'): handle.primitive(aead.Aead)
def test_primitive_success(self): keyset = tink_pb2.Keyset() key = keyset.key.add() key.key_data.CopyFrom( core.Registry.new_key_data(aead.aead_key_templates.AES128_EAX)) key.output_prefix_type = tink_pb2.TINK key.key_id = 1 key.status = tink_pb2.ENABLED keyset.primary_key_id = 1 handle = core.KeysetHandle(keyset) aead_primitive = handle.primitive(aead.Aead) self.assertEqual( aead_primitive.decrypt(aead_primitive.encrypt(b'message', b'aad'), b'aad'), b'message')
def test_instantiation(self): with self.assertRaisesRegex(core.TinkError, 'cannot be instantiated'): core.KeysetHandle()