1266b0663SKrzysztof Zdziarski /*************************************************************************** 2266b0663SKrzysztof Zdziarski * 3266b0663SKrzysztof Zdziarski * BSD LICENSE 4266b0663SKrzysztof Zdziarski * 5266b0663SKrzysztof Zdziarski * Copyright(c) 2007-2023 Intel Corporation. All rights reserved. 6266b0663SKrzysztof Zdziarski * All rights reserved. 7266b0663SKrzysztof Zdziarski * 8266b0663SKrzysztof Zdziarski * Redistribution and use in source and binary forms, with or without 9266b0663SKrzysztof Zdziarski * modification, are permitted provided that the following conditions 10266b0663SKrzysztof Zdziarski * are met: 11266b0663SKrzysztof Zdziarski * 12266b0663SKrzysztof Zdziarski * * Redistributions of source code must retain the above copyright 13266b0663SKrzysztof Zdziarski * notice, this list of conditions and the following disclaimer. 14266b0663SKrzysztof Zdziarski * * Redistributions in binary form must reproduce the above copyright 15266b0663SKrzysztof Zdziarski * notice, this list of conditions and the following disclaimer in 16266b0663SKrzysztof Zdziarski * the documentation and/or other materials provided with the 17266b0663SKrzysztof Zdziarski * distribution. 18266b0663SKrzysztof Zdziarski * * Neither the name of Intel Corporation nor the names of its 19266b0663SKrzysztof Zdziarski * contributors may be used to endorse or promote products derived 20266b0663SKrzysztof Zdziarski * from this software without specific prior written permission. 21266b0663SKrzysztof Zdziarski * 22266b0663SKrzysztof Zdziarski * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23266b0663SKrzysztof Zdziarski * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24266b0663SKrzysztof Zdziarski * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25266b0663SKrzysztof Zdziarski * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26266b0663SKrzysztof Zdziarski * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27266b0663SKrzysztof Zdziarski * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28266b0663SKrzysztof Zdziarski * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29266b0663SKrzysztof Zdziarski * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30266b0663SKrzysztof Zdziarski * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31266b0663SKrzysztof Zdziarski * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32266b0663SKrzysztof Zdziarski * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33266b0663SKrzysztof Zdziarski * 34266b0663SKrzysztof Zdziarski * 35266b0663SKrzysztof Zdziarski ***************************************************************************/ 36266b0663SKrzysztof Zdziarski 37266b0663SKrzysztof Zdziarski /* 38266b0663SKrzysztof Zdziarski ***************************************************************************** 39266b0663SKrzysztof Zdziarski * Doxygen group definitions 40266b0663SKrzysztof Zdziarski ****************************************************************************/ 41266b0663SKrzysztof Zdziarski 42266b0663SKrzysztof Zdziarski /** 43266b0663SKrzysztof Zdziarski ***************************************************************************** 44266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 45266b0663SKrzysztof Zdziarski * 46266b0663SKrzysztof Zdziarski * @defgroup cpaCyEcsm2 Elliptic Curve SM2 (ECSM2) API 47266b0663SKrzysztof Zdziarski * 48266b0663SKrzysztof Zdziarski * @ingroup cpaCy 49266b0663SKrzysztof Zdziarski * 50266b0663SKrzysztof Zdziarski * @description 51266b0663SKrzysztof Zdziarski * These functions specify the API for Public Key Encryption 52266b0663SKrzysztof Zdziarski * (Cryptography) SM2 operations. 53266b0663SKrzysztof Zdziarski * 54266b0663SKrzysztof Zdziarski * Chinese Public Key Algorithm based on Elliptic Curve Theory 55266b0663SKrzysztof Zdziarski * 56266b0663SKrzysztof Zdziarski * @note 57266b0663SKrzysztof Zdziarski * The naming, terms, and reference on SM2 elliptic curve, and their 58266b0663SKrzysztof Zdziarski * flow of algorithms inside this API header file are from the link 59266b0663SKrzysztof Zdziarski * below, please kindly refer to it for details. 60266b0663SKrzysztof Zdziarski * https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02 61266b0663SKrzysztof Zdziarski * 62266b0663SKrzysztof Zdziarski *****************************************************************************/ 63266b0663SKrzysztof Zdziarski 64266b0663SKrzysztof Zdziarski #ifndef CPA_CY_ECSM2_H_ 65266b0663SKrzysztof Zdziarski #define CPA_CY_ECSM2_H_ 66266b0663SKrzysztof Zdziarski 67266b0663SKrzysztof Zdziarski #ifdef __cplusplus 68266b0663SKrzysztof Zdziarski extern "C" { 69266b0663SKrzysztof Zdziarski #endif 70266b0663SKrzysztof Zdziarski 71266b0663SKrzysztof Zdziarski #include "cpa_cy_common.h" 72266b0663SKrzysztof Zdziarski #include "cpa_cy_ec.h" 73266b0663SKrzysztof Zdziarski 74266b0663SKrzysztof Zdziarski /** 75266b0663SKrzysztof Zdziarski ***************************************************************************** 76266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 77266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 78266b0663SKrzysztof Zdziarski * SM2 Encryption Operation Data. 79266b0663SKrzysztof Zdziarski * 80266b0663SKrzysztof Zdziarski * @description 81266b0663SKrzysztof Zdziarski * This structure contains the operation data for the cpaCyEcsm2Encrypt 82266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 83266b0663SKrzysztof Zdziarski * items pointed to by this structure. When the structure is passed into 84266b0663SKrzysztof Zdziarski * the function, ownership of the memory passes to the function. Ownership 85266b0663SKrzysztof Zdziarski * of the memory returns to the client when this structure is returned in 86266b0663SKrzysztof Zdziarski * the callback function. 87266b0663SKrzysztof Zdziarski * 88266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 89266b0663SKrzysztof Zdziarski * 90266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 91266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 92266b0663SKrzysztof Zdziarski * 93266b0663SKrzysztof Zdziarski * @note 94266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 95266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2Encrypt 96266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 97266b0663SKrzysztof Zdziarski * behavior will result. 98266b0663SKrzysztof Zdziarski * 99266b0663SKrzysztof Zdziarski * @see 100266b0663SKrzysztof Zdziarski * cpaCyEcsm2Encrypt() 101266b0663SKrzysztof Zdziarski * 102266b0663SKrzysztof Zdziarski *****************************************************************************/ 103266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2EncryptOpData { 104266b0663SKrzysztof Zdziarski CpaFlatBuffer k; 105266b0663SKrzysztof Zdziarski /**< scalar multiplier (k > 0 and k < n) */ 106266b0663SKrzysztof Zdziarski CpaFlatBuffer xP; 107266b0663SKrzysztof Zdziarski /**< x coordinate of public key */ 108266b0663SKrzysztof Zdziarski CpaFlatBuffer yP; 109266b0663SKrzysztof Zdziarski /**< y coordinate of public key */ 110266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 111266b0663SKrzysztof Zdziarski /**< field type for the operation */ 112266b0663SKrzysztof Zdziarski } CpaCyEcsm2EncryptOpData; 113266b0663SKrzysztof Zdziarski 114266b0663SKrzysztof Zdziarski /** 115266b0663SKrzysztof Zdziarski ***************************************************************************** 116266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 117266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 118266b0663SKrzysztof Zdziarski * SM2 Decryption Operation Data. 119266b0663SKrzysztof Zdziarski * 120266b0663SKrzysztof Zdziarski * @description 121266b0663SKrzysztof Zdziarski * This structure contains the operation data for the cpaCyEcsm2Decrypt 122266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 123266b0663SKrzysztof Zdziarski * items pointed to by this structure. When the structure is passed into 124266b0663SKrzysztof Zdziarski * the function, ownership of the memory passes to the function. Ownership 125266b0663SKrzysztof Zdziarski * of the memory returns to the client when this structure is returned in 126266b0663SKrzysztof Zdziarski * the callback function. 127266b0663SKrzysztof Zdziarski * 128266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 129266b0663SKrzysztof Zdziarski * 130266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 131266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 132266b0663SKrzysztof Zdziarski * 133266b0663SKrzysztof Zdziarski * @note 134266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 135266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2Decrypt 136266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 137266b0663SKrzysztof Zdziarski * 138266b0663SKrzysztof Zdziarski * @note 139266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 140266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2Decrypt 141266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 142266b0663SKrzysztof Zdziarski * behavior will result. 143266b0663SKrzysztof Zdziarski * 144266b0663SKrzysztof Zdziarski * @see 145266b0663SKrzysztof Zdziarski * cpaCyEcsm2Decrypt() 146266b0663SKrzysztof Zdziarski * 147266b0663SKrzysztof Zdziarski *****************************************************************************/ 148266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2DecryptOpData { 149266b0663SKrzysztof Zdziarski CpaFlatBuffer d; 150266b0663SKrzysztof Zdziarski /**< private key (d > 0 and d < n) */ 151266b0663SKrzysztof Zdziarski CpaFlatBuffer x1; 152266b0663SKrzysztof Zdziarski /**< x coordinate of [k]G */ 153266b0663SKrzysztof Zdziarski CpaFlatBuffer y1; 154266b0663SKrzysztof Zdziarski /**< y coordinate of [k]G */ 155266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 156266b0663SKrzysztof Zdziarski /**< field type for the operation */ 157266b0663SKrzysztof Zdziarski } CpaCyEcsm2DecryptOpData; 158266b0663SKrzysztof Zdziarski 159266b0663SKrzysztof Zdziarski /** 160266b0663SKrzysztof Zdziarski ***************************************************************************** 161266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 162266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 163266b0663SKrzysztof Zdziarski * SM2 Point Multiplication Operation Data. 164266b0663SKrzysztof Zdziarski * 165266b0663SKrzysztof Zdziarski * @description 166266b0663SKrzysztof Zdziarski * This structure contains the operation data for the cpaCyEcsm2PointMultiply 167266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 168266b0663SKrzysztof Zdziarski * items pointed to by this structure. When the structure is passed into 169266b0663SKrzysztof Zdziarski * the function, ownership of the memory passes to the function. Ownership 170266b0663SKrzysztof Zdziarski * of the memory returns to the client when this structure is returned in 171266b0663SKrzysztof Zdziarski * the callback function. 172266b0663SKrzysztof Zdziarski * 173266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 174266b0663SKrzysztof Zdziarski * 175266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 176266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 177266b0663SKrzysztof Zdziarski * 178266b0663SKrzysztof Zdziarski * @note 179266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 180266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2PointMultiply 181266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 182266b0663SKrzysztof Zdziarski * behavior will result. 183266b0663SKrzysztof Zdziarski * 184266b0663SKrzysztof Zdziarski * @see 185266b0663SKrzysztof Zdziarski * cpaCyEcsm2PointMultiply() 186266b0663SKrzysztof Zdziarski * 187266b0663SKrzysztof Zdziarski *****************************************************************************/ 188266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2PointMultiplyOpData { 189266b0663SKrzysztof Zdziarski CpaFlatBuffer k; 190266b0663SKrzysztof Zdziarski /**< scalar multiplier (k > 0 and k < n) */ 191266b0663SKrzysztof Zdziarski CpaFlatBuffer x; 192266b0663SKrzysztof Zdziarski /**< x coordinate of a point on the curve */ 193266b0663SKrzysztof Zdziarski CpaFlatBuffer y; 194266b0663SKrzysztof Zdziarski /**< y coordinate of a point on the curve */ 195266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 196266b0663SKrzysztof Zdziarski /**< field type for the operation */ 197266b0663SKrzysztof Zdziarski } CpaCyEcsm2PointMultiplyOpData; 198266b0663SKrzysztof Zdziarski 199266b0663SKrzysztof Zdziarski /** 200266b0663SKrzysztof Zdziarski ***************************************************************************** 201266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 202266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 203266b0663SKrzysztof Zdziarski * SM2 Generator Multiplication Operation Data. 204266b0663SKrzysztof Zdziarski * 205266b0663SKrzysztof Zdziarski * @description 206266b0663SKrzysztof Zdziarski * This structure contains the operation data for the 207266b0663SKrzysztof Zdziarski * cpaCyEcsm2GeneratorMultiply function. The client MUST allocate the 208266b0663SKrzysztof Zdziarski * memory for this structure and the items pointed to by this structure. 209266b0663SKrzysztof Zdziarski * When the structure is passed into the function, ownership of the 210266b0663SKrzysztof Zdziarski * memory passes to the function. Ownership of the memory returns to the 211266b0663SKrzysztof Zdziarski * client when this structure is returned in the callback function. 212266b0663SKrzysztof Zdziarski * 213266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 214266b0663SKrzysztof Zdziarski * 215266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 216266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 217266b0663SKrzysztof Zdziarski * 218266b0663SKrzysztof Zdziarski * @note 219266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 220266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2GeneratorMultiply 221266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 222266b0663SKrzysztof Zdziarski * behavior will result. 223266b0663SKrzysztof Zdziarski * 224266b0663SKrzysztof Zdziarski * @see 225266b0663SKrzysztof Zdziarski * cpaCyEcsm2GeneratorMultiply() 226266b0663SKrzysztof Zdziarski * 227266b0663SKrzysztof Zdziarski *****************************************************************************/ 228266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2GeneratorMultiplyOpData { 229266b0663SKrzysztof Zdziarski CpaFlatBuffer k; 230266b0663SKrzysztof Zdziarski /**< scalar multiplier (k > 0 and k < n) */ 231266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 232266b0663SKrzysztof Zdziarski /**< field type for the operation */ 233266b0663SKrzysztof Zdziarski } CpaCyEcsm2GeneratorMultiplyOpData; 234266b0663SKrzysztof Zdziarski 235266b0663SKrzysztof Zdziarski /** 236266b0663SKrzysztof Zdziarski ***************************************************************************** 237266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 238266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 239266b0663SKrzysztof Zdziarski * SM2 Point Verify Operation Data. 240266b0663SKrzysztof Zdziarski * 241266b0663SKrzysztof Zdziarski * @description 242266b0663SKrzysztof Zdziarski * This structure contains the operation data for the cpaCyEcsm2PointVerify 243266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 244266b0663SKrzysztof Zdziarski * items pointed to by this structure. When the structure is passed into 245266b0663SKrzysztof Zdziarski * the function, ownership of the memory passes to the function. Ownership 246266b0663SKrzysztof Zdziarski * of the memory returns to the client when this structure is returned in 247266b0663SKrzysztof Zdziarski * the callback function. 248266b0663SKrzysztof Zdziarski * 249266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 250266b0663SKrzysztof Zdziarski * 251266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 252266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 253266b0663SKrzysztof Zdziarski * 254266b0663SKrzysztof Zdziarski * @note 255266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 256266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2PointVerify 257266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 258266b0663SKrzysztof Zdziarski * behavior will result. 259266b0663SKrzysztof Zdziarski * 260266b0663SKrzysztof Zdziarski * @see 261266b0663SKrzysztof Zdziarski * cpaCyEcsm2PointVerify() 262266b0663SKrzysztof Zdziarski * 263266b0663SKrzysztof Zdziarski *****************************************************************************/ 264266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2PointVerifyOpData { 265266b0663SKrzysztof Zdziarski CpaFlatBuffer x; 266266b0663SKrzysztof Zdziarski /**< x coordinate of a point on the curve */ 267266b0663SKrzysztof Zdziarski CpaFlatBuffer y; 268266b0663SKrzysztof Zdziarski /**< y coordinate of a point on the curve */ 269266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 270266b0663SKrzysztof Zdziarski /**< field type for the operation */ 271266b0663SKrzysztof Zdziarski } CpaCyEcsm2PointVerifyOpData; 272266b0663SKrzysztof Zdziarski 273266b0663SKrzysztof Zdziarski /** 274266b0663SKrzysztof Zdziarski ***************************************************************************** 275266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 276266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 277266b0663SKrzysztof Zdziarski * SM2 Signature Operation Data. 278266b0663SKrzysztof Zdziarski * 279266b0663SKrzysztof Zdziarski * @description 280266b0663SKrzysztof Zdziarski * This structure contains the operation data for the cpaCyEcsm2Sign 281266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 282266b0663SKrzysztof Zdziarski * items pointed to by this structure. When the structure is passed into 283266b0663SKrzysztof Zdziarski * the function, ownership of the memory passes to the function. Ownership 284266b0663SKrzysztof Zdziarski * of the memory returns to the client when this structure is returned in 285266b0663SKrzysztof Zdziarski * the callback function. 286266b0663SKrzysztof Zdziarski * 287266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 288266b0663SKrzysztof Zdziarski * 289266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 290266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 291266b0663SKrzysztof Zdziarski * 292266b0663SKrzysztof Zdziarski * @note 293266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 294266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2Sign 295266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 296266b0663SKrzysztof Zdziarski * behavior will result. 297266b0663SKrzysztof Zdziarski * 298266b0663SKrzysztof Zdziarski * @see 299266b0663SKrzysztof Zdziarski * cpaCyEcsm2Sign() 300266b0663SKrzysztof Zdziarski * 301266b0663SKrzysztof Zdziarski *****************************************************************************/ 302266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2SignOpData { 303266b0663SKrzysztof Zdziarski CpaFlatBuffer k; 304266b0663SKrzysztof Zdziarski /**< scalar multiplier (k > 0 and k < n) */ 305266b0663SKrzysztof Zdziarski CpaFlatBuffer e; 306266b0663SKrzysztof Zdziarski /**< digest of the message */ 307266b0663SKrzysztof Zdziarski CpaFlatBuffer d; 308266b0663SKrzysztof Zdziarski /**< private key (d > 0 and d < n) */ 309266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 310266b0663SKrzysztof Zdziarski /**< field type for the operation */ 311266b0663SKrzysztof Zdziarski } CpaCyEcsm2SignOpData; 312266b0663SKrzysztof Zdziarski 313266b0663SKrzysztof Zdziarski /** 314266b0663SKrzysztof Zdziarski ***************************************************************************** 315266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 316266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 317266b0663SKrzysztof Zdziarski * SM2 Signature Verify Operation Data. 318266b0663SKrzysztof Zdziarski * 319266b0663SKrzysztof Zdziarski * @description 320266b0663SKrzysztof Zdziarski * This structure contains the operation data for the cpaCyEcsm2Verify 321266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 322266b0663SKrzysztof Zdziarski * items pointed to by this structure. When the structure is passed into 323266b0663SKrzysztof Zdziarski * the function, ownership of the memory passes to the function. Ownership 324266b0663SKrzysztof Zdziarski * of the memory returns to the client when this structure is returned in 325266b0663SKrzysztof Zdziarski * the callback function. 326266b0663SKrzysztof Zdziarski * 327266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 328266b0663SKrzysztof Zdziarski * 329266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 330266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 331266b0663SKrzysztof Zdziarski * 332266b0663SKrzysztof Zdziarski * @note 333266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 334266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2Verify 335266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 336266b0663SKrzysztof Zdziarski * behavior will result. 337266b0663SKrzysztof Zdziarski * 338266b0663SKrzysztof Zdziarski * @see 339266b0663SKrzysztof Zdziarski * cpaCyEcsm2Verify() 340266b0663SKrzysztof Zdziarski * 341266b0663SKrzysztof Zdziarski *****************************************************************************/ 342266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2VerifyOpData { 343266b0663SKrzysztof Zdziarski CpaFlatBuffer e; 344266b0663SKrzysztof Zdziarski /**< digest of the message */ 345266b0663SKrzysztof Zdziarski CpaFlatBuffer r; 346266b0663SKrzysztof Zdziarski /**< signature r */ 347266b0663SKrzysztof Zdziarski CpaFlatBuffer s; 348266b0663SKrzysztof Zdziarski /**< signature s */ 349266b0663SKrzysztof Zdziarski CpaFlatBuffer xP; 350266b0663SKrzysztof Zdziarski /**< x coordinate of public key */ 351266b0663SKrzysztof Zdziarski CpaFlatBuffer yP; 352266b0663SKrzysztof Zdziarski /**< y coordinate of public key */ 353266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 354266b0663SKrzysztof Zdziarski /**< field type for the operation */ 355266b0663SKrzysztof Zdziarski } CpaCyEcsm2VerifyOpData; 356266b0663SKrzysztof Zdziarski 357266b0663SKrzysztof Zdziarski /** 358266b0663SKrzysztof Zdziarski ***************************************************************************** 359266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 360266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 361266b0663SKrzysztof Zdziarski * SM2 Key Exchange Phase 1 Operation Data. 362266b0663SKrzysztof Zdziarski * 363266b0663SKrzysztof Zdziarski * @description 364266b0663SKrzysztof Zdziarski * This structure contains the operation data for the cpaCyEcsm2KeyExPhase1 365266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 366266b0663SKrzysztof Zdziarski * items pointed to by this structure. When the structure is passed into 367266b0663SKrzysztof Zdziarski * the function, ownership of the memory passes to the function. Ownership 368266b0663SKrzysztof Zdziarski * of the memory returns to the client when this structure is returned in 369266b0663SKrzysztof Zdziarski * the callback function. 370266b0663SKrzysztof Zdziarski * 371266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 372266b0663SKrzysztof Zdziarski * 373266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 374266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 375266b0663SKrzysztof Zdziarski * 376266b0663SKrzysztof Zdziarski * @note 377266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 378266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2KeyExPhase1 379266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 380266b0663SKrzysztof Zdziarski * behavior will result. 381266b0663SKrzysztof Zdziarski * 382266b0663SKrzysztof Zdziarski * @see 383266b0663SKrzysztof Zdziarski * cpaCyEcsm2KeyExPhase1() 384266b0663SKrzysztof Zdziarski * 385266b0663SKrzysztof Zdziarski *****************************************************************************/ 386266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2KeyExPhase1OpData { 387266b0663SKrzysztof Zdziarski CpaFlatBuffer r; 388266b0663SKrzysztof Zdziarski /**< scalar multiplier (r > 0 and r < n) */ 389266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 390266b0663SKrzysztof Zdziarski /**< field type for the operation */ 391266b0663SKrzysztof Zdziarski } CpaCyEcsm2KeyExPhase1OpData; 392266b0663SKrzysztof Zdziarski 393266b0663SKrzysztof Zdziarski /** 394266b0663SKrzysztof Zdziarski ***************************************************************************** 395266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 396266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 397266b0663SKrzysztof Zdziarski * SM2 Key Exchange Phase 2 Operation Data. 398266b0663SKrzysztof Zdziarski * 399266b0663SKrzysztof Zdziarski * @description 400266b0663SKrzysztof Zdziarski * This structure contains the operation data for the cpaCyEcsm2KeyExPhase2 401266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 402266b0663SKrzysztof Zdziarski * items pointed to by this structure. When the structure is passed into 403266b0663SKrzysztof Zdziarski * the function, ownership of the memory passes to the function. Ownership 404266b0663SKrzysztof Zdziarski * of the memory returns to the client when this structure is returned in 405266b0663SKrzysztof Zdziarski * the callback function. 406266b0663SKrzysztof Zdziarski * 407266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 408266b0663SKrzysztof Zdziarski * 409266b0663SKrzysztof Zdziarski * All values in this structure are required to be in Most Significant Byte 410266b0663SKrzysztof Zdziarski * first order, e.g. a.pData[0] = MSB. 411266b0663SKrzysztof Zdziarski * 412266b0663SKrzysztof Zdziarski * @note 413266b0663SKrzysztof Zdziarski * If the client modifies or frees the memory referenced in this 414266b0663SKrzysztof Zdziarski * structure after it has been submitted to the cpaCyEcsm2KeyExPhase2 415266b0663SKrzysztof Zdziarski * function, and before it has been returned in the callback, undefined 416266b0663SKrzysztof Zdziarski * behavior will result. 417266b0663SKrzysztof Zdziarski * 418266b0663SKrzysztof Zdziarski * @see 419266b0663SKrzysztof Zdziarski * cpaCyEcsm2KeyExPhase2() 420266b0663SKrzysztof Zdziarski * 421266b0663SKrzysztof Zdziarski *****************************************************************************/ 422266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2KeyExPhase2OpData { 423266b0663SKrzysztof Zdziarski CpaFlatBuffer r; 424266b0663SKrzysztof Zdziarski /**< scalar multiplier (r > 0 and r < n) */ 425266b0663SKrzysztof Zdziarski CpaFlatBuffer d; 426266b0663SKrzysztof Zdziarski /**< private key (d > 0 and d < n) */ 427266b0663SKrzysztof Zdziarski CpaFlatBuffer x1; 428266b0663SKrzysztof Zdziarski /**< x coordinate of a point on the curve from other side */ 429266b0663SKrzysztof Zdziarski CpaFlatBuffer x2; 430266b0663SKrzysztof Zdziarski /**< x coordinate of a point on the curve from phase 1 */ 431266b0663SKrzysztof Zdziarski CpaFlatBuffer y2; 432266b0663SKrzysztof Zdziarski /**< y coordinate of a point on the curve from phase 1 */ 433266b0663SKrzysztof Zdziarski CpaFlatBuffer xP; 434266b0663SKrzysztof Zdziarski /**< x coordinate of public key from other side */ 435266b0663SKrzysztof Zdziarski CpaFlatBuffer yP; 436266b0663SKrzysztof Zdziarski /**< y coordinate of public key from other side */ 437266b0663SKrzysztof Zdziarski CpaCyEcFieldType fieldType; 438266b0663SKrzysztof Zdziarski /**< field type for the operation */ 439266b0663SKrzysztof Zdziarski } CpaCyEcsm2KeyExPhase2OpData; 440266b0663SKrzysztof Zdziarski 441266b0663SKrzysztof Zdziarski /** 442266b0663SKrzysztof Zdziarski ***************************************************************************** 443266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 444266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 445266b0663SKrzysztof Zdziarski * SM2 Encryption Output Data. 446266b0663SKrzysztof Zdziarski * 447266b0663SKrzysztof Zdziarski * @description 448266b0663SKrzysztof Zdziarski * This structure contains the output data of the cpaCyEcsm2Encrypt 449266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 450266b0663SKrzysztof Zdziarski * items pointed to by this structure. 451266b0663SKrzysztof Zdziarski * 452266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 453266b0663SKrzysztof Zdziarski * 454266b0663SKrzysztof Zdziarski * @see 455266b0663SKrzysztof Zdziarski * cpaCyEcsm2Encrypt() 456266b0663SKrzysztof Zdziarski * 457266b0663SKrzysztof Zdziarski *****************************************************************************/ 458266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2EncryptOutputData { 459266b0663SKrzysztof Zdziarski CpaFlatBuffer x1; 460266b0663SKrzysztof Zdziarski /**< x coordinate of [k]G */ 461266b0663SKrzysztof Zdziarski CpaFlatBuffer y1; 462266b0663SKrzysztof Zdziarski /**< y coordinate of [k]G */ 463266b0663SKrzysztof Zdziarski CpaFlatBuffer x2; 464266b0663SKrzysztof Zdziarski /**< x coordinate of [k]Pb */ 465266b0663SKrzysztof Zdziarski CpaFlatBuffer y2; 466266b0663SKrzysztof Zdziarski /**< y coordinate of [k]Pb */ 467266b0663SKrzysztof Zdziarski } CpaCyEcsm2EncryptOutputData; 468266b0663SKrzysztof Zdziarski 469266b0663SKrzysztof Zdziarski /** 470266b0663SKrzysztof Zdziarski ***************************************************************************** 471266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 472266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 473266b0663SKrzysztof Zdziarski * SM2 Decryption Output Data. 474266b0663SKrzysztof Zdziarski * 475266b0663SKrzysztof Zdziarski * @description 476266b0663SKrzysztof Zdziarski * This structure contains the output data of the cpaCyEcsm2Decrypt 477266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 478266b0663SKrzysztof Zdziarski * items pointed to by this structure. 479266b0663SKrzysztof Zdziarski * 480266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 481266b0663SKrzysztof Zdziarski * 482266b0663SKrzysztof Zdziarski * @see 483266b0663SKrzysztof Zdziarski * cpaCyEcsm2Decrypt() 484266b0663SKrzysztof Zdziarski * 485266b0663SKrzysztof Zdziarski *****************************************************************************/ 486266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2DecryptOutputData { 487266b0663SKrzysztof Zdziarski CpaFlatBuffer x2; 488266b0663SKrzysztof Zdziarski /**< x coordinate of [k]Pb */ 489266b0663SKrzysztof Zdziarski CpaFlatBuffer y2; 490266b0663SKrzysztof Zdziarski /**< y coordinate of [k]Pb */ 491266b0663SKrzysztof Zdziarski } CpaCyEcsm2DecryptOutputData; 492266b0663SKrzysztof Zdziarski 493266b0663SKrzysztof Zdziarski /** 494266b0663SKrzysztof Zdziarski ***************************************************************************** 495266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 496266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 497266b0663SKrzysztof Zdziarski * SM2 Key Exchange (Phase 1 & Phase 2) Output Data. 498266b0663SKrzysztof Zdziarski * 499266b0663SKrzysztof Zdziarski * @description 500266b0663SKrzysztof Zdziarski * This structure contains the output data of the key exchange(phase 1 & 2) 501266b0663SKrzysztof Zdziarski * function. The client MUST allocate the memory for this structure and the 502266b0663SKrzysztof Zdziarski * items pointed to by this structure. 503266b0663SKrzysztof Zdziarski * 504266b0663SKrzysztof Zdziarski * For optimal performance all data buffers SHOULD be 8-byte aligned. 505266b0663SKrzysztof Zdziarski * 506266b0663SKrzysztof Zdziarski * @see 507266b0663SKrzysztof Zdziarski * cpaCyEcsm2KeyExPhase1(),cpaCyEcsm2KeyExPhase2() 508266b0663SKrzysztof Zdziarski * 509266b0663SKrzysztof Zdziarski *****************************************************************************/ 510266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2KeyExOutputData { 511266b0663SKrzysztof Zdziarski CpaFlatBuffer x; 512266b0663SKrzysztof Zdziarski /**< x coordinate of a point on the curve */ 513266b0663SKrzysztof Zdziarski CpaFlatBuffer y; 514266b0663SKrzysztof Zdziarski /**< y coordinate of a point on the curve */ 515266b0663SKrzysztof Zdziarski } CpaCyEcsm2KeyExOutputData; 516266b0663SKrzysztof Zdziarski 517266b0663SKrzysztof Zdziarski /** 518266b0663SKrzysztof Zdziarski ***************************************************************************** 519266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 520266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 521266b0663SKrzysztof Zdziarski * Cryptographic ECSM2 Statistics. 522266b0663SKrzysztof Zdziarski * @description 523266b0663SKrzysztof Zdziarski * This structure contains statistics on the Cryptographic ECSM2 524266b0663SKrzysztof Zdziarski * operations. Statistics are set to zero when the component is 525266b0663SKrzysztof Zdziarski * initialized, and are collected per instance. 526266b0663SKrzysztof Zdziarski * 527266b0663SKrzysztof Zdziarski ****************************************************************************/ 528266b0663SKrzysztof Zdziarski typedef struct _CpaCyEcsm2Stats64 { 529266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointMultiplyRequests; 530266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Multiplication operation requests. */ 531266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointMultiplyRequestErrors; 532266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Multiplication operation requests that 533266b0663SKrzysztof Zdziarski * had an error and could not be processed. */ 534266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointMultiplyCompleted; 535266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Multiplication operation requests that 536266b0663SKrzysztof Zdziarski * completed successfully. */ 537266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointMultiplyCompletedError; 538266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Multiplication operation requests that 539266b0663SKrzysztof Zdziarski * could not be completed successfully due to errors. */ 540266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointMultiplyCompletedOutputInvalid; 541266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Multiplication or Point Verify operation 542266b0663SKrzysztof Zdziarski * requests that could not be completed successfully due to an invalid 543266b0663SKrzysztof Zdziarski * output. Note that this does not indicate an error. */ 544266b0663SKrzysztof Zdziarski 545266b0663SKrzysztof Zdziarski Cpa64U numEcsm2GeneratorMultiplyRequests; 546266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Generator Multiplication operation requests. */ 547266b0663SKrzysztof Zdziarski Cpa64U numEcsm2GeneratorMultiplyRequestErrors; 548266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Generator Multiplication operation requests that 549266b0663SKrzysztof Zdziarski * had an error and could not be processed. */ 550266b0663SKrzysztof Zdziarski Cpa64U numEcsm2GeneratorMultiplyCompleted; 551266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Generator Multiplication operation requests that 552266b0663SKrzysztof Zdziarski * completed successfully. */ 553266b0663SKrzysztof Zdziarski Cpa64U numEcsm2GeneratorMultiplyCompletedError; 554266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Generator Multiplication operation requests that 555266b0663SKrzysztof Zdziarski * could not be completed successfully due to errors. */ 556266b0663SKrzysztof Zdziarski Cpa64U numEcsm2GeneratorMultiplyCompletedOutputInvalid; 557266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Generator Multiplication or Point Verify 558266b0663SKrzysztof Zdziarski * operation requests that could not be completed successfully due to an 559266b0663SKrzysztof Zdziarski * invalid output. Note that this does not indicate an error. */ 560266b0663SKrzysztof Zdziarski 561266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointVerifyRequests; 562266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Verify operation requests. */ 563266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointVerifyRequestErrors; 564266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Verify operation requests that had 565266b0663SKrzysztof Zdziarski * an error and could not be processed. */ 566266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointVerifyCompleted; 567266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Verify operation requests that 568266b0663SKrzysztof Zdziarski * completed successfully. */ 569266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointVerifyCompletedError; 570266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Verify operation requests that could 571266b0663SKrzysztof Zdziarski * not be completed successfully due to errors. */ 572266b0663SKrzysztof Zdziarski Cpa64U numEcsm2PointVerifyCompletedOutputInvalid; 573266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Verify operation 574266b0663SKrzysztof Zdziarski * requests that could not be completed successfully due to an invalid 575266b0663SKrzysztof Zdziarski * output. Note that this does not indicate an error. */ 576266b0663SKrzysztof Zdziarski 577266b0663SKrzysztof Zdziarski Cpa64U numEcsm2SignRequests; 578266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Sign operation requests. */ 579266b0663SKrzysztof Zdziarski Cpa64U numEcsm2SignRequestErrors; 580266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Sign operation requests that had an error 581266b0663SKrzysztof Zdziarski * and could not be processed. */ 582266b0663SKrzysztof Zdziarski Cpa64U numEcsm2SignCompleted; 583266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Sign operation requests that completed 584266b0663SKrzysztof Zdziarski * successfully. */ 585266b0663SKrzysztof Zdziarski Cpa64U numEcsm2SignCompletedError; 586266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Sign operation requests that could 587266b0663SKrzysztof Zdziarski * not be completed successfully due to errors. */ 588266b0663SKrzysztof Zdziarski Cpa64U numEcsm2SignCompletedOutputInvalid; 589266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Sign operation 590266b0663SKrzysztof Zdziarski * requests that could not be completed successfully due to an invalid 591266b0663SKrzysztof Zdziarski * output. Note that this does not indicate an error. */ 592266b0663SKrzysztof Zdziarski 593266b0663SKrzysztof Zdziarski Cpa64U numEcsm2VerifyRequests; 594266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Verify operation requests. */ 595266b0663SKrzysztof Zdziarski Cpa64U numEcsm2VerifyRequestErrors; 596266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Verify operation requests that had an error 597266b0663SKrzysztof Zdziarski * and could not be processed. */ 598266b0663SKrzysztof Zdziarski Cpa64U numEcsm2VerifyCompleted; 599266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Verify operation requests that completed 600266b0663SKrzysztof Zdziarski * successfully. */ 601266b0663SKrzysztof Zdziarski Cpa64U numEcsm2VerifyCompletedError; 602266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Verify operation requests that could 603266b0663SKrzysztof Zdziarski * not be completed successfully due to errors. */ 604266b0663SKrzysztof Zdziarski Cpa64U numEcsm2VerifyCompletedOutputInvalid; 605266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Verify operation 606266b0663SKrzysztof Zdziarski * requests that could not be completed successfully due to an invalid 607266b0663SKrzysztof Zdziarski * output. Note that this does not indicate an error. */ 608266b0663SKrzysztof Zdziarski 609266b0663SKrzysztof Zdziarski Cpa64U numEcsm2EncryptRequests; 610266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Encryption requests. */ 611266b0663SKrzysztof Zdziarski Cpa64U numEcsm2EncryptRequestErrors; 612266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Encryption requests that had 613266b0663SKrzysztof Zdziarski * an error and could not be processed. */ 614266b0663SKrzysztof Zdziarski Cpa64U numEcsm2EncryptCompleted; 615266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Encryption operation requests that 616266b0663SKrzysztof Zdziarski * completed successfully. */ 617266b0663SKrzysztof Zdziarski Cpa64U numEcsm2EncryptCompletedError; 618266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Encryption operation requests that could 619266b0663SKrzysztof Zdziarski * not be completed successfully due to errors. */ 620266b0663SKrzysztof Zdziarski Cpa64U numEcsm2EncryptCompletedOutputInvalid; 621266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Encryption operation 622266b0663SKrzysztof Zdziarski * requests that could not be completed successfully due to an invalid 623266b0663SKrzysztof Zdziarski * output. Note that this does not indicate an error. */ 624266b0663SKrzysztof Zdziarski 625266b0663SKrzysztof Zdziarski Cpa64U numEcsm2DecryptRequests; 626266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Decryption operation requests. */ 627266b0663SKrzysztof Zdziarski Cpa64U numEcsm2DecryptRequestErrors; 628266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Point Decryption requests that had 629266b0663SKrzysztof Zdziarski * an error and could not be processed. */ 630266b0663SKrzysztof Zdziarski Cpa64U numEcsm2DecryptCompleted; 631266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Decryption operation requests that 632266b0663SKrzysztof Zdziarski * completed successfully. */ 633266b0663SKrzysztof Zdziarski Cpa64U numEcsm2DecryptCompletedError; 634266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Decryption operation requests that could 635266b0663SKrzysztof Zdziarski * not be completed successfully due to errors. */ 636266b0663SKrzysztof Zdziarski Cpa64U numEcsm2DecryptCompletedOutputInvalid; 637266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Decryption operation 638266b0663SKrzysztof Zdziarski * requests that could not be completed successfully due to an invalid 639266b0663SKrzysztof Zdziarski * output. Note that this does not indicate an error. */ 640266b0663SKrzysztof Zdziarski 641266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase1Requests; 642266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase1 operation requests. */ 643266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase1RequestErrors; 644266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase1 operation requests that 645266b0663SKrzysztof Zdziarski * had an error and could not be processed. */ 646266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase1Completed; 647266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase1 operation requests that 648266b0663SKrzysztof Zdziarski * completed successfully. */ 649266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase1CompletedError; 650266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase1 operation requests that 651266b0663SKrzysztof Zdziarski * could not be completed successfully due to errors. */ 652266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase1CompletedOutputInvalid; 653266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase1 operation 654266b0663SKrzysztof Zdziarski * requests that could not be completed successfully due to an invalid 655266b0663SKrzysztof Zdziarski * output. Note that this does not indicate an error. */ 656266b0663SKrzysztof Zdziarski 657266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase2Requests; 658266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase2 operation requests. */ 659266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase2RequestErrors; 660266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase2 operation requests that 661266b0663SKrzysztof Zdziarski * had an error and could not be processed. */ 662266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase2Completed; 663266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase2 operation requests that 664266b0663SKrzysztof Zdziarski * completed successfully. */ 665266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase2CompletedError; 666266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase2 operation requests that 667266b0663SKrzysztof Zdziarski * could not be completed successfully due to errors. */ 668266b0663SKrzysztof Zdziarski Cpa64U numEcsm2KeyExPhase2CompletedOutputInvalid; 669266b0663SKrzysztof Zdziarski /**< Total number of ECSM2 Key Exchange Phase2 operation 670266b0663SKrzysztof Zdziarski * requests that could not be completed successfully due to an invalid 671266b0663SKrzysztof Zdziarski * output. Note that this does not indicate an error. */ 672266b0663SKrzysztof Zdziarski } CpaCyEcsm2Stats64; 673266b0663SKrzysztof Zdziarski 674266b0663SKrzysztof Zdziarski /** 675266b0663SKrzysztof Zdziarski ***************************************************************************** 676266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 677266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 678266b0663SKrzysztof Zdziarski * Definition of callback function invoked for cpaCyEcsm2Sign 679266b0663SKrzysztof Zdziarski * requests. 680266b0663SKrzysztof Zdziarski * 681266b0663SKrzysztof Zdziarski * @description 682266b0663SKrzysztof Zdziarski * This is the callback function for: 683266b0663SKrzysztof Zdziarski * cpaCyEcsm2Sign 684266b0663SKrzysztof Zdziarski * 685266b0663SKrzysztof Zdziarski * @context 686266b0663SKrzysztof Zdziarski * This callback function can be executed in a context that DOES NOT 687266b0663SKrzysztof Zdziarski * permit sleeping to occur. 688266b0663SKrzysztof Zdziarski * @assumptions 689266b0663SKrzysztof Zdziarski * None 690266b0663SKrzysztof Zdziarski * @sideEffects 691266b0663SKrzysztof Zdziarski * None 692266b0663SKrzysztof Zdziarski * @reentrant 693266b0663SKrzysztof Zdziarski * No 694266b0663SKrzysztof Zdziarski * @threadSafe 695266b0663SKrzysztof Zdziarski * Yes 696266b0663SKrzysztof Zdziarski * 697266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 698266b0663SKrzysztof Zdziarski * @param[in] status Status of the operation. Valid values are 699266b0663SKrzysztof Zdziarski * CPA_STATUS_SUCCESS and CPA_STATUS_FAIL. 700266b0663SKrzysztof Zdziarski * @param[in] pOpData A pointer to Operation data supplied in 701266b0663SKrzysztof Zdziarski * request. 702266b0663SKrzysztof Zdziarski * @param[in] pass Indicate whether pOut is valid or not. 703266b0663SKrzysztof Zdziarski * CPA_TRUE == pass, pOut is valid 704266b0663SKrzysztof Zdziarski * CPA_FALSE == pass, pOut is invalid 705266b0663SKrzysztof Zdziarski * @param[in] pR Ecsm2 message signature r. 706266b0663SKrzysztof Zdziarski * @param[in] pS Ecsm2 message signature s. 707266b0663SKrzysztof Zdziarski * 708266b0663SKrzysztof Zdziarski * @retval 709266b0663SKrzysztof Zdziarski * None 710266b0663SKrzysztof Zdziarski * @pre 711266b0663SKrzysztof Zdziarski * Component has been initialized. 712266b0663SKrzysztof Zdziarski * @post 713266b0663SKrzysztof Zdziarski * None 714266b0663SKrzysztof Zdziarski * @note 715266b0663SKrzysztof Zdziarski * None 716266b0663SKrzysztof Zdziarski * @see 717266b0663SKrzysztof Zdziarski * cpaCyEcsm2GeneratorMultiply() 718266b0663SKrzysztof Zdziarski * 719266b0663SKrzysztof Zdziarski *****************************************************************************/ 720266b0663SKrzysztof Zdziarski typedef void (*CpaCyEcsm2SignCbFunc)(void *pCallbackTag, 721266b0663SKrzysztof Zdziarski CpaStatus status, 722266b0663SKrzysztof Zdziarski void *pOpData, 723266b0663SKrzysztof Zdziarski CpaBoolean pass, 724266b0663SKrzysztof Zdziarski CpaFlatBuffer *pR, 725266b0663SKrzysztof Zdziarski CpaFlatBuffer *pS); 726266b0663SKrzysztof Zdziarski 727266b0663SKrzysztof Zdziarski /** 728266b0663SKrzysztof Zdziarski ***************************************************************************** 729266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 730266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 731266b0663SKrzysztof Zdziarski * Definition of callback function invoked for cpaCyEcsm2Verify requests. 732266b0663SKrzysztof Zdziarski * 733266b0663SKrzysztof Zdziarski * @description 734266b0663SKrzysztof Zdziarski * This is the prototype for the CpaCyEcsm2VerifyCbFunc callback function. 735266b0663SKrzysztof Zdziarski * 736266b0663SKrzysztof Zdziarski * @context 737266b0663SKrzysztof Zdziarski * This callback function can be executed in a context that DOES NOT 738266b0663SKrzysztof Zdziarski * permit sleeping to occur. 739266b0663SKrzysztof Zdziarski * @assumptions 740266b0663SKrzysztof Zdziarski * None 741266b0663SKrzysztof Zdziarski * @sideEffects 742266b0663SKrzysztof Zdziarski * None 743266b0663SKrzysztof Zdziarski * @reentrant 744266b0663SKrzysztof Zdziarski * No 745266b0663SKrzysztof Zdziarski * @threadSafe 746266b0663SKrzysztof Zdziarski * Yes 747266b0663SKrzysztof Zdziarski * 748266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 749266b0663SKrzysztof Zdziarski * @param[in] status Status of the operation. Valid values are 750266b0663SKrzysztof Zdziarski * CPA_STATUS_SUCCESS and CPA_STATUS_FAIL. 751266b0663SKrzysztof Zdziarski * @param[in] pOpData Operation data pointer supplied in request. 752266b0663SKrzysztof Zdziarski * @param[in] verifyStatus The verification status. 753266b0663SKrzysztof Zdziarski * 754266b0663SKrzysztof Zdziarski * @retval 755266b0663SKrzysztof Zdziarski * None 756266b0663SKrzysztof Zdziarski * @pre 757266b0663SKrzysztof Zdziarski * Component has been initialized. 758266b0663SKrzysztof Zdziarski * @post 759266b0663SKrzysztof Zdziarski * None 760266b0663SKrzysztof Zdziarski * @note 761266b0663SKrzysztof Zdziarski * None 762266b0663SKrzysztof Zdziarski * @see 763266b0663SKrzysztof Zdziarski * cpaCyEcsm2Verify() 764266b0663SKrzysztof Zdziarski * 765266b0663SKrzysztof Zdziarski *****************************************************************************/ 766266b0663SKrzysztof Zdziarski typedef void (*CpaCyEcsm2VerifyCbFunc)(void *pCallbackTag, 767266b0663SKrzysztof Zdziarski CpaStatus status, 768266b0663SKrzysztof Zdziarski void *pOpData, 769266b0663SKrzysztof Zdziarski CpaBoolean verifyStatus); 770266b0663SKrzysztof Zdziarski 771266b0663SKrzysztof Zdziarski /** 772266b0663SKrzysztof Zdziarski ***************************************************************************** 773266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 774266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 775266b0663SKrzysztof Zdziarski * Perform SM2 Point Multiplication. 776266b0663SKrzysztof Zdziarski * 777266b0663SKrzysztof Zdziarski * @description 778266b0663SKrzysztof Zdziarski * This function performs SM2 Point Multiplication, multiply 779266b0663SKrzysztof Zdziarski * a point (P) by k (scalar) ([k]P). 780266b0663SKrzysztof Zdziarski * 781266b0663SKrzysztof Zdziarski * @context 782266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 783266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 784266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 785266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 786266b0663SKrzysztof Zdziarski * @assumptions 787266b0663SKrzysztof Zdziarski * None 788266b0663SKrzysztof Zdziarski * @sideEffects 789266b0663SKrzysztof Zdziarski * None 790266b0663SKrzysztof Zdziarski * @blocking 791266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 792266b0663SKrzysztof Zdziarski * @reentrant 793266b0663SKrzysztof Zdziarski * No 794266b0663SKrzysztof Zdziarski * @threadSafe 795266b0663SKrzysztof Zdziarski * Yes 796266b0663SKrzysztof Zdziarski * 797266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 798266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 799266b0663SKrzysztof Zdziarski * a NULL value the function will operate 800266b0663SKrzysztof Zdziarski * synchronously. 801266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 802266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 803266b0663SKrzysztof Zdziarski * perform the operation. The client code 804266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 805266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 806266b0663SKrzysztof Zdziarski * it is returned in the callback. 807266b0663SKrzysztof Zdziarski * @param[out] pMultiplyStatus Multiply status 808266b0663SKrzysztof Zdziarski * CPA_TRUE == pOutputData is valid 809266b0663SKrzysztof Zdziarski * CPA_FALSE == pOutputData is invalid 810266b0663SKrzysztof Zdziarski * @param[out] pXk x coordinate of the resulting point 811266b0663SKrzysztof Zdziarski * multiplication 812266b0663SKrzysztof Zdziarski * @param[out] pYk y coordinate of the resulting point 813266b0663SKrzysztof Zdziarski * multiplication 814266b0663SKrzysztof Zdziarski * 815266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 816266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 817266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 818266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 819266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 820266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 821266b0663SKrzysztof Zdziarski * the request. 822266b0663SKrzysztof Zdziarski * 823266b0663SKrzysztof Zdziarski * @pre 824266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 825266b0663SKrzysztof Zdziarski * @post 826266b0663SKrzysztof Zdziarski * None 827266b0663SKrzysztof Zdziarski * @note 828266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 829266b0663SKrzysztof Zdziarski * CpaCyEcsm2PointMultiplyCbFunc is generated in response to this function call. 830266b0663SKrzysztof Zdziarski * For optimal performance, data pointers SHOULD be 8-byte aligned. 831266b0663SKrzysztof Zdziarski * 832266b0663SKrzysztof Zdziarski * @see 833266b0663SKrzysztof Zdziarski * CpaCyEcsm2PointMultiplyOpData, 834266b0663SKrzysztof Zdziarski * CpaCyEcPointMultiplyCbFunc 835266b0663SKrzysztof Zdziarski * 836266b0663SKrzysztof Zdziarski *****************************************************************************/ 837266b0663SKrzysztof Zdziarski CpaStatus 838266b0663SKrzysztof Zdziarski cpaCyEcsm2PointMultiply(const CpaInstanceHandle instanceHandle, 839266b0663SKrzysztof Zdziarski const CpaCyEcPointMultiplyCbFunc pCb, 840266b0663SKrzysztof Zdziarski void *pCallbackTag, 841266b0663SKrzysztof Zdziarski const CpaCyEcsm2PointMultiplyOpData *pOpData, 842266b0663SKrzysztof Zdziarski CpaBoolean *pMultiplyStatus, 843266b0663SKrzysztof Zdziarski CpaFlatBuffer *pXk, 844266b0663SKrzysztof Zdziarski CpaFlatBuffer *pYk); 845266b0663SKrzysztof Zdziarski 846266b0663SKrzysztof Zdziarski /** 847266b0663SKrzysztof Zdziarski ***************************************************************************** 848266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 849266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 850266b0663SKrzysztof Zdziarski * Perform SM2 Generator Multiplication. 851266b0663SKrzysztof Zdziarski * 852266b0663SKrzysztof Zdziarski * @description 853266b0663SKrzysztof Zdziarski * This function performs SM2 Generator Multiplication, multiply the 854266b0663SKrzysztof Zdziarski * generator point (G) by k (scalar) ([k]G). 855266b0663SKrzysztof Zdziarski * 856266b0663SKrzysztof Zdziarski * @context 857266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 858266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 859266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 860266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 861266b0663SKrzysztof Zdziarski * @assumptions 862266b0663SKrzysztof Zdziarski * None 863266b0663SKrzysztof Zdziarski * @sideEffects 864266b0663SKrzysztof Zdziarski * None 865266b0663SKrzysztof Zdziarski * @blocking 866266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 867266b0663SKrzysztof Zdziarski * @reentrant 868266b0663SKrzysztof Zdziarski * No 869266b0663SKrzysztof Zdziarski * @threadSafe 870266b0663SKrzysztof Zdziarski * Yes 871266b0663SKrzysztof Zdziarski * 872266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 873266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 874266b0663SKrzysztof Zdziarski * a NULL value the function will operate 875266b0663SKrzysztof Zdziarski * synchronously. 876266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 877266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 878266b0663SKrzysztof Zdziarski * perform the operation. The client code 879266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 880266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 881266b0663SKrzysztof Zdziarski * it is returned in the callback. 882266b0663SKrzysztof Zdziarski * @param[out] pMultiplyStatus Multiply status 883266b0663SKrzysztof Zdziarski * CPA_TRUE == pOutputData is valid 884266b0663SKrzysztof Zdziarski * CPA_FALSE == pOutputData is invalid 885266b0663SKrzysztof Zdziarski * @param[out] pXk x coordinate of the resulting point 886266b0663SKrzysztof Zdziarski * multiplication 887266b0663SKrzysztof Zdziarski * @param[out] pYk y coordinate of the resulting point 888266b0663SKrzysztof Zdziarski * multiplication 889266b0663SKrzysztof Zdziarski * 890266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 891266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 892266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 893266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 894266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 895266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 896266b0663SKrzysztof Zdziarski * the request. 897266b0663SKrzysztof Zdziarski * 898266b0663SKrzysztof Zdziarski * @pre 899266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 900266b0663SKrzysztof Zdziarski * @post 901266b0663SKrzysztof Zdziarski * None 902266b0663SKrzysztof Zdziarski * @note 903266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 904266b0663SKrzysztof Zdziarski * CpaCyEcPointMultiplyCbFunc is generated in response to this function 905266b0663SKrzysztof Zdziarski * call. For optimal performance, data pointers SHOULD be 8-byte aligned. 906266b0663SKrzysztof Zdziarski * 907266b0663SKrzysztof Zdziarski * @see 908266b0663SKrzysztof Zdziarski * CpaCyEcsm2GeneratorMultiplyOpData, 909266b0663SKrzysztof Zdziarski * CpaCyEcPointMultiplyCbFunc 910266b0663SKrzysztof Zdziarski * 911266b0663SKrzysztof Zdziarski *****************************************************************************/ 912266b0663SKrzysztof Zdziarski CpaStatus 913266b0663SKrzysztof Zdziarski cpaCyEcsm2GeneratorMultiply(const CpaInstanceHandle instanceHandle, 914266b0663SKrzysztof Zdziarski const CpaCyEcPointMultiplyCbFunc pCb, 915266b0663SKrzysztof Zdziarski void *pCallbackTag, 916266b0663SKrzysztof Zdziarski const CpaCyEcsm2GeneratorMultiplyOpData *pOpData, 917266b0663SKrzysztof Zdziarski CpaBoolean *pMultiplyStatus, 918266b0663SKrzysztof Zdziarski CpaFlatBuffer *pXk, 919266b0663SKrzysztof Zdziarski CpaFlatBuffer *pYk); 920266b0663SKrzysztof Zdziarski 921266b0663SKrzysztof Zdziarski /** 922266b0663SKrzysztof Zdziarski ***************************************************************************** 923266b0663SKrzysztof Zdziarski * @file cpa_cy_ec.h 924266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 925266b0663SKrzysztof Zdziarski * Perform SM2 Point Verify. 926266b0663SKrzysztof Zdziarski * 927266b0663SKrzysztof Zdziarski * @description 928266b0663SKrzysztof Zdziarski * This function performs SM2 Point Verify, to check if the input point 929266b0663SKrzysztof Zdziarski * on the curve or not. 930266b0663SKrzysztof Zdziarski * 931266b0663SKrzysztof Zdziarski * @context 932266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 933266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 934266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 935266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 936266b0663SKrzysztof Zdziarski * @assumptions 937266b0663SKrzysztof Zdziarski * None 938266b0663SKrzysztof Zdziarski * @sideEffects 939266b0663SKrzysztof Zdziarski * None 940266b0663SKrzysztof Zdziarski * @blocking 941266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 942266b0663SKrzysztof Zdziarski * @reentrant 943266b0663SKrzysztof Zdziarski * No 944266b0663SKrzysztof Zdziarski * @threadSafe 945266b0663SKrzysztof Zdziarski * Yes 946266b0663SKrzysztof Zdziarski * 947266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 948266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 949266b0663SKrzysztof Zdziarski * a NULL value the function will operate 950266b0663SKrzysztof Zdziarski * synchronously. 951266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 952266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 953266b0663SKrzysztof Zdziarski * perform the operation. The client code 954266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 955266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 956266b0663SKrzysztof Zdziarski * it is returned in the callback. 957266b0663SKrzysztof Zdziarski * @param[out] pVerifyStatus Verification status 958266b0663SKrzysztof Zdziarski * CPA_TRUE == verify pass 959266b0663SKrzysztof Zdziarski * CPA_FALSE == verify fail 960266b0663SKrzysztof Zdziarski * 961266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 962266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 963266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 964266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 965266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 966266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 967266b0663SKrzysztof Zdziarski * the request. 968266b0663SKrzysztof Zdziarski * 969266b0663SKrzysztof Zdziarski * @pre 970266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 971266b0663SKrzysztof Zdziarski * @post 972266b0663SKrzysztof Zdziarski * None 973266b0663SKrzysztof Zdziarski * @note 974266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 975266b0663SKrzysztof Zdziarski * CpaCyEcsm2VerifyCbFunc is generated in response to this function call. 976266b0663SKrzysztof Zdziarski * For optimal performance, data pointers SHOULD be 8-byte aligned. 977266b0663SKrzysztof Zdziarski * 978266b0663SKrzysztof Zdziarski * @see 979266b0663SKrzysztof Zdziarski * CpaCyEcsm2PointVerifyOpData, 980266b0663SKrzysztof Zdziarski * CpaCyEcPointVerifyCbFunc 981266b0663SKrzysztof Zdziarski * 982266b0663SKrzysztof Zdziarski *****************************************************************************/ 983266b0663SKrzysztof Zdziarski CpaStatus 984266b0663SKrzysztof Zdziarski cpaCyEcsm2PointVerify(const CpaInstanceHandle instanceHandle, 985266b0663SKrzysztof Zdziarski const CpaCyEcPointVerifyCbFunc pCb, 986266b0663SKrzysztof Zdziarski void *pCallbackTag, 987266b0663SKrzysztof Zdziarski const CpaCyEcsm2PointVerifyOpData *pOpData, 988266b0663SKrzysztof Zdziarski CpaBoolean *pVerifyStatus); 989266b0663SKrzysztof Zdziarski 990266b0663SKrzysztof Zdziarski /** 991266b0663SKrzysztof Zdziarski ***************************************************************************** 992266b0663SKrzysztof Zdziarski * @file cpa_cy_ec.h 993266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 994266b0663SKrzysztof Zdziarski * Perform SM2 Signature (Step A4 to A7). 995266b0663SKrzysztof Zdziarski * 996266b0663SKrzysztof Zdziarski * @description 997266b0663SKrzysztof Zdziarski * This function implements step A4 to A7 (in Section 5.2 in "Generation 998266b0663SKrzysztof Zdziarski * of Signature" Part 1). 999266b0663SKrzysztof Zdziarski * 1000266b0663SKrzysztof Zdziarski * @context 1001266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 1002266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 1003266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 1004266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 1005266b0663SKrzysztof Zdziarski * @assumptions 1006266b0663SKrzysztof Zdziarski * None 1007266b0663SKrzysztof Zdziarski * @sideEffects 1008266b0663SKrzysztof Zdziarski * None 1009266b0663SKrzysztof Zdziarski * @blocking 1010266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 1011266b0663SKrzysztof Zdziarski * @reentrant 1012266b0663SKrzysztof Zdziarski * No 1013266b0663SKrzysztof Zdziarski * @threadSafe 1014266b0663SKrzysztof Zdziarski * Yes 1015266b0663SKrzysztof Zdziarski * 1016266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 1017266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 1018266b0663SKrzysztof Zdziarski * a NULL value the function will operate 1019266b0663SKrzysztof Zdziarski * synchronously. 1020266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 1021266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 1022266b0663SKrzysztof Zdziarski * perform the operation. The client code 1023266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 1024266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 1025266b0663SKrzysztof Zdziarski * it is returned in the callback. 1026266b0663SKrzysztof Zdziarski * @param[out] pSignStatus Signature status 1027266b0663SKrzysztof Zdziarski * CPA_TRUE = pOutputData is valid 1028266b0663SKrzysztof Zdziarski * CPA_FALSE = pOutputData is invalid 1029266b0663SKrzysztof Zdziarski * @param[out] pR R output of the resulting signature operation 1030266b0663SKrzysztof Zdziarski * @param[out] pS S output of the resulting signature operation 1031266b0663SKrzysztof Zdziarski * 1032266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 1033266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 1034266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 1035266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 1036266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 1037266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 1038266b0663SKrzysztof Zdziarski * the request. 1039266b0663SKrzysztof Zdziarski * 1040266b0663SKrzysztof Zdziarski * @pre 1041266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 1042266b0663SKrzysztof Zdziarski * @post 1043266b0663SKrzysztof Zdziarski * None 1044266b0663SKrzysztof Zdziarski * @note 1045266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 1046266b0663SKrzysztof Zdziarski * CpaCyEcsm2SignCbFunc is generated in response to this function call. 1047266b0663SKrzysztof Zdziarski * For optimal performance, data pointers SHOULD be 8-byte aligned. 1048266b0663SKrzysztof Zdziarski * 1049266b0663SKrzysztof Zdziarski * @see 1050266b0663SKrzysztof Zdziarski * CpaCyEcsm2SignOpData, 1051266b0663SKrzysztof Zdziarski * CpaCyEcsm2SignCbFunc 1052266b0663SKrzysztof Zdziarski * 1053266b0663SKrzysztof Zdziarski *****************************************************************************/ 1054266b0663SKrzysztof Zdziarski CpaStatus 1055266b0663SKrzysztof Zdziarski cpaCyEcsm2Sign(const CpaInstanceHandle instanceHandle, 1056266b0663SKrzysztof Zdziarski const CpaCyEcsm2SignCbFunc pCb, 1057266b0663SKrzysztof Zdziarski void *pCallbackTag, 1058266b0663SKrzysztof Zdziarski const CpaCyEcsm2SignOpData *pOpData, 1059266b0663SKrzysztof Zdziarski CpaBoolean *pSignStatus, 1060266b0663SKrzysztof Zdziarski CpaFlatBuffer *pR, 1061266b0663SKrzysztof Zdziarski CpaFlatBuffer *pS); 1062266b0663SKrzysztof Zdziarski 1063266b0663SKrzysztof Zdziarski /** 1064266b0663SKrzysztof Zdziarski ***************************************************************************** 1065266b0663SKrzysztof Zdziarski * @file cpa_cy_ec.h 1066266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 1067266b0663SKrzysztof Zdziarski * Perform SM2 Signature Verify (Step B5 to B7). 1068266b0663SKrzysztof Zdziarski * 1069266b0663SKrzysztof Zdziarski * @description 1070266b0663SKrzysztof Zdziarski * This function implements step B5 to B7 (in Section 5.3 in "Verification 1071266b0663SKrzysztof Zdziarski * of Signature" Part 1). 1072266b0663SKrzysztof Zdziarski * 1073266b0663SKrzysztof Zdziarski * @context 1074266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 1075266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 1076266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 1077266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 1078266b0663SKrzysztof Zdziarski * @assumptions 1079266b0663SKrzysztof Zdziarski * None 1080266b0663SKrzysztof Zdziarski * @sideEffects 1081266b0663SKrzysztof Zdziarski * None 1082266b0663SKrzysztof Zdziarski * @blocking 1083266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 1084266b0663SKrzysztof Zdziarski * @reentrant 1085266b0663SKrzysztof Zdziarski * No 1086266b0663SKrzysztof Zdziarski * @threadSafe 1087266b0663SKrzysztof Zdziarski * Yes 1088266b0663SKrzysztof Zdziarski * 1089266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 1090266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 1091266b0663SKrzysztof Zdziarski * a NULL value the function will operate 1092266b0663SKrzysztof Zdziarski * synchronously. 1093266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 1094266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 1095266b0663SKrzysztof Zdziarski * perform the operation. The client code 1096266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 1097266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 1098266b0663SKrzysztof Zdziarski * it is returned in the callback. 1099266b0663SKrzysztof Zdziarski * @param[out] pVerifyStatus Status of the signature verification 1100266b0663SKrzysztof Zdziarski * CPA_TRUE == verify pass 1101266b0663SKrzysztof Zdziarski * CPA_FALSE == verify fail 1102266b0663SKrzysztof Zdziarski * 1103266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 1104266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 1105266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 1106266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 1107266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 1108266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 1109266b0663SKrzysztof Zdziarski * the request. 1110266b0663SKrzysztof Zdziarski * 1111266b0663SKrzysztof Zdziarski * @pre 1112266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 1113266b0663SKrzysztof Zdziarski * @post 1114266b0663SKrzysztof Zdziarski * None 1115266b0663SKrzysztof Zdziarski * @note 1116266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 1117266b0663SKrzysztof Zdziarski * CpaCyEcsm2VerifyCbFunc is generated in response to this function call. 1118266b0663SKrzysztof Zdziarski * For optimal performance, data pointers SHOULD be 8-byte aligned. 1119266b0663SKrzysztof Zdziarski * 1120266b0663SKrzysztof Zdziarski * @see 1121266b0663SKrzysztof Zdziarski * CpaCyEcsm2VerifyOpData, 1122266b0663SKrzysztof Zdziarski * CpaCyEcsm2VerifyCbFunc 1123266b0663SKrzysztof Zdziarski * 1124266b0663SKrzysztof Zdziarski *****************************************************************************/ 1125266b0663SKrzysztof Zdziarski CpaStatus 1126266b0663SKrzysztof Zdziarski cpaCyEcsm2Verify(const CpaInstanceHandle instanceHandle, 1127266b0663SKrzysztof Zdziarski const CpaCyEcsm2VerifyCbFunc pCb, 1128266b0663SKrzysztof Zdziarski void *pCallbackTag, 1129266b0663SKrzysztof Zdziarski const CpaCyEcsm2VerifyOpData *pOpData, 1130266b0663SKrzysztof Zdziarski CpaBoolean *pVerifyStatus); 1131266b0663SKrzysztof Zdziarski 1132266b0663SKrzysztof Zdziarski /** 1133266b0663SKrzysztof Zdziarski ***************************************************************************** 1134266b0663SKrzysztof Zdziarski * @file cpa_cy_ec.h 1135266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 1136266b0663SKrzysztof Zdziarski * Perform SM2 Encryption (Step A2 to A4). 1137266b0663SKrzysztof Zdziarski * 1138266b0663SKrzysztof Zdziarski * @description 1139266b0663SKrzysztof Zdziarski * This function implements step A2 to A4 (in Section 7.2 in 1140266b0663SKrzysztof Zdziarski * "Algorithm for Encryption and the Flow Chart" Part 1). 1141266b0663SKrzysztof Zdziarski * 1142266b0663SKrzysztof Zdziarski * @context 1143266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 1144266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 1145266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 1146266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 1147266b0663SKrzysztof Zdziarski * @assumptions 1148266b0663SKrzysztof Zdziarski * None 1149266b0663SKrzysztof Zdziarski * @sideEffects 1150266b0663SKrzysztof Zdziarski * None 1151266b0663SKrzysztof Zdziarski * @blocking 1152266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 1153266b0663SKrzysztof Zdziarski * @reentrant 1154266b0663SKrzysztof Zdziarski * No 1155266b0663SKrzysztof Zdziarski * @threadSafe 1156266b0663SKrzysztof Zdziarski * Yes 1157266b0663SKrzysztof Zdziarski * 1158266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 1159266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 1160266b0663SKrzysztof Zdziarski * a NULL value the function will operate 1161266b0663SKrzysztof Zdziarski * synchronously. 1162266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 1163266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 1164266b0663SKrzysztof Zdziarski * perform the operation. The client code 1165266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 1166266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 1167266b0663SKrzysztof Zdziarski * it is returned in the callback. 1168266b0663SKrzysztof Zdziarski * @param[out] pOutputData Ecrypted message 1169266b0663SKrzysztof Zdziarski * 1170266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 1171266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 1172266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 1173266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 1174266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 1175266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 1176266b0663SKrzysztof Zdziarski * the request. 1177266b0663SKrzysztof Zdziarski * 1178266b0663SKrzysztof Zdziarski * @pre 1179266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 1180266b0663SKrzysztof Zdziarski * @post 1181266b0663SKrzysztof Zdziarski * None 1182266b0663SKrzysztof Zdziarski * @note 1183266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 1184266b0663SKrzysztof Zdziarski * CpaCyGenFlatBufCbFunc is generated in response to this function call. 1185266b0663SKrzysztof Zdziarski * For optimal performance, data pointers SHOULD be 8-byte aligned. 1186266b0663SKrzysztof Zdziarski * 1187266b0663SKrzysztof Zdziarski * @see 1188266b0663SKrzysztof Zdziarski * CpaCyEcsm2EncryptOpData, 1189266b0663SKrzysztof Zdziarski * CpaCyEcsm2EncryptOutputData, 1190266b0663SKrzysztof Zdziarski * CpaCyGenFlatBufCbFunc 1191266b0663SKrzysztof Zdziarski * 1192266b0663SKrzysztof Zdziarski *****************************************************************************/ 1193266b0663SKrzysztof Zdziarski CpaStatus 1194266b0663SKrzysztof Zdziarski cpaCyEcsm2Encrypt(const CpaInstanceHandle instanceHandle, 1195266b0663SKrzysztof Zdziarski const CpaCyGenFlatBufCbFunc pCb, 1196266b0663SKrzysztof Zdziarski void *pCallbackTag, 1197266b0663SKrzysztof Zdziarski const CpaCyEcsm2EncryptOpData *pOpData, 1198266b0663SKrzysztof Zdziarski CpaCyEcsm2EncryptOutputData *pOutputData); 1199266b0663SKrzysztof Zdziarski 1200266b0663SKrzysztof Zdziarski /** 1201266b0663SKrzysztof Zdziarski ***************************************************************************** 1202266b0663SKrzysztof Zdziarski * @file cpa_cy_ec.h 1203266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 1204266b0663SKrzysztof Zdziarski * Perform SM2 Decryption (Step B1 to B3). 1205266b0663SKrzysztof Zdziarski * 1206266b0663SKrzysztof Zdziarski * @description 1207266b0663SKrzysztof Zdziarski * This function implements step B1 to B3 (in Section 7.3 in "Algorithm 1208266b0663SKrzysztof Zdziarski * for Decryption and the Flow Chart" Part 1). 1209266b0663SKrzysztof Zdziarski * 1210266b0663SKrzysztof Zdziarski * @context 1211266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 1212266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 1213266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 1214266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 1215266b0663SKrzysztof Zdziarski * @assumptions 1216266b0663SKrzysztof Zdziarski * None 1217266b0663SKrzysztof Zdziarski * @sideEffects 1218266b0663SKrzysztof Zdziarski * None 1219266b0663SKrzysztof Zdziarski * @blocking 1220266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 1221266b0663SKrzysztof Zdziarski * @reentrant 1222266b0663SKrzysztof Zdziarski * No 1223266b0663SKrzysztof Zdziarski * @threadSafe 1224266b0663SKrzysztof Zdziarski * Yes 1225266b0663SKrzysztof Zdziarski * 1226266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 1227266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 1228266b0663SKrzysztof Zdziarski * a NULL value the function will operate 1229266b0663SKrzysztof Zdziarski * synchronously. 1230266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 1231266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 1232266b0663SKrzysztof Zdziarski * perform the operation. The client code 1233266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 1234266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 1235266b0663SKrzysztof Zdziarski * it is returned in the callback. 1236266b0663SKrzysztof Zdziarski * @param[out] pOutputData Decrypted message 1237266b0663SKrzysztof Zdziarski * 1238266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 1239266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 1240266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 1241266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 1242266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 1243266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 1244266b0663SKrzysztof Zdziarski * the request. 1245266b0663SKrzysztof Zdziarski * 1246266b0663SKrzysztof Zdziarski * @pre 1247266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 1248266b0663SKrzysztof Zdziarski * @post 1249266b0663SKrzysztof Zdziarski * None 1250266b0663SKrzysztof Zdziarski * @note 1251266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 1252266b0663SKrzysztof Zdziarski * CpaCyGenFlatBufCbFunc is generated in response to this function call. 1253266b0663SKrzysztof Zdziarski * For optimal performance, data pointers SHOULD be 8-byte aligned. 1254266b0663SKrzysztof Zdziarski * 1255266b0663SKrzysztof Zdziarski * @see 1256266b0663SKrzysztof Zdziarski * CpaCyEcsm2DecryptOpData, 1257266b0663SKrzysztof Zdziarski * CpaCyEcsm2DecryptOutputData, 1258266b0663SKrzysztof Zdziarski * CpaCyGenFlatBufCbFunc 1259266b0663SKrzysztof Zdziarski * 1260266b0663SKrzysztof Zdziarski *****************************************************************************/ 1261266b0663SKrzysztof Zdziarski CpaStatus 1262266b0663SKrzysztof Zdziarski cpaCyEcsm2Decrypt(const CpaInstanceHandle instanceHandle, 1263266b0663SKrzysztof Zdziarski const CpaCyGenFlatBufCbFunc pCb, 1264266b0663SKrzysztof Zdziarski void *pCallbackTag, 1265266b0663SKrzysztof Zdziarski const CpaCyEcsm2DecryptOpData *pOpData, 1266266b0663SKrzysztof Zdziarski CpaCyEcsm2DecryptOutputData *pOutputData); 1267266b0663SKrzysztof Zdziarski 1268266b0663SKrzysztof Zdziarski /** 1269266b0663SKrzysztof Zdziarski ***************************************************************************** 1270266b0663SKrzysztof Zdziarski * @file cpa_cy_ec.h 1271266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 1272266b0663SKrzysztof Zdziarski * Perform SM2 Key Exchange Phase 1 (Step A2/B2). 1273266b0663SKrzysztof Zdziarski * 1274266b0663SKrzysztof Zdziarski * @description 1275266b0663SKrzysztof Zdziarski * This function implements step A2 (User A) or B2 (User B) 1276266b0663SKrzysztof Zdziarski * (in Section 6.2 in "Key Exchange Protocol and the Flow Chart" Part 1). 1277266b0663SKrzysztof Zdziarski * 1278266b0663SKrzysztof Zdziarski * @context 1279266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 1280266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 1281266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 1282266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 1283266b0663SKrzysztof Zdziarski * @assumptions 1284266b0663SKrzysztof Zdziarski * None 1285266b0663SKrzysztof Zdziarski * @sideEffects 1286266b0663SKrzysztof Zdziarski * None 1287266b0663SKrzysztof Zdziarski * @blocking 1288266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 1289266b0663SKrzysztof Zdziarski * @reentrant 1290266b0663SKrzysztof Zdziarski * No 1291266b0663SKrzysztof Zdziarski * @threadSafe 1292266b0663SKrzysztof Zdziarski * Yes 1293266b0663SKrzysztof Zdziarski * 1294266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 1295266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 1296266b0663SKrzysztof Zdziarski * a NULL value the function will operate 1297266b0663SKrzysztof Zdziarski * synchronously. 1298266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 1299266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 1300266b0663SKrzysztof Zdziarski * perform the operation. The client code 1301266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 1302266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 1303266b0663SKrzysztof Zdziarski * it is returned in the callback. 1304266b0663SKrzysztof Zdziarski * @param[out] pOutputData Output of key exchange phase 1 ([r]G) 1305266b0663SKrzysztof Zdziarski * 1306266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 1307266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 1308266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 1309266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 1310266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 1311266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 1312266b0663SKrzysztof Zdziarski * the request. 1313266b0663SKrzysztof Zdziarski * 1314266b0663SKrzysztof Zdziarski * @pre 1315266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 1316266b0663SKrzysztof Zdziarski * @post 1317266b0663SKrzysztof Zdziarski * None 1318266b0663SKrzysztof Zdziarski * @note 1319266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 1320266b0663SKrzysztof Zdziarski * CpaCyGenFlatBufCbFunc is generated in response to this function call. 1321266b0663SKrzysztof Zdziarski * For optimal performance, data pointers SHOULD be 8-byte aligned. 1322266b0663SKrzysztof Zdziarski * 1323266b0663SKrzysztof Zdziarski * @see 1324266b0663SKrzysztof Zdziarski * CpaCyEcsm2KeyExPhase1OpData, 1325266b0663SKrzysztof Zdziarski * CpaCyEcsm2KeyExOutputData, 1326266b0663SKrzysztof Zdziarski * CpaCyGenFlatBufCbFunc 1327266b0663SKrzysztof Zdziarski * 1328266b0663SKrzysztof Zdziarski *****************************************************************************/ 1329266b0663SKrzysztof Zdziarski CpaStatus 1330266b0663SKrzysztof Zdziarski cpaCyEcsm2KeyExPhase1(const CpaInstanceHandle instanceHandle, 1331266b0663SKrzysztof Zdziarski const CpaCyGenFlatBufCbFunc pCb, 1332266b0663SKrzysztof Zdziarski void *pCallbackTag, 1333266b0663SKrzysztof Zdziarski const CpaCyEcsm2KeyExPhase1OpData *pOpData, 1334266b0663SKrzysztof Zdziarski CpaCyEcsm2KeyExOutputData *pOutputData); 1335266b0663SKrzysztof Zdziarski /** 1336266b0663SKrzysztof Zdziarski ***************************************************************************** 1337266b0663SKrzysztof Zdziarski * @file cpa_cy_ec.h 1338266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 1339266b0663SKrzysztof Zdziarski * Perform SM2 Key Exchange Phase 2 (Step A4 to A7, B3 to B6). 1340266b0663SKrzysztof Zdziarski * 1341266b0663SKrzysztof Zdziarski * @description 1342266b0663SKrzysztof Zdziarski * This function implements steps A4 to A7(User A) or B3 to B6(User B) 1343266b0663SKrzysztof Zdziarski * (in Section 6.2 in "Key Exchange Protocol and the Flow Chart" Part 1). 1344266b0663SKrzysztof Zdziarski * 1345266b0663SKrzysztof Zdziarski * @context 1346266b0663SKrzysztof Zdziarski * When called as an asynchronous function it cannot sleep. It can be 1347266b0663SKrzysztof Zdziarski * executed in a context that does not permit sleeping. 1348266b0663SKrzysztof Zdziarski * When called as a synchronous function it may sleep. It MUST NOT be 1349266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 1350266b0663SKrzysztof Zdziarski * @assumptions 1351266b0663SKrzysztof Zdziarski * None 1352266b0663SKrzysztof Zdziarski * @sideEffects 1353266b0663SKrzysztof Zdziarski * None 1354266b0663SKrzysztof Zdziarski * @blocking 1355266b0663SKrzysztof Zdziarski * Yes when configured to operate in synchronous mode. 1356266b0663SKrzysztof Zdziarski * @reentrant 1357266b0663SKrzysztof Zdziarski * No 1358266b0663SKrzysztof Zdziarski * @threadSafe 1359266b0663SKrzysztof Zdziarski * Yes 1360266b0663SKrzysztof Zdziarski * 1361266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 1362266b0663SKrzysztof Zdziarski * @param[in] pCb Callback function pointer. If this is set to 1363266b0663SKrzysztof Zdziarski * a NULL value the function will operate 1364266b0663SKrzysztof Zdziarski * synchronously. 1365266b0663SKrzysztof Zdziarski * @param[in] pCallbackTag User-supplied value to help identify request. 1366266b0663SKrzysztof Zdziarski * @param[in] pOpData Structure containing all the data needed to 1367266b0663SKrzysztof Zdziarski * perform the operation. The client code 1368266b0663SKrzysztof Zdziarski * allocates the memory for this structure. This 1369266b0663SKrzysztof Zdziarski * component takes ownership of the memory until 1370266b0663SKrzysztof Zdziarski * it is returned in the callback. 1371266b0663SKrzysztof Zdziarski * @param[out] pOutputData Output of key exchange phase2. 1372266b0663SKrzysztof Zdziarski * 1373266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 1374266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 1375266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RETRY Resubmit the request. 1376266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter in. 1377266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 1378266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 1379266b0663SKrzysztof Zdziarski * the request. 1380266b0663SKrzysztof Zdziarski * 1381266b0663SKrzysztof Zdziarski * @pre 1382266b0663SKrzysztof Zdziarski * The component has been initialized via cpaCyStartInstance function. 1383266b0663SKrzysztof Zdziarski * @post 1384266b0663SKrzysztof Zdziarski * None 1385266b0663SKrzysztof Zdziarski * @note 1386266b0663SKrzysztof Zdziarski * When pCb is non-NULL an asynchronous callback of type 1387266b0663SKrzysztof Zdziarski * CpaCyGenFlatBufCbFunc is generated in response to this function call. 1388266b0663SKrzysztof Zdziarski * For optimal performance, data pointers SHOULD be 8-byte aligned. 1389266b0663SKrzysztof Zdziarski * 1390266b0663SKrzysztof Zdziarski * @see 1391266b0663SKrzysztof Zdziarski * CpaCyEcsm2KeyExPhase2OpData, 1392266b0663SKrzysztof Zdziarski * CpaCyEcsm2KeyExOutputData, 1393266b0663SKrzysztof Zdziarski * CpaCyGenFlatBufCbFunc 1394266b0663SKrzysztof Zdziarski * 1395266b0663SKrzysztof Zdziarski *****************************************************************************/ 1396266b0663SKrzysztof Zdziarski CpaStatus 1397266b0663SKrzysztof Zdziarski cpaCyEcsm2KeyExPhase2(const CpaInstanceHandle instanceHandle, 1398266b0663SKrzysztof Zdziarski const CpaCyGenFlatBufCbFunc pCb, 1399266b0663SKrzysztof Zdziarski void *pCallbackTag, 1400266b0663SKrzysztof Zdziarski const CpaCyEcsm2KeyExPhase2OpData *pOpData, 1401266b0663SKrzysztof Zdziarski CpaCyEcsm2KeyExOutputData *pOutputData); 1402266b0663SKrzysztof Zdziarski /** 1403266b0663SKrzysztof Zdziarski ***************************************************************************** 1404266b0663SKrzysztof Zdziarski * @file cpa_cy_ecsm2.h 1405266b0663SKrzysztof Zdziarski * @ingroup cpaCyEcsm2 1406266b0663SKrzysztof Zdziarski * Query statistics for a specific ECSM2 instance. 1407266b0663SKrzysztof Zdziarski * 1408266b0663SKrzysztof Zdziarski * @description 1409266b0663SKrzysztof Zdziarski * This function will query a specific instance of the ECSM2 implementation 1410266b0663SKrzysztof Zdziarski * for statistics. The user MUST allocate the CpaCyEcsm2Stats64 structure 1411266b0663SKrzysztof Zdziarski * and pass the reference to that structure into this function call. This 1412266b0663SKrzysztof Zdziarski * function writes the statistic results into the passed in 1413266b0663SKrzysztof Zdziarski * CpaCyEcsm2Stats64 structure. 1414266b0663SKrzysztof Zdziarski * 1415266b0663SKrzysztof Zdziarski * Note: statistics returned by this function do not interrupt current data 1416266b0663SKrzysztof Zdziarski * processing and as such can be slightly out of sync with operations that 1417266b0663SKrzysztof Zdziarski * are in progress during the statistics retrieval process. 1418266b0663SKrzysztof Zdziarski * 1419266b0663SKrzysztof Zdziarski * @context 1420266b0663SKrzysztof Zdziarski * This is a synchronous function and it can sleep. It MUST NOT be 1421266b0663SKrzysztof Zdziarski * executed in a context that DOES NOT permit sleeping. 1422266b0663SKrzysztof Zdziarski * @assumptions 1423266b0663SKrzysztof Zdziarski * None 1424266b0663SKrzysztof Zdziarski * @sideEffects 1425266b0663SKrzysztof Zdziarski * None 1426266b0663SKrzysztof Zdziarski * @blocking 1427266b0663SKrzysztof Zdziarski * This function is synchronous and blocking. 1428266b0663SKrzysztof Zdziarski * @reentrant 1429266b0663SKrzysztof Zdziarski * No 1430266b0663SKrzysztof Zdziarski * @threadSafe 1431266b0663SKrzysztof Zdziarski * Yes 1432266b0663SKrzysztof Zdziarski * 1433266b0663SKrzysztof Zdziarski * @param[in] instanceHandle Instance handle. 1434266b0663SKrzysztof Zdziarski * @param[out] pEcsm2Stats Pointer to memory into which the statistics 1435266b0663SKrzysztof Zdziarski * will be written. 1436266b0663SKrzysztof Zdziarski * 1437266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 1438266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 1439266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in. 1440266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESOURCE Error related to system resources. 1441266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit 1442266b0663SKrzysztof Zdziarski * the request. 1443266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_UNSUPPORTED Function is not supported. 1444266b0663SKrzysztof Zdziarski * 1445266b0663SKrzysztof Zdziarski * @pre 1446266b0663SKrzysztof Zdziarski * Component has been initialized. 1447266b0663SKrzysztof Zdziarski * @post 1448266b0663SKrzysztof Zdziarski * None 1449266b0663SKrzysztof Zdziarski * @note 1450266b0663SKrzysztof Zdziarski * This function operates in a synchronous manner and no asynchronous 1451266b0663SKrzysztof Zdziarski * callback will be generated. 1452266b0663SKrzysztof Zdziarski * @see 1453266b0663SKrzysztof Zdziarski * CpaCyEcsm2Stats64 1454266b0663SKrzysztof Zdziarski *****************************************************************************/ 1455266b0663SKrzysztof Zdziarski 1456266b0663SKrzysztof Zdziarski CpaStatus 1457266b0663SKrzysztof Zdziarski cpaCyEcsm2QueryStats64(const CpaInstanceHandle instanceHandle_in, 1458266b0663SKrzysztof Zdziarski CpaCyEcsm2Stats64 *pEcsm2Stats); 1459266b0663SKrzysztof Zdziarski 1460266b0663SKrzysztof Zdziarski #ifdef __cplusplus 1461266b0663SKrzysztof Zdziarski } /* close the extern "C" { */ 1462266b0663SKrzysztof Zdziarski #endif 1463266b0663SKrzysztof Zdziarski 1464266b0663SKrzysztof Zdziarski #endif /*CPA_CY_ECSM2_H_*/ 1465