178ee8d1cSJulian Grajkowski /*************************************************************************** 278ee8d1cSJulian Grajkowski * 378ee8d1cSJulian Grajkowski * BSD LICENSE 478ee8d1cSJulian Grajkowski * 5266b0663SKrzysztof Zdziarski * Copyright(c) 2007-2023 Intel Corporation. All rights reserved. 678ee8d1cSJulian Grajkowski * All rights reserved. 778ee8d1cSJulian Grajkowski * 878ee8d1cSJulian Grajkowski * Redistribution and use in source and binary forms, with or without 978ee8d1cSJulian Grajkowski * modification, are permitted provided that the following conditions 1078ee8d1cSJulian Grajkowski * are met: 1178ee8d1cSJulian Grajkowski * 1278ee8d1cSJulian Grajkowski * * Redistributions of source code must retain the above copyright 1378ee8d1cSJulian Grajkowski * notice, this list of conditions and the following disclaimer. 1478ee8d1cSJulian Grajkowski * * Redistributions in binary form must reproduce the above copyright 1578ee8d1cSJulian Grajkowski * notice, this list of conditions and the following disclaimer in 1678ee8d1cSJulian Grajkowski * the documentation and/or other materials provided with the 1778ee8d1cSJulian Grajkowski * distribution. 1878ee8d1cSJulian Grajkowski * * Neither the name of Intel Corporation nor the names of its 1978ee8d1cSJulian Grajkowski * contributors may be used to endorse or promote products derived 2078ee8d1cSJulian Grajkowski * from this software without specific prior written permission. 2178ee8d1cSJulian Grajkowski * 2278ee8d1cSJulian Grajkowski * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2378ee8d1cSJulian Grajkowski * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2478ee8d1cSJulian Grajkowski * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2578ee8d1cSJulian Grajkowski * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2678ee8d1cSJulian Grajkowski * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2778ee8d1cSJulian Grajkowski * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2878ee8d1cSJulian Grajkowski * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2978ee8d1cSJulian Grajkowski * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3078ee8d1cSJulian Grajkowski * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3178ee8d1cSJulian Grajkowski * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3278ee8d1cSJulian Grajkowski * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3378ee8d1cSJulian Grajkowski * 3478ee8d1cSJulian Grajkowski * 3578ee8d1cSJulian Grajkowski ***************************************************************************/ 3678ee8d1cSJulian Grajkowski 3778ee8d1cSJulian Grajkowski /* 3878ee8d1cSJulian Grajkowski ***************************************************************************** 3978ee8d1cSJulian Grajkowski * Doxygen group definitions 4078ee8d1cSJulian Grajkowski ****************************************************************************/ 4178ee8d1cSJulian Grajkowski 4278ee8d1cSJulian Grajkowski /** 4378ee8d1cSJulian Grajkowski ***************************************************************************** 4478ee8d1cSJulian Grajkowski * @file cpa_cy_ecdh.h 4578ee8d1cSJulian Grajkowski * 4678ee8d1cSJulian Grajkowski * @defgroup cpaCyEcdh Elliptic Curve Diffie-Hellman (ECDH) API 4778ee8d1cSJulian Grajkowski * 4878ee8d1cSJulian Grajkowski * @ingroup cpaCy 4978ee8d1cSJulian Grajkowski * 5078ee8d1cSJulian Grajkowski * @description 5178ee8d1cSJulian Grajkowski * These functions specify the API for Public Key Encryption 5278ee8d1cSJulian Grajkowski * (Cryptography) Elliptic Curve Diffie-Hellman (ECDH) operations. 5378ee8d1cSJulian Grajkowski * 5478ee8d1cSJulian Grajkowski * @note 5578ee8d1cSJulian Grajkowski * Large numbers are represented on the QuickAssist API as described 5678ee8d1cSJulian Grajkowski * in the Large Number API (@ref cpaCyLn). 5778ee8d1cSJulian Grajkowski * 5878ee8d1cSJulian Grajkowski * In addition, the bit length of large numbers passed to the API 5978ee8d1cSJulian Grajkowski * MUST NOT exceed 576 bits for Elliptic Curve operations. 6078ee8d1cSJulian Grajkowski *****************************************************************************/ 6178ee8d1cSJulian Grajkowski 6278ee8d1cSJulian Grajkowski #ifndef CPA_CY_ECDH_H_ 6378ee8d1cSJulian Grajkowski #define CPA_CY_ECDH_H_ 6478ee8d1cSJulian Grajkowski 6578ee8d1cSJulian Grajkowski #ifdef __cplusplus 6678ee8d1cSJulian Grajkowski extern "C" { 6778ee8d1cSJulian Grajkowski #endif 6878ee8d1cSJulian Grajkowski 6978ee8d1cSJulian Grajkowski #include "cpa_cy_common.h" 7078ee8d1cSJulian Grajkowski #include "cpa_cy_ec.h" 7178ee8d1cSJulian Grajkowski 7278ee8d1cSJulian Grajkowski /** 7378ee8d1cSJulian Grajkowski ***************************************************************************** 7478ee8d1cSJulian Grajkowski * @ingroup cpaCyEcdh 7578ee8d1cSJulian Grajkowski * ECDH Point Multiplication Operation Data. 7678ee8d1cSJulian Grajkowski * 7778ee8d1cSJulian Grajkowski * @description 7878ee8d1cSJulian Grajkowski * This structure contains the operation data for the 7978ee8d1cSJulian Grajkowski * cpaCyEcdhPointMultiply function. The client MUST allocate the memory 8078ee8d1cSJulian Grajkowski * for this structure and the items pointed to by this structure. When 8178ee8d1cSJulian Grajkowski * the structure is passed into the function, ownership of the memory 8278ee8d1cSJulian Grajkowski * passes to the function. Ownership of the memory returns to the client 8378ee8d1cSJulian Grajkowski * when this structure is returned in the callback function. 8478ee8d1cSJulian Grajkowski * 8578ee8d1cSJulian Grajkowski * For optimal performance all data buffers SHOULD be 8-byte aligned. 8678ee8d1cSJulian Grajkowski * 8778ee8d1cSJulian Grajkowski * All values in this structure are required to be in Most Significant Byte 8878ee8d1cSJulian Grajkowski * first order, e.g. a.pData[0] = MSB. 8978ee8d1cSJulian Grajkowski * 9078ee8d1cSJulian Grajkowski * @note 9178ee8d1cSJulian Grajkowski * If the client modifies or frees the memory referenced in this 9278ee8d1cSJulian Grajkowski * structure after it has been submitted to the cpaCyEcdhPointMultiply 9378ee8d1cSJulian Grajkowski * function, and before it has been returned in the callback, undefined 9478ee8d1cSJulian Grajkowski * behavior will result. 9578ee8d1cSJulian Grajkowski * 9678ee8d1cSJulian Grajkowski * @see 9778ee8d1cSJulian Grajkowski * cpaCyEcdhPointMultiply() 9878ee8d1cSJulian Grajkowski * 9978ee8d1cSJulian Grajkowski *****************************************************************************/ 10078ee8d1cSJulian Grajkowski typedef struct _CpaCyEcdhPointMultiplyOpData { 10178ee8d1cSJulian Grajkowski CpaFlatBuffer k; 10278ee8d1cSJulian Grajkowski /**< scalar multiplier (k > 0 and k < n) */ 10378ee8d1cSJulian Grajkowski CpaFlatBuffer xg; 10478ee8d1cSJulian Grajkowski /**< x coordinate of curve point */ 10578ee8d1cSJulian Grajkowski CpaFlatBuffer yg; 10678ee8d1cSJulian Grajkowski /**< y coordinate of curve point */ 10778ee8d1cSJulian Grajkowski CpaFlatBuffer a; 10878ee8d1cSJulian Grajkowski /**< a equation coefficient */ 10978ee8d1cSJulian Grajkowski CpaFlatBuffer b; 11078ee8d1cSJulian Grajkowski /**< b equation coefficient */ 11178ee8d1cSJulian Grajkowski CpaFlatBuffer q; 11278ee8d1cSJulian Grajkowski /**< prime modulus or irreducible polynomial over GF(2^r) */ 11378ee8d1cSJulian Grajkowski CpaFlatBuffer h; 11478ee8d1cSJulian Grajkowski /**< cofactor of the operation. 11578ee8d1cSJulian Grajkowski * If the cofactor is NOT required then set the cofactor to 1 or the 11678ee8d1cSJulian Grajkowski * data pointer of the Flat Buffer to NULL. 11778ee8d1cSJulian Grajkowski * There are some restrictions on the value of the cofactor. 11878ee8d1cSJulian Grajkowski * Implementations of this API will support at least the following: 11978ee8d1cSJulian Grajkowski * <ul> 12078ee8d1cSJulian Grajkowski * <li>NIST standard curves and their cofactors (1, 2 and 4)</li> 12178ee8d1cSJulian Grajkowski * 12278ee8d1cSJulian Grajkowski * <li>Random curves where max(log2(p), log2(n)+log2(h)) <= 512, where 12378ee8d1cSJulian Grajkowski * p is the modulus, n is the order of the curve and h is the cofactor 12478ee8d1cSJulian Grajkowski * </li> 12578ee8d1cSJulian Grajkowski * </ul> 12678ee8d1cSJulian Grajkowski */ 12778ee8d1cSJulian Grajkowski 12878ee8d1cSJulian Grajkowski CpaCyEcFieldType fieldType; 12978ee8d1cSJulian Grajkowski /**< field type for the operation */ 13078ee8d1cSJulian Grajkowski CpaBoolean pointVerify; 13178ee8d1cSJulian Grajkowski /**< set to CPA_TRUE to do a verification before the multiplication */ 13278ee8d1cSJulian Grajkowski } CpaCyEcdhPointMultiplyOpData; 13378ee8d1cSJulian Grajkowski 13478ee8d1cSJulian Grajkowski 13578ee8d1cSJulian Grajkowski /** 13678ee8d1cSJulian Grajkowski ***************************************************************************** 13778ee8d1cSJulian Grajkowski * @ingroup cpaCyEcdh 13878ee8d1cSJulian Grajkowski * Cryptographic ECDH Statistics. 13978ee8d1cSJulian Grajkowski * @description 14078ee8d1cSJulian Grajkowski * This structure contains statistics on the Cryptographic ECDH 14178ee8d1cSJulian Grajkowski * operations. Statistics are set to zero when the component is 14278ee8d1cSJulian Grajkowski * initialized, and are collected per instance. 14378ee8d1cSJulian Grajkowski * 14478ee8d1cSJulian Grajkowski ****************************************************************************/ 14578ee8d1cSJulian Grajkowski typedef struct _CpaCyEcdhStats64 { 14678ee8d1cSJulian Grajkowski Cpa64U numEcdhPointMultiplyRequests; 14778ee8d1cSJulian Grajkowski /**< Total number of ECDH Point Multiplication operation requests. */ 14878ee8d1cSJulian Grajkowski Cpa64U numEcdhPointMultiplyRequestErrors; 14978ee8d1cSJulian Grajkowski /**< Total number of ECDH Point Multiplication operation requests that had 15078ee8d1cSJulian Grajkowski * an error and could not be processed. */ 15178ee8d1cSJulian Grajkowski Cpa64U numEcdhPointMultiplyCompleted; 15278ee8d1cSJulian Grajkowski /**< Total number of ECDH Point Multiplication operation requests that 15378ee8d1cSJulian Grajkowski * completed successfully. */ 15478ee8d1cSJulian Grajkowski Cpa64U numEcdhPointMultiplyCompletedError; 15578ee8d1cSJulian Grajkowski /**< Total number of ECDH Point Multiplication operation requests that could 15678ee8d1cSJulian Grajkowski * not be completed successfully due to errors. */ 15778ee8d1cSJulian Grajkowski Cpa64U numEcdhRequestCompletedOutputInvalid; 15878ee8d1cSJulian Grajkowski /**< Total number of ECDH Point Multiplication or Point Verify operation 15978ee8d1cSJulian Grajkowski * requests that could not be completed successfully due to an invalid 16078ee8d1cSJulian Grajkowski * output. 16178ee8d1cSJulian Grajkowski * Note that this does not indicate an error. */ 16278ee8d1cSJulian Grajkowski } CpaCyEcdhStats64; 16378ee8d1cSJulian Grajkowski 16478ee8d1cSJulian Grajkowski 16578ee8d1cSJulian Grajkowski /** 16678ee8d1cSJulian Grajkowski ***************************************************************************** 16778ee8d1cSJulian Grajkowski * @ingroup cpaCyEcdh 16878ee8d1cSJulian Grajkowski * Definition of callback function invoked for cpaCyEcdhPointMultiply 16978ee8d1cSJulian Grajkowski * requests. 17078ee8d1cSJulian Grajkowski * 17178ee8d1cSJulian Grajkowski * @description 17278ee8d1cSJulian Grajkowski * This is the prototype for the CpaCyEcdhPointMultiplyCbFunc callback 17378ee8d1cSJulian Grajkowski * function 17478ee8d1cSJulian Grajkowski * 17578ee8d1cSJulian Grajkowski * @context 17678ee8d1cSJulian Grajkowski * This callback function can be executed in a context that DOES NOT 17778ee8d1cSJulian Grajkowski * permit sleeping to occur. 17878ee8d1cSJulian Grajkowski * @assumptions 17978ee8d1cSJulian Grajkowski * None 18078ee8d1cSJulian Grajkowski * @sideEffects 18178ee8d1cSJulian Grajkowski * None 18278ee8d1cSJulian Grajkowski * @reentrant 18378ee8d1cSJulian Grajkowski * No 18478ee8d1cSJulian Grajkowski * @threadSafe 18578ee8d1cSJulian Grajkowski * Yes 18678ee8d1cSJulian Grajkowski * 18778ee8d1cSJulian Grajkowski * @param[in] pCallbackTag User-supplied value to help identify request. 18878ee8d1cSJulian Grajkowski * @param[in] status Status of the operation. Valid values are 18978ee8d1cSJulian Grajkowski * CPA_STATUS_SUCCESS, CPA_STATUS_FAIL and 19078ee8d1cSJulian Grajkowski * CPA_STATUS_UNSUPPORTED. 19178ee8d1cSJulian Grajkowski * @param[in] pOpData Opaque pointer to Operation data supplied in 19278ee8d1cSJulian Grajkowski * request. 19378ee8d1cSJulian Grajkowski * @param[in] pXk Output x coordinate from the request. 19478ee8d1cSJulian Grajkowski * @param[in] pYk Output y coordinate from the request. 19578ee8d1cSJulian Grajkowski * @param[in] multiplyStatus Status of the point multiplication and the 19678ee8d1cSJulian Grajkowski * verification when the pointVerify bit is set 19778ee8d1cSJulian Grajkowski * in the CpaCyEcdhPointMultiplyOpData structure. 19878ee8d1cSJulian Grajkowski * 19978ee8d1cSJulian Grajkowski * @retval 20078ee8d1cSJulian Grajkowski * None 20178ee8d1cSJulian Grajkowski * @pre 20278ee8d1cSJulian Grajkowski * Component has been initialized. 20378ee8d1cSJulian Grajkowski * @post 20478ee8d1cSJulian Grajkowski * None 20578ee8d1cSJulian Grajkowski * @note 20678ee8d1cSJulian Grajkowski * None 20778ee8d1cSJulian Grajkowski * @see 20878ee8d1cSJulian Grajkowski * cpaCyEcdhPointMultiply() 20978ee8d1cSJulian Grajkowski * 21078ee8d1cSJulian Grajkowski *****************************************************************************/ 21178ee8d1cSJulian Grajkowski typedef void (*CpaCyEcdhPointMultiplyCbFunc)(void *pCallbackTag, 21278ee8d1cSJulian Grajkowski CpaStatus status, 21378ee8d1cSJulian Grajkowski void *pOpData, 21478ee8d1cSJulian Grajkowski CpaBoolean multiplyStatus, 21578ee8d1cSJulian Grajkowski CpaFlatBuffer *pXk, 21678ee8d1cSJulian Grajkowski CpaFlatBuffer *pYk); 21778ee8d1cSJulian Grajkowski 21878ee8d1cSJulian Grajkowski 21978ee8d1cSJulian Grajkowski /** 22078ee8d1cSJulian Grajkowski ***************************************************************************** 22178ee8d1cSJulian Grajkowski * @ingroup cpaCyEcdh 22278ee8d1cSJulian Grajkowski * ECDH Point Multiplication. 22378ee8d1cSJulian Grajkowski * 22478ee8d1cSJulian Grajkowski * @description 22578ee8d1cSJulian Grajkowski * This function performs ECDH Point Multiplication as defined in 22678ee8d1cSJulian Grajkowski * ANSI X9.63 2001 section 5.4 22778ee8d1cSJulian Grajkowski * 22878ee8d1cSJulian Grajkowski * @context 22978ee8d1cSJulian Grajkowski * When called as an asynchronous function it cannot sleep. It can be 23078ee8d1cSJulian Grajkowski * executed in a context that does not permit sleeping. 23178ee8d1cSJulian Grajkowski * When called as a synchronous function it may sleep. It MUST NOT be 23278ee8d1cSJulian Grajkowski * executed in a context that DOES NOT permit sleeping. 23378ee8d1cSJulian Grajkowski * @assumptions 23478ee8d1cSJulian Grajkowski * None 23578ee8d1cSJulian Grajkowski * @sideEffects 23678ee8d1cSJulian Grajkowski * None 23778ee8d1cSJulian Grajkowski * @blocking 23878ee8d1cSJulian Grajkowski * Yes when configured to operate in synchronous mode. 23978ee8d1cSJulian Grajkowski * @reentrant 24078ee8d1cSJulian Grajkowski * No 24178ee8d1cSJulian Grajkowski * @threadSafe 24278ee8d1cSJulian Grajkowski * Yes 24378ee8d1cSJulian Grajkowski * 24478ee8d1cSJulian Grajkowski * @param[in] instanceHandle Instance handle. 24578ee8d1cSJulian Grajkowski * @param[in] pCb Callback function pointer. If this is set to 24678ee8d1cSJulian Grajkowski * a NULL value the function will operate 24778ee8d1cSJulian Grajkowski * synchronously. 24878ee8d1cSJulian Grajkowski * @param[in] pCallbackTag User-supplied value to help identify request. 24978ee8d1cSJulian Grajkowski * @param[in] pOpData Structure containing all the data needed to 25078ee8d1cSJulian Grajkowski * perform the operation. The client code 25178ee8d1cSJulian Grajkowski * allocates the memory for this structure. This 25278ee8d1cSJulian Grajkowski * component takes ownership of the memory until 25378ee8d1cSJulian Grajkowski * it is returned in the callback. 25478ee8d1cSJulian Grajkowski * @param[out] pMultiplyStatus In synchronous mode, the status of the point 25578ee8d1cSJulian Grajkowski * multiplication and the verification when the 25678ee8d1cSJulian Grajkowski * pointVerify bit is set in the 25778ee8d1cSJulian Grajkowski * CpaCyEcdhPointMultiplyOpData structure. Set to 25878ee8d1cSJulian Grajkowski * CPA_FALSE if the point is NOT on the curve or 25978ee8d1cSJulian Grajkowski * at infinity. Set to CPA_TRUE if the point is 26078ee8d1cSJulian Grajkowski * on the curve. 26178ee8d1cSJulian Grajkowski * @param[out] pXk Pointer to x coordinate flat buffer. 26278ee8d1cSJulian Grajkowski * @param[out] pYk Pointer to y coordinate flat buffer. 26378ee8d1cSJulian Grajkowski * 26478ee8d1cSJulian Grajkowski * @retval CPA_STATUS_SUCCESS Function executed successfully. 26578ee8d1cSJulian Grajkowski * @retval CPA_STATUS_FAIL Function failed. 26678ee8d1cSJulian Grajkowski * @retval CPA_STATUS_RETRY Resubmit the request. 26778ee8d1cSJulian Grajkowski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in. 26878ee8d1cSJulian Grajkowski * @retval CPA_STATUS_RESOURCE Error related to system resources. 26978ee8d1cSJulian Grajkowski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 27078ee8d1cSJulian Grajkowski * the request. 27178ee8d1cSJulian Grajkowski * @retval CPA_STATUS_UNSUPPORTED Function is not supported. 27278ee8d1cSJulian Grajkowski * 27378ee8d1cSJulian Grajkowski * @pre 27478ee8d1cSJulian Grajkowski * The component has been initialized via cpaCyStartInstance function. 27578ee8d1cSJulian Grajkowski * @post 27678ee8d1cSJulian Grajkowski * None 27778ee8d1cSJulian Grajkowski * @note 27878ee8d1cSJulian Grajkowski * When pCb is non-NULL an asynchronous callback of type 27978ee8d1cSJulian Grajkowski * CpaCyEcdhPointMultiplyCbFunc is generated in response to this function 28078ee8d1cSJulian Grajkowski * call. 28178ee8d1cSJulian Grajkowski * For optimal performance, data pointers SHOULD be 8-byte aligned. 28278ee8d1cSJulian Grajkowski * 28378ee8d1cSJulian Grajkowski * @see 28478ee8d1cSJulian Grajkowski * CpaCyEcdhPointMultiplyOpData, 28578ee8d1cSJulian Grajkowski * CpaCyEcdhPointMultiplyCbFunc 28678ee8d1cSJulian Grajkowski * 28778ee8d1cSJulian Grajkowski *****************************************************************************/ 28878ee8d1cSJulian Grajkowski CpaStatus 28978ee8d1cSJulian Grajkowski cpaCyEcdhPointMultiply(const CpaInstanceHandle instanceHandle, 29078ee8d1cSJulian Grajkowski const CpaCyEcdhPointMultiplyCbFunc pCb, 29178ee8d1cSJulian Grajkowski void *pCallbackTag, 29278ee8d1cSJulian Grajkowski const CpaCyEcdhPointMultiplyOpData *pOpData, 29378ee8d1cSJulian Grajkowski CpaBoolean *pMultiplyStatus, 29478ee8d1cSJulian Grajkowski CpaFlatBuffer *pXk, 29578ee8d1cSJulian Grajkowski CpaFlatBuffer *pYk); 29678ee8d1cSJulian Grajkowski 29778ee8d1cSJulian Grajkowski /** 29878ee8d1cSJulian Grajkowski ***************************************************************************** 29978ee8d1cSJulian Grajkowski * @ingroup cpaCyEcdh 30078ee8d1cSJulian Grajkowski * Query statistics for a specific ECDH instance. 30178ee8d1cSJulian Grajkowski * 30278ee8d1cSJulian Grajkowski * @description 30378ee8d1cSJulian Grajkowski * This function will query a specific instance of the ECDH implementation 30478ee8d1cSJulian Grajkowski * for statistics. The user MUST allocate the CpaCyEcdhStats64 structure 30578ee8d1cSJulian Grajkowski * and pass the reference to that structure into this function call. This 30678ee8d1cSJulian Grajkowski * function writes the statistic results into the passed in 30778ee8d1cSJulian Grajkowski * CpaCyEcdhStats64 structure. 30878ee8d1cSJulian Grajkowski * 30978ee8d1cSJulian Grajkowski * Note: statistics returned by this function do not interrupt current data 31078ee8d1cSJulian Grajkowski * processing and as such can be slightly out of sync with operations that 31178ee8d1cSJulian Grajkowski * are in progress during the statistics retrieval process. 31278ee8d1cSJulian Grajkowski * 31378ee8d1cSJulian Grajkowski * @context 31478ee8d1cSJulian Grajkowski * This is a synchronous function and it can sleep. It MUST NOT be 31578ee8d1cSJulian Grajkowski * executed in a context that DOES NOT permit sleeping. 31678ee8d1cSJulian Grajkowski * @assumptions 31778ee8d1cSJulian Grajkowski * None 31878ee8d1cSJulian Grajkowski * @sideEffects 31978ee8d1cSJulian Grajkowski * None 32078ee8d1cSJulian Grajkowski * @blocking 32178ee8d1cSJulian Grajkowski * This function is synchronous and blocking. 32278ee8d1cSJulian Grajkowski * @reentrant 32378ee8d1cSJulian Grajkowski * No 32478ee8d1cSJulian Grajkowski * @threadSafe 32578ee8d1cSJulian Grajkowski * Yes 32678ee8d1cSJulian Grajkowski * 32778ee8d1cSJulian Grajkowski * @param[in] instanceHandle Instance handle. 32878ee8d1cSJulian Grajkowski * @param[out] pEcdhStats Pointer to memory into which the statistics 32978ee8d1cSJulian Grajkowski * will be written. 33078ee8d1cSJulian Grajkowski * 33178ee8d1cSJulian Grajkowski * @retval CPA_STATUS_SUCCESS Function executed successfully. 33278ee8d1cSJulian Grajkowski * @retval CPA_STATUS_FAIL Function failed. 33378ee8d1cSJulian Grajkowski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in. 33478ee8d1cSJulian Grajkowski * @retval CPA_STATUS_RESOURCE Error related to system resources. 33578ee8d1cSJulian Grajkowski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 33678ee8d1cSJulian Grajkowski * the request. 33778ee8d1cSJulian Grajkowski * @retval CPA_STATUS_UNSUPPORTED Function is not supported. 33878ee8d1cSJulian Grajkowski * 33978ee8d1cSJulian Grajkowski * @pre 34078ee8d1cSJulian Grajkowski * Component has been initialized. 34178ee8d1cSJulian Grajkowski * @post 34278ee8d1cSJulian Grajkowski * None 34378ee8d1cSJulian Grajkowski * @note 34478ee8d1cSJulian Grajkowski * This function operates in a synchronous manner and no asynchronous 34578ee8d1cSJulian Grajkowski * callback will be generated. 34678ee8d1cSJulian Grajkowski * @see 34778ee8d1cSJulian Grajkowski * CpaCyEcdhStats64 34878ee8d1cSJulian Grajkowski *****************************************************************************/ 34978ee8d1cSJulian Grajkowski CpaStatus 35078ee8d1cSJulian Grajkowski cpaCyEcdhQueryStats64(const CpaInstanceHandle instanceHandle, 35178ee8d1cSJulian Grajkowski CpaCyEcdhStats64 *pEcdhStats); 35278ee8d1cSJulian Grajkowski 35378ee8d1cSJulian Grajkowski #ifdef __cplusplus 35478ee8d1cSJulian Grajkowski } /* close the extern "C" { */ 35578ee8d1cSJulian Grajkowski #endif 35678ee8d1cSJulian Grajkowski 35778ee8d1cSJulian Grajkowski #endif /*CPA_CY_ECDH_H_*/ 358