mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 12:07:31 +00:00 
			
		
		
		
	 9a05977348
			
		
	
	
		9a05977348
		
	
	
	
	
		
			
			Adds afalg-backend hash support: introduces some private APIs firstly, and then intergrates them into qcrypto_hash_afalg_driver. Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * QEMU Crypto af_alg support
 | |
|  *
 | |
|  * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD.
 | |
|  *
 | |
|  * Authors:
 | |
|  *    Longpeng(Mike) <longpeng2@huawei.com>
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU GPL, version 2 or
 | |
|  * (at your option) any later version.  See the COPYING file in the
 | |
|  * top-level directory.
 | |
|  */
 | |
| 
 | |
| #ifndef QCRYPTO_AFALGPRIV_H
 | |
| #define QCRYPTO_AFALGPRIV_H
 | |
| 
 | |
| #include <linux/if_alg.h>
 | |
| 
 | |
| #define SALG_TYPE_LEN_MAX 14
 | |
| #define SALG_NAME_LEN_MAX 64
 | |
| 
 | |
| #ifndef SOL_ALG
 | |
| #define SOL_ALG 279
 | |
| #endif
 | |
| 
 | |
| #define AFALG_TYPE_CIPHER "skcipher"
 | |
| #define AFALG_TYPE_HASH "hash"
 | |
| 
 | |
| #define ALG_OPTYPE_LEN 4
 | |
| #define ALG_MSGIV_LEN(len) (sizeof(struct af_alg_iv) + (len))
 | |
| 
 | |
| typedef struct QCryptoAFAlg QCryptoAFAlg;
 | |
| 
 | |
| struct QCryptoAFAlg {
 | |
|     int tfmfd;
 | |
|     int opfd;
 | |
|     struct msghdr *msg;
 | |
|     struct cmsghdr *cmsg;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * qcrypto_afalg_comm_alloc:
 | |
|  * @type: the type of crypto operation
 | |
|  * @name: the name of crypto operation
 | |
|  *
 | |
|  * Allocate a QCryptoAFAlg object and bind itself to
 | |
|  * a AF_ALG socket.
 | |
|  *
 | |
|  * Returns:
 | |
|  *  a new QCryptoAFAlg object, or NULL in error.
 | |
|  */
 | |
| QCryptoAFAlg *
 | |
| qcrypto_afalg_comm_alloc(const char *type, const char *name,
 | |
|                          Error **errp);
 | |
| 
 | |
| /**
 | |
|  * afalg_comm_free:
 | |
|  * @afalg: the QCryptoAFAlg object
 | |
|  *
 | |
|  * Free the @afalg.
 | |
|  */
 | |
| void qcrypto_afalg_comm_free(QCryptoAFAlg *afalg);
 | |
| 
 | |
| #endif
 |