xref: /isa-l_crypto/include/multi_buffer.h (revision 8cb7fe780eac8ee5f1e0aa3ca37466e89c673ccd)
16df3ef80SGreg Tucker /**********************************************************************
26df3ef80SGreg Tucker   Copyright(c) 2011-2016 Intel Corporation All rights reserved.
36df3ef80SGreg Tucker 
46df3ef80SGreg Tucker   Redistribution and use in source and binary forms, with or without
56df3ef80SGreg Tucker   modification, are permitted provided that the following conditions
66df3ef80SGreg Tucker   are met:
76df3ef80SGreg Tucker     * Redistributions of source code must retain the above copyright
86df3ef80SGreg Tucker       notice, this list of conditions and the following disclaimer.
96df3ef80SGreg Tucker     * Redistributions in binary form must reproduce the above copyright
106df3ef80SGreg Tucker       notice, this list of conditions and the following disclaimer in
116df3ef80SGreg Tucker       the documentation and/or other materials provided with the
126df3ef80SGreg Tucker       distribution.
136df3ef80SGreg Tucker     * Neither the name of Intel Corporation nor the names of its
146df3ef80SGreg Tucker       contributors may be used to endorse or promote products derived
156df3ef80SGreg Tucker       from this software without specific prior written permission.
166df3ef80SGreg Tucker 
176df3ef80SGreg Tucker   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
186df3ef80SGreg Tucker   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
196df3ef80SGreg Tucker   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
206df3ef80SGreg Tucker   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
216df3ef80SGreg Tucker   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
226df3ef80SGreg Tucker   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
236df3ef80SGreg Tucker   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
246df3ef80SGreg Tucker   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
256df3ef80SGreg Tucker   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
266df3ef80SGreg Tucker   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
276df3ef80SGreg Tucker   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
286df3ef80SGreg Tucker **********************************************************************/
296df3ef80SGreg Tucker 
306df3ef80SGreg Tucker #ifndef _MULTI_BUFFER_H_
316df3ef80SGreg Tucker #define _MULTI_BUFFER_H_
326df3ef80SGreg Tucker 
336df3ef80SGreg Tucker /**
346df3ef80SGreg Tucker  *  @file  multi_buffer.h
356df3ef80SGreg Tucker  *  @brief Multi-buffer common fields
366df3ef80SGreg Tucker  *
376df3ef80SGreg Tucker  */
386df3ef80SGreg Tucker 
396df3ef80SGreg Tucker #ifdef __cplusplus
406df3ef80SGreg Tucker extern "C" {
416df3ef80SGreg Tucker #endif
426df3ef80SGreg Tucker 
43*8cb7fe78SPablo de Lara /*
44*8cb7fe78SPablo de Lara  * Define enums from API v2.24, so applications that were using this version
45*8cb7fe78SPablo de Lara  * will still be compiled successfully.
46*8cb7fe78SPablo de Lara  * This list does not need to be extended for new enums.
47*8cb7fe78SPablo de Lara  */
48*8cb7fe78SPablo de Lara #ifndef NO_COMPAT_ISAL_CRYPTO_API_2_24
49*8cb7fe78SPablo de Lara /***** Previous enums *****/
50*8cb7fe78SPablo de Lara #define JOB_STS             ISAL_JOB_STS
51*8cb7fe78SPablo de Lara #define STS_UNKNOWN         ISAL_STS_UNKNOWN
52*8cb7fe78SPablo de Lara #define STS_BEING_PROCESSED ISAL_STS_BEING_PROCESSED
53*8cb7fe78SPablo de Lara #define STS_COMPLETED       ISAL_STS_COMPLETED
54*8cb7fe78SPablo de Lara #define STS_INTERNAL_ERROR  ISAL_STS_INTERNAL_ERROR
55*8cb7fe78SPablo de Lara #define STS_ERROR           ISAL_STS_ERROR
56*8cb7fe78SPablo de Lara 
57*8cb7fe78SPablo de Lara #define HASH_CTX_FLAG ISAL_HASH_CTX_FLAG
58*8cb7fe78SPablo de Lara #define HASH_UPDATE   ISAL_HASH_UPDATE
59*8cb7fe78SPablo de Lara #define HASH_FIRST    ISAL_HASH_FIRST
60*8cb7fe78SPablo de Lara #define HASH_LAST     ISAL_HASH_LAST
61*8cb7fe78SPablo de Lara #define HASH_ENTIRE   ISAL_HASH_ENTIRE
62*8cb7fe78SPablo de Lara 
63*8cb7fe78SPablo de Lara #define HASH_CTX_STS            ISAL_HASH_CTX_STS
64*8cb7fe78SPablo de Lara #define HASH_CTX_STS_IDLE       ISAL_HASH_CTX_STS_IDLE
65*8cb7fe78SPablo de Lara #define HASH_CTX_STS_PROCESSING ISAL_HASH_CTX_STS_PROCESSING
66*8cb7fe78SPablo de Lara #define HASH_CTX_STS_LAST       ISAL_HASH_CTX_STS_LAST
67*8cb7fe78SPablo de Lara #define HASH_CTX_STS_COMPLETE   ISAL_HASH_CTX_STS_COMPLETE
68*8cb7fe78SPablo de Lara 
69*8cb7fe78SPablo de Lara #define HASH_CTX_ERROR                    ISAL_HASH_CTX_ERROR
70*8cb7fe78SPablo de Lara #define HASH_CTX_ERROR_NONE               ISAL_HASH_CTX_ERROR_NONE
71*8cb7fe78SPablo de Lara #define HASH_CTX_ERROR_INVALID_FLAGS      ISAL_HASH_CTX_ERROR_INVALID_FLAGS
72*8cb7fe78SPablo de Lara #define HASH_CTX_ERROR_ALREADY_PROCESSING ISAL_HASH_CTX_ERROR_ALREADY_PROCESSING
73*8cb7fe78SPablo de Lara #define HASH_CTX_ERROR_ALREADY_COMPLETED  ISAL_HASH_CTX_ERROR_ALREADY_COMPLETED
74*8cb7fe78SPablo de Lara 
75*8cb7fe78SPablo de Lara #define HASH_MB_NO_FLAGS ISAL_HASH_MB_NO_FLAGS
76*8cb7fe78SPablo de Lara #define HASH_MB_FIRST    ISAL_HASH_MB_FIRST
77*8cb7fe78SPablo de Lara #define HASH_MB_LAST     ISAL_HASH_MB_LAST
78*8cb7fe78SPablo de Lara 
79*8cb7fe78SPablo de Lara #define hash_ctx_user_data  isal_hash_ctx_user_data
80*8cb7fe78SPablo de Lara #define hash_ctx_digest     isal_hash_ctx_digest
81*8cb7fe78SPablo de Lara #define hash_ctx_processing isal_hash_ctx_processing
82*8cb7fe78SPablo de Lara #define hash_ctx_complete   isal_hash_ctx_complete
83*8cb7fe78SPablo de Lara #define hash_ctx_status     isal_hash_ctx_status
84*8cb7fe78SPablo de Lara #define hash_ctx_error      isal_hash_ctx_error
85*8cb7fe78SPablo de Lara #define hash_ctx_init       isal_hash_ctx_init
86*8cb7fe78SPablo de Lara 
87*8cb7fe78SPablo de Lara #endif /* !NO_COMPAT_ISAL_CRYPTO_API_2_24 */
88*8cb7fe78SPablo de Lara 
896df3ef80SGreg Tucker /**
90*8cb7fe78SPablo de Lara  *  @enum ISAL_JOB_STS
916df3ef80SGreg Tucker  *  @brief Job return codes
926df3ef80SGreg Tucker  */
936df3ef80SGreg Tucker 
941de5344dSMarcel Cornu typedef enum {
95*8cb7fe78SPablo de Lara         ISAL_STS_UNKNOWN = 0,         //!< ISAL_STS_UNKNOWN
96*8cb7fe78SPablo de Lara         ISAL_STS_BEING_PROCESSED = 1, //!< ISAL_STS_BEING_PROCESSED
97*8cb7fe78SPablo de Lara         ISAL_STS_COMPLETED = 2,       //!< ISAL_STS_COMPLETED
98*8cb7fe78SPablo de Lara         ISAL_STS_INTERNAL_ERROR,      //!< ISAL_STS_INTERNAL_ERROR
99*8cb7fe78SPablo de Lara         ISAL_STS_ERROR                //!< ISAL_STS_ERROR
100*8cb7fe78SPablo de Lara } ISAL_JOB_STS;
1016df3ef80SGreg Tucker 
102*8cb7fe78SPablo de Lara #define ISAL_HASH_MB_NO_FLAGS 0
103*8cb7fe78SPablo de Lara #define ISAL_HASH_MB_FIRST    1
104*8cb7fe78SPablo de Lara #define ISAL_HASH_MB_LAST     2
1056df3ef80SGreg Tucker 
1066df3ef80SGreg Tucker /* Common flags for the new API only
1076df3ef80SGreg Tucker  *  */
1086df3ef80SGreg Tucker 
1096df3ef80SGreg Tucker /**
110*8cb7fe78SPablo de Lara  *  @enum ISAL_HASH_CTX_FLAG
1116df3ef80SGreg Tucker  *  @brief CTX job type
1126df3ef80SGreg Tucker  */
1136df3ef80SGreg Tucker typedef enum {
114*8cb7fe78SPablo de Lara         ISAL_HASH_UPDATE = 0x00, //!< ISAL_HASH_UPDATE
115*8cb7fe78SPablo de Lara         ISAL_HASH_FIRST = 0x01,  //!< ISAL_HASH_FIRST
116*8cb7fe78SPablo de Lara         ISAL_HASH_LAST = 0x02,   //!< ISAL_HASH_LAST
117*8cb7fe78SPablo de Lara         ISAL_HASH_ENTIRE = 0x03, //!< ISAL_HASH_ENTIRE
118*8cb7fe78SPablo de Lara } ISAL_HASH_CTX_FLAG;
1196df3ef80SGreg Tucker 
1206df3ef80SGreg Tucker /**
121*8cb7fe78SPablo de Lara  *  @enum ISAL_HASH_CTX_STS
1226df3ef80SGreg Tucker  *  @brief CTX status flags
1236df3ef80SGreg Tucker  */
1246df3ef80SGreg Tucker typedef enum {
125*8cb7fe78SPablo de Lara         ISAL_HASH_CTX_STS_IDLE = 0x00,       //!< ISAL_HASH_CTX_STS_IDLE
126*8cb7fe78SPablo de Lara         ISAL_HASH_CTX_STS_PROCESSING = 0x01, //!< ISAL_HASH_CTX_STS_PROCESSING
127*8cb7fe78SPablo de Lara         ISAL_HASH_CTX_STS_LAST = 0x02,       //!< ISAL_HASH_CTX_STS_LAST
128*8cb7fe78SPablo de Lara         ISAL_HASH_CTX_STS_COMPLETE = 0x04,   //!< ISAL_HASH_CTX_STS_COMPLETE
129*8cb7fe78SPablo de Lara } ISAL_HASH_CTX_STS;
1306df3ef80SGreg Tucker 
1316df3ef80SGreg Tucker /**
132*8cb7fe78SPablo de Lara  *  @enum ISAL_HASH_CTX_ERROR
1336df3ef80SGreg Tucker  *  @brief CTX error flags
1346df3ef80SGreg Tucker  */
1356df3ef80SGreg Tucker typedef enum {
136*8cb7fe78SPablo de Lara         ISAL_HASH_CTX_ERROR_NONE = 0,                //!< ISAL_HASH_CTX_ERROR_NONE
137*8cb7fe78SPablo de Lara         ISAL_HASH_CTX_ERROR_INVALID_FLAGS = -1,      //!< ISAL_HASH_CTX_ERROR_INVALID_FLAGS
138*8cb7fe78SPablo de Lara         ISAL_HASH_CTX_ERROR_ALREADY_PROCESSING = -2, //!< ISAL_HASH_CTX_ERROR_ALREADY_PROCESSING
139*8cb7fe78SPablo de Lara         ISAL_HASH_CTX_ERROR_ALREADY_COMPLETED = -3,  //!< ISAL_HASH_CTX_ERROR_ALREADY_COMPLETED
140*8cb7fe78SPablo de Lara } ISAL_HASH_CTX_ERROR;
1416df3ef80SGreg Tucker 
142*8cb7fe78SPablo de Lara #define isal_hash_ctx_user_data(ctx)  ((ctx)->user_data)
143*8cb7fe78SPablo de Lara #define isal_hash_ctx_digest(ctx)     ((ctx)->job.result_digest)
144*8cb7fe78SPablo de Lara #define isal_hash_ctx_processing(ctx) ((ctx)->status & ISAL_HASH_CTX_STS_PROCESSING)
145*8cb7fe78SPablo de Lara #define isal_hash_ctx_complete(ctx)   ((ctx)->status == ISAL_HASH_CTX_STS_COMPLETE)
146*8cb7fe78SPablo de Lara #define isal_hash_ctx_status(ctx)     ((ctx)->status)
147*8cb7fe78SPablo de Lara #define isal_hash_ctx_error(ctx)      ((ctx)->error)
148*8cb7fe78SPablo de Lara #define isal_hash_ctx_init(ctx)                                                                    \
1496df3ef80SGreg Tucker         do {                                                                                       \
150*8cb7fe78SPablo de Lara                 (ctx)->error = ISAL_HASH_CTX_ERROR_NONE;                                           \
151*8cb7fe78SPablo de Lara                 (ctx)->status = ISAL_HASH_CTX_STS_COMPLETE;                                        \
1526df3ef80SGreg Tucker         } while (0)
1536df3ef80SGreg Tucker 
1546df3ef80SGreg Tucker #ifdef __cplusplus
1556df3ef80SGreg Tucker }
1566df3ef80SGreg Tucker #endif
1576df3ef80SGreg Tucker 
1586df3ef80SGreg Tucker #endif // _MULTI_BUFFER_H_
159