Changeset View
Changeset View
Standalone View
Standalone View
head/sys/opencrypto/cryptodev.h
Show First 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | |||||
#define AES_128_CBC_MAC_KEY_LEN 16 | #define AES_128_CBC_MAC_KEY_LEN 16 | ||||
#define AES_192_CBC_MAC_KEY_LEN 24 | #define AES_192_CBC_MAC_KEY_LEN 24 | ||||
#define AES_256_CBC_MAC_KEY_LEN 32 | #define AES_256_CBC_MAC_KEY_LEN 32 | ||||
#define POLY1305_KEY_LEN 32 | #define POLY1305_KEY_LEN 32 | ||||
/* Encryption algorithm block sizes */ | /* Encryption algorithm block sizes */ | ||||
#define NULL_BLOCK_LEN 4 /* IPsec to maintain alignment */ | #define NULL_BLOCK_LEN 4 /* IPsec to maintain alignment */ | ||||
#define DES_BLOCK_LEN 8 | |||||
#define DES3_BLOCK_LEN 8 | |||||
#define RIJNDAEL128_BLOCK_LEN 16 | #define RIJNDAEL128_BLOCK_LEN 16 | ||||
#define AES_BLOCK_LEN 16 | #define AES_BLOCK_LEN 16 | ||||
#define AES_ICM_BLOCK_LEN 1 | #define AES_ICM_BLOCK_LEN 1 | ||||
#define CAMELLIA_BLOCK_LEN 16 | #define CAMELLIA_BLOCK_LEN 16 | ||||
#define CHACHA20_NATIVE_BLOCK_LEN 64 | #define CHACHA20_NATIVE_BLOCK_LEN 64 | ||||
#define EALG_MAX_BLOCK_LEN CHACHA20_NATIVE_BLOCK_LEN /* Keep this updated */ | #define EALG_MAX_BLOCK_LEN CHACHA20_NATIVE_BLOCK_LEN /* Keep this updated */ | ||||
/* IV Lengths */ | /* IV Lengths */ | ||||
#define AES_GCM_IV_LEN 12 | #define AES_GCM_IV_LEN 12 | ||||
#define AES_CCM_IV_LEN 12 | #define AES_CCM_IV_LEN 12 | ||||
#define AES_XTS_IV_LEN 8 | #define AES_XTS_IV_LEN 8 | ||||
#define AES_XTS_ALPHA 0x87 /* GF(2^128) generator polynomial */ | #define AES_XTS_ALPHA 0x87 /* GF(2^128) generator polynomial */ | ||||
/* Min and Max Encryption Key Sizes */ | /* Min and Max Encryption Key Sizes */ | ||||
#define NULL_MIN_KEY 0 | #define NULL_MIN_KEY 0 | ||||
#define NULL_MAX_KEY 256 /* 2048 bits, max key */ | #define NULL_MAX_KEY 256 /* 2048 bits, max key */ | ||||
#define DES_MIN_KEY 8 | |||||
#define DES_MAX_KEY DES_MIN_KEY | |||||
#define TRIPLE_DES_MIN_KEY 24 | |||||
#define TRIPLE_DES_MAX_KEY TRIPLE_DES_MIN_KEY | |||||
#define RIJNDAEL_MIN_KEY 16 | #define RIJNDAEL_MIN_KEY 16 | ||||
#define RIJNDAEL_MAX_KEY 32 | #define RIJNDAEL_MAX_KEY 32 | ||||
#define AES_MIN_KEY RIJNDAEL_MIN_KEY | #define AES_MIN_KEY RIJNDAEL_MIN_KEY | ||||
#define AES_MAX_KEY RIJNDAEL_MAX_KEY | #define AES_MAX_KEY RIJNDAEL_MAX_KEY | ||||
#define AES_XTS_MIN_KEY (2 * AES_MIN_KEY) | #define AES_XTS_MIN_KEY (2 * AES_MIN_KEY) | ||||
#define AES_XTS_MAX_KEY (2 * AES_MAX_KEY) | #define AES_XTS_MAX_KEY (2 * AES_MAX_KEY) | ||||
#define CAMELLIA_MIN_KEY 8 | #define CAMELLIA_MIN_KEY 8 | ||||
#define CAMELLIA_MAX_KEY 32 | #define CAMELLIA_MAX_KEY 32 | ||||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | |||||
* the driver id of an existing (and suitable) device that | * the driver id of an existing (and suitable) device that | ||||
* must be used to satisfy the request. | * must be used to satisfy the request. | ||||
*/ | */ | ||||
#define CRYPTO_FLAG_HARDWARE 0x01000000 /* hardware accelerated */ | #define CRYPTO_FLAG_HARDWARE 0x01000000 /* hardware accelerated */ | ||||
#define CRYPTO_FLAG_SOFTWARE 0x02000000 /* software implementation */ | #define CRYPTO_FLAG_SOFTWARE 0x02000000 /* software implementation */ | ||||
/* NB: deprecated */ | /* NB: deprecated */ | ||||
struct session_op { | struct session_op { | ||||
u_int32_t cipher; /* ie. CRYPTO_DES_CBC */ | u_int32_t cipher; /* ie. CRYPTO_AES_CBC */ | ||||
u_int32_t mac; /* ie. CRYPTO_MD5_HMAC */ | u_int32_t mac; /* ie. CRYPTO_MD5_HMAC */ | ||||
u_int32_t keylen; /* cipher key */ | u_int32_t keylen; /* cipher key */ | ||||
c_caddr_t key; | c_caddr_t key; | ||||
int mackeylen; /* mac key */ | int mackeylen; /* mac key */ | ||||
c_caddr_t mackey; | c_caddr_t mackey; | ||||
u_int32_t ses; /* returns: session # */ | u_int32_t ses; /* returns: session # */ | ||||
}; | }; | ||||
/* | /* | ||||
* session and crypt _op structs are used by userspace programs to interact | * session and crypt _op structs are used by userspace programs to interact | ||||
* with /dev/crypto. Confusingly, the internal kernel interface is named | * with /dev/crypto. Confusingly, the internal kernel interface is named | ||||
* "cryptop" (no underscore). | * "cryptop" (no underscore). | ||||
*/ | */ | ||||
struct session2_op { | struct session2_op { | ||||
u_int32_t cipher; /* ie. CRYPTO_DES_CBC */ | u_int32_t cipher; /* ie. CRYPTO_AES_CBC */ | ||||
u_int32_t mac; /* ie. CRYPTO_MD5_HMAC */ | u_int32_t mac; /* ie. CRYPTO_MD5_HMAC */ | ||||
u_int32_t keylen; /* cipher key */ | u_int32_t keylen; /* cipher key */ | ||||
c_caddr_t key; | c_caddr_t key; | ||||
int mackeylen; /* mac key */ | int mackeylen; /* mac key */ | ||||
c_caddr_t mackey; | c_caddr_t mackey; | ||||
u_int32_t ses; /* returns: session # */ | u_int32_t ses; /* returns: session # */ | ||||
▲ Show 20 Lines • Show All 368 Lines • Show Last 20 Lines |