# -*- Mode: Python -*-
# vim: filetype=python
#
# This work is licensed under the terms of the GNU GPL, version 2 or later.
# See the COPYING file in the top-level directory.

##
# = Cryptography devices
##

##
# @QCryptodevBackendAlgType:
#
# The supported algorithm types of a crypto device.
#
# @sym: symmetric encryption
#
# @asym: asymmetric Encryption
#
# Since: 8.0
##
{ 'enum': 'QCryptodevBackendAlgType',
  'prefix': 'QCRYPTODEV_BACKEND_ALG',
  'data': ['sym', 'asym']}

##
# @QCryptodevBackendServiceType:
#
# The supported service types of a crypto device.
#
# Since: 8.0
##
{ 'enum': 'QCryptodevBackendServiceType',
  'prefix': 'QCRYPTODEV_BACKEND_SERVICE',
  'data': ['cipher', 'hash', 'mac', 'aead', 'akcipher']}

##
# @QCryptodevBackendType:
#
# The crypto device backend type
#
# @builtin: the QEMU builtin support
#
# @vhost-user: vhost-user
#
# @lkcf: Linux kernel cryptographic framework
#
# Since: 8.0
##
{ 'enum': 'QCryptodevBackendType',
  'prefix': 'QCRYPTODEV_BACKEND_TYPE',
  'data': ['builtin', 'vhost-user', 'lkcf']}

##
# @QCryptodevBackendClient:
#
# Information about a queue of crypto device.
#
# @queue: the queue index of the crypto device
#
# @type: the type of the crypto device
#
# Since: 8.0
##
{ 'struct': 'QCryptodevBackendClient',
  'data': { 'queue': 'uint32',
            'type': 'QCryptodevBackendType' } }

##
# @QCryptodevInfo:
#
# Information about a crypto device.
#
# @id: the id of the crypto device
#
# @service: supported service types of a crypto device
#
# @client: the additional information of the crypto device
#
# Since: 8.0
##
{ 'struct': 'QCryptodevInfo',
  'data': { 'id': 'str',
            'service': ['QCryptodevBackendServiceType'],
            'client': ['QCryptodevBackendClient'] } }

##
# @query-cryptodev:
#
# Returns information about current crypto devices.
#
# Returns: a list of @QCryptodevInfo
#
# Since: 8.0
##
{ 'command': 'query-cryptodev', 'returns': ['QCryptodevInfo']}