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