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