LCOV - code coverage report
Current view: top level - zephyr/crypto - hash.h Coverage Total Hit
Test: new.info Lines: 80.0 % 15 12
Test Date: 2025-03-11 06:50:38

            Line data    Source code
       1            1 : /*
       2              :  * Copyright (c) 2022 Intel Corporation.
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : /**
       8              :  * @file
       9              :  * @brief Crypto Hash APIs
      10              :  *
      11              :  * This file contains the Crypto Abstraction layer APIs.
      12              :  */
      13              : #ifndef ZEPHYR_INCLUDE_CRYPTO_HASH_H_
      14              : #define ZEPHYR_INCLUDE_CRYPTO_HASH_H_
      15              : 
      16              : 
      17              : /**
      18              :  * @addtogroup crypto_hash
      19              :  * @{
      20              :  */
      21              : 
      22              : 
      23              : /**
      24              :  * Hash algorithm
      25              :  */
      26            0 : enum hash_algo {
      27              :         CRYPTO_HASH_ALGO_SHA224 = 1,
      28              :         CRYPTO_HASH_ALGO_SHA256 = 2,
      29              :         CRYPTO_HASH_ALGO_SHA384 = 3,
      30              :         CRYPTO_HASH_ALGO_SHA512 = 4,
      31              : };
      32              : 
      33              : /* Forward declarations */
      34              : struct hash_ctx;
      35              : struct hash_pkt;
      36              : 
      37              : 
      38            0 : typedef int (*hash_op_t)(struct hash_ctx *ctx, struct hash_pkt *pkt,
      39              :                          bool finish);
      40              : 
      41              : /**
      42              :  * Structure encoding session parameters.
      43              :  *
      44              :  * Refer to comments for individual fields to know the contract
      45              :  * in terms of who fills what and when w.r.t begin_session() call.
      46              :  */
      47            1 : struct hash_ctx {
      48              :         /** The device driver instance this crypto context relates to. Will be
      49              :          * populated by the begin_session() API.
      50              :          */
      51            1 :         const struct device *device;
      52              : 
      53              :         /** If the driver supports multiple simultaneously crypto sessions, this
      54              :          * will identify the specific driver state this crypto session relates
      55              :          * to. Since dynamic memory allocation is not possible, it is
      56              :          * suggested that at build time drivers allocate space for the
      57              :          * max simultaneous sessions they intend to support. To be populated
      58              :          * by the driver on return from begin_session().
      59              :          */
      60            1 :         void *drv_sessn_state;
      61              : 
      62              :         /**
      63              :          * Hash handler set up when the session begins.
      64              :          */
      65            1 :         hash_op_t hash_hndlr;
      66              : 
      67              :         /**
      68              :          * If it has started a multipart hash operation.
      69              :          */
      70            1 :         bool started;
      71              : 
      72              :         /** How certain fields are to be interpreted for this session.
      73              :          * (A bitmask of CAP_* below.)
      74              :          * To be populated by the app before calling hash_begin_session().
      75              :          * An app can obtain the capability flags supported by a hw/driver
      76              :          * by calling crypto_query_hwcaps().
      77              :          */
      78            1 :         uint16_t flags;
      79              : };
      80              : 
      81              : /**
      82              :  * Structure encoding IO parameters of a hash
      83              :  * operation.
      84              :  *
      85              :  * The fields which has not been explicitly called out has to
      86              :  * be filled up by the app before calling hash_compute().
      87              :  */
      88            1 : struct hash_pkt {
      89              : 
      90              :         /** Start address of input buffer */
      91            1 :         uint8_t *in_buf;
      92              : 
      93              :         /** Bytes to be operated upon */
      94            1 :         size_t  in_len;
      95              : 
      96              :         /**
      97              :          * Start of the output buffer, to be allocated by
      98              :          * the application. Can be NULL for in-place ops. To be populated
      99              :          * with contents by the driver on return from op / async callback.
     100              :          */
     101            1 :         uint8_t *out_buf;
     102              : 
     103              :         /**
     104              :          * Context this packet relates to. This can be useful to get the
     105              :          * session details, especially for async ops.
     106              :          */
     107            1 :         struct hash_ctx *ctx;
     108              : };
     109              : 
     110              : /* Prototype for the application function to be invoked by the crypto driver
     111              :  * on completion of an async request. The app may get the session context
     112              :  * via the pkt->ctx field.
     113              :  */
     114            0 : typedef void (*hash_completion_cb)(struct hash_pkt *completed, int status);
     115              : 
     116              : 
     117              : /**
     118              :  * @}
     119              :  */
     120              : #endif /* ZEPHYR_INCLUDE_CRYPTO_HASH_H_ */
        

Generated by: LCOV version 2.0-1