17#ifndef ZEPHYR_INCLUDE_CRYPTO_H_ 
   18#define ZEPHYR_INCLUDE_CRYPTO_H_ 
   40#define CAP_OPAQUE_KEY_HNDL             BIT(0) 
   41#define CAP_RAW_KEY                     BIT(1) 
   44#define CAP_KEY_LOADING_API             BIT(2) 
   47#define CAP_INPLACE_OPS                 BIT(3) 
   48#define CAP_SEPARATE_IO_BUFS            BIT(4) 
   54#define CAP_SYNC_OPS                    BIT(5) 
   55#define CAP_ASYNC_OPS                   BIT(6) 
   58#define CAP_AUTONONCE                   BIT(7) 
   61#define CAP_NO_IV_PREFIX                BIT(8) 
  119                 "Driver should support at least one key type: RAW/Opaque");
 
  122             "Driver should support at least one IO buf type: Inplace/separate");
 
  125                "Driver should support at least one op-type: sync/async");
 
  174        __ASSERT(
flags != 0U, 
"Keytype missing: RAW Key or OPAQUE handle");
 
  176                         "conflicting options for keytype");
 
  179        __ASSERT(
flags != 0U, 
"IO buffer type missing");
 
  181                        "conflicting options for IO buffer type");
 
  184        __ASSERT(
flags != 0U, 
"sync/async type missing");
 
  186                        "conflicting options for sync/async");
 
  254                 "session invoking a different mode handler");
 
  275                 "session invoking a different mode handler");
 
  302                 "session invoking a different mode handler");
 
  324                 "session invoking a different mode handler");
 
  346                 "session invoking a different mode handler");
 
  393        __ASSERT(
flags != 0U, 
"IO buffer type missing");
 
  395                        "conflicting options for IO buffer type");
 
  398        __ASSERT(
flags != 0U, 
"sync/async type missing");
 
  400                        "conflicting options for sync/async");
 
Crypto Cipher structure definitions.
 
static int cipher_block_op(struct cipher_ctx *ctx, struct cipher_pkt *pkt)
Perform single-block crypto operation (ECB cipher mode). This should not be overloaded to operate on ...
Definition: crypto.h:250
 
void(* cipher_completion_cb)(struct cipher_pkt *completed, int status)
Definition: cipher.h:242
 
static int cipher_begin_session(const struct device *dev, struct cipher_ctx *ctx, enum cipher_algo algo, enum cipher_mode mode, enum cipher_op optype)
Setup a crypto session.
Definition: crypto.h:160
 
cipher_op
Definition: cipher.h:34
 
static int cipher_cbc_op(struct cipher_ctx *ctx, struct cipher_pkt *pkt, uint8_t *iv)
Perform Cipher Block Chaining (CBC) crypto operation.
Definition: crypto.h:271
 
static int cipher_gcm_op(struct cipher_ctx *ctx, struct cipher_aead_pkt *pkt, uint8_t *nonce)
Perform Galois/Counter Mode (GCM) crypto operation.
Definition: crypto.h:342
 
static int cipher_ccm_op(struct cipher_ctx *ctx, struct cipher_aead_pkt *pkt, uint8_t *nonce)
Perform Counter with CBC-MAC (CCM) mode crypto operation.
Definition: crypto.h:320
 
cipher_algo
Definition: cipher.h:29
 
static int cipher_free_session(const struct device *dev, struct cipher_ctx *ctx)
Cleanup a crypto session.
Definition: crypto.h:202
 
static int cipher_callback_set(const struct device *dev, cipher_completion_cb cb)
Registers an async crypto op completion callback with the driver.
Definition: crypto.h:226
 
cipher_mode
Definition: cipher.h:44
 
static int cipher_ctr_op(struct cipher_ctx *ctx, struct cipher_pkt *pkt, uint8_t *iv)
Perform Counter (CTR) mode crypto operation.
Definition: crypto.h:298
 
@ CRYPTO_CIPHER_MODE_GCM
Definition: cipher.h:49
 
@ CRYPTO_CIPHER_MODE_ECB
Definition: cipher.h:45
 
@ CRYPTO_CIPHER_MODE_CCM
Definition: cipher.h:48
 
@ CRYPTO_CIPHER_MODE_CTR
Definition: cipher.h:47
 
@ CRYPTO_CIPHER_MODE_CBC
Definition: cipher.h:46
 
void(* hash_completion_cb)(struct hash_pkt *completed, int status)
Definition: hash.h:114
 
static int hash_compute(struct hash_ctx *ctx, struct hash_pkt *pkt)
Perform a cryptographic hash function.
Definition: crypto.h:464
 
static int hash_begin_session(const struct device *dev, struct hash_ctx *ctx, enum hash_algo algo)
Setup a hash session.
Definition: crypto.h:382
 
static int hash_callback_set(const struct device *dev, hash_completion_cb cb)
Registers an async hash completion callback with the driver.
Definition: crypto.h:441
 
hash_algo
Definition: hash.h:26
 
static int hash_free_session(const struct device *dev, struct hash_ctx *ctx)
Cleanup a hash session.
Definition: crypto.h:417
 
static int hash_update(struct hash_ctx *ctx, struct hash_pkt *pkt)
Perform a cryptographic multipart hash operation.
Definition: crypto.h:483
 
#define CAP_SYNC_OPS
Definition: crypto.h:54
 
#define CAP_INPLACE_OPS
Definition: crypto.h:47
 
#define CAP_ASYNC_OPS
Definition: crypto.h:55
 
#define CAP_OPAQUE_KEY_HNDL
Definition: crypto.h:40
 
#define CAP_SEPARATE_IO_BUFS
Definition: crypto.h:48
 
#define CAP_RAW_KEY
Definition: crypto.h:41
 
static int crypto_query_hwcaps(const struct device *dev)
Query the crypto hardware capabilities.
Definition: crypto.h:109
 
#define ENOTSUP
Definition: errno.h:115
 
flags
Definition: parser.h:96
 
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
struct cipher_pkt * pkt
Definition: cipher.h:219
 
const struct device * device
Definition: cipher.h:131
 
uint16_t flags
Definition: cipher.h:169
 
struct cipher_ops ops
Definition: cipher.h:116
 
block_op_t block_crypt_hndlr
Definition: cipher.h:79
 
gcm_op_t gcm_crypt_hndlr
Definition: cipher.h:83
 
enum cipher_mode cipher_mode
Definition: cipher.h:76
 
cbc_op_t cbc_crypt_hndlr
Definition: cipher.h:80
 
ctr_op_t ctr_crypt_hndlr
Definition: cipher.h:81
 
ccm_op_t ccm_crypt_hndlr
Definition: cipher.h:82
 
struct cipher_ctx * ctx
Definition: cipher.h:208
 
Crypto driver API definition.
Definition: crypto.h:66
 
int(* query_hw_caps)(const struct device *dev)
Definition: crypto.h:67
 
int(* cipher_async_callback_set)(const struct device *dev, cipher_completion_cb cb)
Definition: crypto.h:78
 
int(* hash_begin_session)(const struct device *dev, struct hash_ctx *ctx, enum hash_algo algo)
Definition: crypto.h:82
 
int(* cipher_free_session)(const struct device *dev, struct cipher_ctx *ctx)
Definition: crypto.h:75
 
int(* hash_async_callback_set)(const struct device *dev, hash_completion_cb cb)
Definition: crypto.h:87
 
int(* hash_free_session)(const struct device *dev, struct hash_ctx *ctx)
Definition: crypto.h:85
 
int(* cipher_begin_session)(const struct device *dev, struct cipher_ctx *ctx, enum cipher_algo algo, enum cipher_mode mode, enum cipher_op op_type)
Definition: crypto.h:70
 
Runtime device structure (in ROM) per driver instance.
Definition: device.h:380
 
const void * api
Definition: device.h:386
 
hash_op_t hash_hndlr
Definition: hash.h:65
 
uint16_t flags
Definition: hash.h:78
 
const struct device * device
Definition: hash.h:51
 
struct hash_ctx * ctx
Definition: hash.h:107