xref: /isa-l_crypto/include/multi_buffer.h (revision f2582fc8d8619aebca051f0ecd541835d435b835)
1 /**********************************************************************
2   Copyright(c) 2011-2016 Intel Corporation All rights reserved.
3 
4   Redistribution and use in source and binary forms, with or without
5   modification, are permitted provided that the following conditions
6   are met:
7     * Redistributions of source code must retain the above copyright
8       notice, this list of conditions and the following disclaimer.
9     * Redistributions in binary form must reproduce the above copyright
10       notice, this list of conditions and the following disclaimer in
11       the documentation and/or other materials provided with the
12       distribution.
13     * Neither the name of Intel Corporation nor the names of its
14       contributors may be used to endorse or promote products derived
15       from this software without specific prior written permission.
16 
17   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 **********************************************************************/
29 
30 #ifndef _MULTI_BUFFER_H_
31 #define _MULTI_BUFFER_H_
32 
33 /**
34  *  @file  multi_buffer.h
35  *  @brief Multi-buffer common fields
36  *
37  */
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 /*
44  * Define enums from API v2.24, so applications that were using this version
45  * will still be compiled successfully.
46  * This list does not need to be extended for new enums.
47  */
48 #ifndef NO_COMPAT_ISAL_CRYPTO_API_2_24
49 /***** Previous enums *****/
50 #define JOB_STS             ISAL_JOB_STS
51 #define STS_UNKNOWN         ISAL_STS_UNKNOWN
52 #define STS_BEING_PROCESSED ISAL_STS_BEING_PROCESSED
53 #define STS_COMPLETED       ISAL_STS_COMPLETED
54 #define STS_INTERNAL_ERROR  ISAL_STS_INTERNAL_ERROR
55 #define STS_ERROR           ISAL_STS_ERROR
56 
57 #define HASH_CTX_FLAG ISAL_HASH_CTX_FLAG
58 #define HASH_UPDATE   ISAL_HASH_UPDATE
59 #define HASH_FIRST    ISAL_HASH_FIRST
60 #define HASH_LAST     ISAL_HASH_LAST
61 #define HASH_ENTIRE   ISAL_HASH_ENTIRE
62 
63 #define HASH_CTX_STS            ISAL_HASH_CTX_STS
64 #define HASH_CTX_STS_IDLE       ISAL_HASH_CTX_STS_IDLE
65 #define HASH_CTX_STS_PROCESSING ISAL_HASH_CTX_STS_PROCESSING
66 #define HASH_CTX_STS_LAST       ISAL_HASH_CTX_STS_LAST
67 #define HASH_CTX_STS_COMPLETE   ISAL_HASH_CTX_STS_COMPLETE
68 
69 #define HASH_CTX_ERROR                    ISAL_HASH_CTX_ERROR
70 #define HASH_CTX_ERROR_NONE               ISAL_HASH_CTX_ERROR_NONE
71 #define HASH_CTX_ERROR_INVALID_FLAGS      ISAL_HASH_CTX_ERROR_INVALID_FLAGS
72 #define HASH_CTX_ERROR_ALREADY_PROCESSING ISAL_HASH_CTX_ERROR_ALREADY_PROCESSING
73 #define HASH_CTX_ERROR_ALREADY_COMPLETED  ISAL_HASH_CTX_ERROR_ALREADY_COMPLETED
74 
75 #define HASH_MB_NO_FLAGS ISAL_HASH_MB_NO_FLAGS
76 #define HASH_MB_FIRST    ISAL_HASH_MB_FIRST
77 #define HASH_MB_LAST     ISAL_HASH_MB_LAST
78 
79 #define hash_ctx_user_data  isal_hash_ctx_user_data
80 #define hash_ctx_digest     isal_hash_ctx_digest
81 #define hash_ctx_processing isal_hash_ctx_processing
82 #define hash_ctx_complete   isal_hash_ctx_complete
83 #define hash_ctx_status     isal_hash_ctx_status
84 #define hash_ctx_error      isal_hash_ctx_error
85 #define hash_ctx_init       isal_hash_ctx_init
86 
87 #endif /* !NO_COMPAT_ISAL_CRYPTO_API_2_24 */
88 
89 /**
90  *  @enum ISAL_JOB_STS
91  *  @brief Job return codes
92  */
93 
94 typedef enum {
95         ISAL_STS_UNKNOWN = 0,         //!< ISAL_STS_UNKNOWN
96         ISAL_STS_BEING_PROCESSED = 1, //!< ISAL_STS_BEING_PROCESSED
97         ISAL_STS_COMPLETED = 2,       //!< ISAL_STS_COMPLETED
98         ISAL_STS_INTERNAL_ERROR,      //!< ISAL_STS_INTERNAL_ERROR
99         ISAL_STS_ERROR                //!< ISAL_STS_ERROR
100 } ISAL_JOB_STS;
101 
102 #define ISAL_HASH_MB_NO_FLAGS 0
103 #define ISAL_HASH_MB_FIRST    1
104 #define ISAL_HASH_MB_LAST     2
105 
106 /* Common flags for the new API only
107  *  */
108 
109 /**
110  *  @enum ISAL_HASH_CTX_FLAG
111  *  @brief CTX job type
112  */
113 typedef enum {
114         ISAL_HASH_UPDATE = 0x00, //!< ISAL_HASH_UPDATE
115         ISAL_HASH_FIRST = 0x01,  //!< ISAL_HASH_FIRST
116         ISAL_HASH_LAST = 0x02,   //!< ISAL_HASH_LAST
117         ISAL_HASH_ENTIRE = 0x03, //!< ISAL_HASH_ENTIRE
118 } ISAL_HASH_CTX_FLAG;
119 
120 /**
121  *  @enum ISAL_HASH_CTX_STS
122  *  @brief CTX status flags
123  */
124 typedef enum {
125         ISAL_HASH_CTX_STS_IDLE = 0x00,       //!< ISAL_HASH_CTX_STS_IDLE
126         ISAL_HASH_CTX_STS_PROCESSING = 0x01, //!< ISAL_HASH_CTX_STS_PROCESSING
127         ISAL_HASH_CTX_STS_LAST = 0x02,       //!< ISAL_HASH_CTX_STS_LAST
128         ISAL_HASH_CTX_STS_COMPLETE = 0x04,   //!< ISAL_HASH_CTX_STS_COMPLETE
129 } ISAL_HASH_CTX_STS;
130 
131 /**
132  *  @enum ISAL_HASH_CTX_ERROR
133  *  @brief CTX error flags
134  */
135 typedef enum {
136         ISAL_HASH_CTX_ERROR_NONE = 0,                //!< ISAL_HASH_CTX_ERROR_NONE
137         ISAL_HASH_CTX_ERROR_INVALID_FLAGS = -1,      //!< ISAL_HASH_CTX_ERROR_INVALID_FLAGS
138         ISAL_HASH_CTX_ERROR_ALREADY_PROCESSING = -2, //!< ISAL_HASH_CTX_ERROR_ALREADY_PROCESSING
139         ISAL_HASH_CTX_ERROR_ALREADY_COMPLETED = -3,  //!< ISAL_HASH_CTX_ERROR_ALREADY_COMPLETED
140 } ISAL_HASH_CTX_ERROR;
141 
142 #define isal_hash_ctx_user_data(ctx)  ((ctx)->user_data)
143 #define isal_hash_ctx_digest(ctx)     ((ctx)->job.result_digest)
144 #define isal_hash_ctx_processing(ctx) ((ctx)->status & ISAL_HASH_CTX_STS_PROCESSING)
145 #define isal_hash_ctx_complete(ctx)   ((ctx)->status == ISAL_HASH_CTX_STS_COMPLETE)
146 #define isal_hash_ctx_status(ctx)     ((ctx)->status)
147 #define isal_hash_ctx_error(ctx)      ((ctx)->error)
148 #define isal_hash_ctx_init(ctx)                                                                    \
149         do {                                                                                       \
150                 (ctx)->error = ISAL_HASH_CTX_ERROR_NONE;                                           \
151                 (ctx)->status = ISAL_HASH_CTX_STS_COMPLETE;                                        \
152         } while (0)
153 
154 #ifdef __cplusplus
155 }
156 #endif
157 
158 #endif // _MULTI_BUFFER_H_
159