The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* SPDX-License-Identifier: BSD-3-Clause */
    2 /* Copyright(c) 2007-2022 Intel Corporation */
    3 /* $FreeBSD$ */
    4 
    5 /**
    6  *****************************************************************************
    7  * @file lac_sym_qat_hash.h
    8  *
    9  * @defgroup LacSymQatHash  Hash QAT
   10  *
   11  * @ingroup LacSymQat
   12  *
   13  * interfaces for populating qat structures for a hash operation
   14  *
   15  *****************************************************************************/
   16 
   17 /*****************************************************************************/
   18 
   19 #ifndef LAC_SYM_QAT_HASH_H
   20 #define LAC_SYM_QAT_HASH_H
   21 
   22 /*
   23 ******************************************************************************
   24 * Include public/global header files
   25 ******************************************************************************
   26 */
   27 
   28 #include "cpa.h"
   29 #include "cpa_cy_sym.h"
   30 #include "icp_qat_fw_la.h"
   31 #include "icp_qat_hw.h"
   32 
   33 /*
   34 *******************************************************************************
   35 * Include private header files
   36 *******************************************************************************
   37 */
   38 #include "lac_common.h"
   39 
   40 /**
   41  ******************************************************************************
   42  * @ingroup LacSymQatHash
   43  *      hash precomputes
   44  *
   45  * @description
   46  *      This structure contains infomation on the hash precomputes
   47  *
   48  *****************************************************************************/
   49 typedef struct lac_sym_qat_hash_precompute_info_s {
   50         Cpa8U *pState1;
   51         /**< state1 pointer */
   52         Cpa32U state1Size;
   53         /**< state1 size */
   54         Cpa8U *pState2;
   55         /**< state2 pointer */
   56         Cpa32U state2Size;
   57         /**< state2 size */
   58 } lac_sym_qat_hash_precompute_info_t;
   59 
   60 /**
   61  ******************************************************************************
   62  * @ingroup LacSymQatHash
   63  *      hash state prefix buffer info
   64  *
   65  * @description
   66  *      This structure contains infomation on the hash state prefix aad buffer
   67  *
   68  *****************************************************************************/
   69 typedef struct lac_sym_qat_hash_state_buffer_info_s {
   70         Cpa64U pDataPhys;
   71         /**< Physical pointer to the hash state prefix buffer */
   72         Cpa8U *pData;
   73         /**< Virtual pointer to the hash state prefix buffer */
   74         Cpa8U stateStorageSzQuadWords;
   75         /**< hash state storage size in quad words */
   76         Cpa8U prefixAadSzQuadWords;
   77         /**< inner prefix/aad and outer prefix size in quad words */
   78 } lac_sym_qat_hash_state_buffer_info_t;
   79 
   80 /**
   81  ******************************************************************************
   82  * @ingroup LacSymQatHash
   83  *      Init the hash specific part of the content descriptor.
   84  *
   85  * @description
   86  *      This function populates the hash specific fields of the control block
   87  *      and the hardware setup block for a digest session. This function sets
   88  *      the size param to hold the size of the hash setup block.
   89  *
   90  *      In the case of hash only, the content descriptor will contain just a
   91  *      hash control block and hash setup block. In the case of chaining it
   92  *      will contain the hash control block and setup block along with the
   93  *      control block and setup blocks of additional services.
   94  *
   95  *      Note: The memory for the content descriptor MUST be allocated prior to
   96  *      calling this function. The memory for the hash control block and hash
   97  *      setup block MUST be set to 0 prior to calling this function.
   98  *
   99  * @image html contentDescriptor.png "Content Descriptor"
  100  *
  101  * @param[in] pMsg                      Pointer to req Parameter Footer
  102  *
  103  * @param[in] pHashSetupData            Pointer to the hash setup data as
  104  *                                      defined in the LAC API.
  105  *
  106  * @param[in] pHwBlockBase              Pointer to the base of the hardware
  107  *                                      setup block
  108  *
  109  * @param[in] hashBlkOffsetInHwBlock    Offset in quad-words from the base of
  110  *                                      the hardware setup block where the
  111  *                                      hash block will start. This offset
  112  *                                      is stored in the control block. It
  113  *                                      is used to figure out where to write
  114  *                                      that hash setup block.
  115  *
  116  * @param[in] nextSlice                 SliceID for next control block
  117  *                                      entry This value is known only by
  118  *                                      the calling component
  119  *
  120  * @param[in] qatHashMode               QAT hash mode
  121  *
  122  * @param[in] useSymConstantsTable      Indicate if Shared-SRAM constants table
  123  *                                      is used for this session. If TRUE, the
  124  *                                      h/w setup block is NOT populated
  125  *
  126  * @param[in] useOptimisedContentDesc   Indicate if optimised content desc
  127  *                                      is used for this session.
  128  *
  129  * @param[in] useStatefulSha3ContentDesc
  130  *                                      Indicate if stateful SHA3 content desc
  131  *                                      is used for this session.
  132  *
  133  * @param[in] pPrecompute               For auth mode, this is the pointer
  134  *                                      to the precompute data. Otherwise this
  135  *                                      should be set to NULL
  136  *
  137  * @param[out] pHashBlkSizeInBytes      size in bytes of hash setup block
  138  *
  139  * @return void
  140  *
  141  *****************************************************************************/
  142 void
  143 LacSymQat_HashContentDescInit(icp_qat_la_bulk_req_ftr_t *pMsg,
  144                               CpaInstanceHandle instanceHandle,
  145                               const CpaCySymHashSetupData *pHashSetupData,
  146                               void *pHwBlockBase,
  147                               Cpa32U hashBlkOffsetInHwBlock,
  148                               icp_qat_fw_slice_t nextSlice,
  149                               icp_qat_hw_auth_mode_t qatHashMode,
  150                               CpaBoolean useSymConstantsTable,
  151                               CpaBoolean useOptimisedContentDesc,
  152                               CpaBoolean useStatefulSha3ContentDesc,
  153                               lac_sym_qat_hash_precompute_info_t *pPrecompute,
  154                               Cpa32U *pHashBlkSizeInBytes);
  155 
  156 /**
  157  ******************************************************************************
  158  * @ingroup LacSymQatHash
  159  *      Calculate the size of the hash state prefix aad buffer
  160  *
  161  * @description
  162  *      This function inspects the hash control block and based on the values
  163  *      in the fields, it calculates the size of the hash state prefix aad
  164  *      buffer.
  165  *
  166  *      A partial packet processing request is possible at any stage during a
  167  *      hash session. In this case, there will always be space for the hash
  168  *      state storage field of the hash state prefix buffer. When there is
  169  *      AAD data just the inner prefix AAD data field is used.
  170  *
  171  * @param[in]  pMsg                 Pointer to the Request Message
  172  *
  173  * @param[out] pHashStateBuf        Pointer to hash state prefix buffer info
  174  *                                  structure.
  175  *
  176  * @return None
  177  *
  178  *****************************************************************************/
  179 void LacSymQat_HashStatePrefixAadBufferSizeGet(
  180     icp_qat_la_bulk_req_ftr_t *pMsg,
  181     lac_sym_qat_hash_state_buffer_info_t *pHashStateBuf);
  182 
  183 /**
  184  ******************************************************************************
  185  * @ingroup LacSymQatHash
  186  *      Populate the fields of the hash state prefix buffer
  187  *
  188  * @description
  189  *      This function populates the inner prefix/aad fields and/or the outer
  190  *      prefix field of the hash state prefix buffer.
  191  *
  192  * @param[in] pHashStateBuf         Pointer to hash state prefix buffer info
  193  *                                  structure.
  194  *
  195  * @param[in] pMsg                  Pointer to the Request Message
  196  *
  197  * @param[in] pInnerPrefixAad       Pointer to the Inner Prefix or Aad data
  198  *                                  This is NULL where if the data size is 0
  199  *
  200  * @param[in] innerPrefixSize       Size of inner prefix/aad data in bytes
  201  *
  202  * @param[in] pOuterPrefix          Pointer to the Outer Prefix data. This is
  203  *                                  NULL where the data size is 0.
  204  *
  205  * @param[in] outerPrefixSize       Size of the outer prefix data in bytes
  206  *
  207  * @return void
  208  *
  209  *****************************************************************************/
  210 void LacSymQat_HashStatePrefixAadBufferPopulate(
  211     lac_sym_qat_hash_state_buffer_info_t *pHashStateBuf,
  212     icp_qat_la_bulk_req_ftr_t *pMsg,
  213     Cpa8U *pInnerPrefixAad,
  214     Cpa8U innerPrefixSize,
  215     Cpa8U *pOuterPrefix,
  216     Cpa8U outerPrefixSize);
  217 
  218 /**
  219  ******************************************************************************
  220  * @ingroup LacSymQatHash
  221  *      Populate the hash request params structure
  222  *
  223  * @description
  224  *      This function is passed a pointer to the 128B Request block.
  225  *      (This memory must be allocated prior to calling this function). It
  226  *      populates the fields of this block using the parameters as described
  227  *      below. It is also expected that this structure has been set to 0
  228  *      prior to calling this function.
  229  *
  230  *
  231  * @param[in] pReq                  Pointer to 128B request block.
  232  *
  233  * @param[in] authOffsetInBytes     start offset of data that the digest is to
  234  *                                  be computed on.
  235  *
  236  * @param[in] authLenInBytes        Length of data digest calculated on
  237  *
  238  * @param[in] pService              Pointer to service data
  239  *
  240  * @param[in] pHashStateBuf         Pointer to hash state buffer info. This
  241  *                                  structure contains the pointers and sizes.
  242  *                                  If there is no hash state prefix buffer
  243  *                                  required, this parameter can be set to NULL
  244  *
  245  * @param[in] qatPacketType         Packet type using QAT macros. The hash
  246  *                                  state buffer pointer and state size will be
  247  *                                  different depending on the packet type
  248  *
  249  * @param[in] hashResultSize        Size of the final hash result in bytes.
  250  *
  251  * @param[in] digestVerify          Indicates if verify is enabled or not
  252  *
  253  * @param[in] pAuthResult           Virtual pointer to digest
  254  *
  255  * @return CPA_STATUS_SUCCESS or CPA_STATUS_FAIL
  256  *
  257  *****************************************************************************/
  258 CpaStatus LacSymQat_HashRequestParamsPopulate(
  259     icp_qat_fw_la_bulk_req_t *pReq,
  260     Cpa32U authOffsetInBytes,
  261     Cpa32U authLenInBytes,
  262     sal_service_t *pService,
  263     lac_sym_qat_hash_state_buffer_info_t *pHashStateBuf,
  264     Cpa32U qatPacketType,
  265     Cpa32U hashResultSize,
  266     CpaBoolean digestVerify,
  267     Cpa8U *pAuthResult,
  268     CpaCySymHashAlgorithm alg,
  269     void *data);
  270 
  271 /**
  272  ******************************************************************************
  273  * @ingroup LacSymQatHash
  274  *
  275  *
  276  * @description
  277  *      This fn returns the QAT values for hash algorithm and nested fields
  278  *
  279  *
  280  * @param[in] pInstance              Pointer to service instance.
  281  *
  282  * @param[in] qatHashMode            value for hash mode on the fw qat
  283  *interface.
  284  *
  285  * @param[in] apiHashMode            value for hash mode on the QA API.
  286  *
  287  * @param[in] apiHashAlgorithm       value for hash algorithm on the QA API.
  288  *
  289  * @param[out] pQatAlgorithm         Pointer to return fw qat value for
  290  *algorithm.
  291  *
  292  * @param[out] pQatNested            Pointer to return fw qat value for nested.
  293  *
  294  *
  295  * @return
  296  *      none
  297  *
  298  *****************************************************************************/
  299 void LacSymQat_HashGetCfgData(CpaInstanceHandle pInstance,
  300                               icp_qat_hw_auth_mode_t qatHashMode,
  301                               CpaCySymHashMode apiHashMode,
  302                               CpaCySymHashAlgorithm apiHashAlgorithm,
  303                               icp_qat_hw_auth_algo_t *pQatAlgorithm,
  304                               CpaBoolean *pQatNested);
  305 
  306 void LacSymQat_HashSetupReqParamsMetaData(
  307     icp_qat_la_bulk_req_ftr_t *pMsg,
  308     CpaInstanceHandle instanceHandle,
  309     const CpaCySymHashSetupData *pHashSetupData,
  310     CpaBoolean hashStateBuffer,
  311     icp_qat_hw_auth_mode_t qatHashMode,
  312     CpaBoolean digestVerify);
  313 
  314 #endif /* LAC_SYM_QAT_HASH_H */

Cache object: 1f5fd6198bd81895562dddc64888508f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.