mirror of
https://github.com/genesi/linux-legacy.git
synced 2026-02-04 08:04:49 +00:00
Linux driver for /dev/crypto (aka CryptoDev) See http://www.logix.cz/michal/devel/cryptodev for details. Signed-off-by: Michal Ludvig <mludvig@suse.cz> Signed-off-by: Rob Herring <r.herring@freescale.com>
83 lines
2.1 KiB
C
83 lines
2.1 KiB
C
/*
|
|
* Driver for /dev/crypto device (aka CryptoDev)
|
|
*
|
|
* Copyright (c) 2004 Michal Ludvig <mludvig@suse.cz>, SuSE Labs
|
|
*
|
|
* Structures and ioctl command names were taken from
|
|
* OpenBSD to preserve compatibility with their API.
|
|
*
|
|
*/
|
|
|
|
#ifndef _CRYPTODEV_H
|
|
#define _CRYPTODEV_H
|
|
|
|
#ifndef __KERNEL__
|
|
#include <inttypes.h>
|
|
#endif
|
|
|
|
#define CRYPTODEV_MINOR MISC_DYNAMIC_MINOR
|
|
|
|
#define CRYPTO_FLAG_ECB 0x0000
|
|
#define CRYPTO_FLAG_CBC 0x0001
|
|
#define CRYPTO_FLAG_CFB 0x0002
|
|
#define CRYPTO_FLAG_OFB 0x0003
|
|
#define CRYPTO_FLAG_CTR 0x0004
|
|
#define CRYPTO_FLAG_HMAC 0x0010
|
|
#define CRYPTO_FLAG_MASK 0x00FF
|
|
|
|
#define CRYPTO_CIPHER_NAME 0x0100
|
|
#define CRYPTO_CIPHER_NAME_CBC (CRYPTO_CIPHER_NAME | CRYPTO_FLAG_CBC)
|
|
#define CRYPTO_HASH_NAME 0x0200
|
|
#define CRYPTO_HASH_NAME_HMAC (CRYPTO_HASH_NAME | CRYPTO_FLAG_HMAC)
|
|
|
|
/* ioctl parameter to create a session */
|
|
struct session_op {
|
|
unsigned int cipher; /* e.g. CRYPTO_DES_CBC */
|
|
unsigned int mac; /* e.g. CRYPTO_MD5_HMAC */
|
|
char *alg_name; /* set cipher=CRYPTO_CIPHER_NAME
|
|
or mac=CRYPTO_HASH_NAME */
|
|
#define MAX_ALG_NAME_LEN 128
|
|
size_t alg_namelen;
|
|
|
|
size_t keylen; /* cipher key */
|
|
char *key;
|
|
int mackeylen; /* mac key */
|
|
char *mackey;
|
|
|
|
/* Return values */
|
|
unsigned int blocksize; /* selected algorithm's block size */
|
|
uint32_t ses; /* session ID */
|
|
};
|
|
|
|
/* ioctl parameter to request a crypt/decrypt operation against a session */
|
|
struct crypt_op {
|
|
uint32_t ses; /* from session_op->ses */
|
|
#define COP_DECRYPT 0
|
|
#define COP_ENCRYPT 1
|
|
uint32_t op; /* ie. COP_ENCRYPT */
|
|
uint32_t flags; /* unused */
|
|
|
|
size_t len;
|
|
char *src, *dst;
|
|
char *mac;
|
|
char *iv;
|
|
};
|
|
|
|
/* clone original filedescriptor */
|
|
#define CRIOGET _IOWR('c', 100, uint32_t)
|
|
|
|
/* create crypto session */
|
|
#define CIOCGSESSION _IOWR('c', 101, struct session_op)
|
|
|
|
/* finish crypto session */
|
|
#define CIOCFSESSION _IOW('c', 102, uint32_t)
|
|
|
|
/* request encryption/decryptions of a given buffer */
|
|
#define CIOCCRYPT _IOWR('c', 103, struct crypt_op)
|
|
|
|
/* ioctl()s for asym-crypto. Not yet supported. */
|
|
#define CIOCKEY _IOWR('c', 104, void *)
|
|
#define CIOCASYMFEAT _IOR('c', 105, uint32_t)
|
|
|
|
#endif /* _CRYPTODEV_H */
|