1 /* 2 * Copyright (c) 2020-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef SECURITY_APP_COMMON_H 17 #define SECURITY_APP_COMMON_H 18 19 #include <stdint.h> 20 21 #include "app_verify_base.h" 22 #include "app_verify_pub.h" 23 24 #ifdef __cplusplus 25 #if __cplusplus 26 extern "C" { 27 #endif 28 #endif 29 30 #define MAX_PRINT_LEN 1024 31 #define DOUBLE_SIZE 2 32 #define MAX_CHARACTER 9 33 #define BYTE_BITS 8 34 #define MAX_MALLOC_SIZE 0x100000 /* 1M */ 35 #define MAX_HASH_SIZE 64 36 37 #define P_NULL_RETURN_WTTH_LOG(v) \ 38 do { \ 39 if ((v) == NULL) { \ 40 LOG_ERROR(#v" is null"); \ 41 return V_ERR; \ 42 } \ 43 } \ 44 while (0) 45 46 #define P_NULL_RETURN_RET_WTTH_LOG(v, ret) \ 47 do { \ 48 if ((v) == NULL) { \ 49 LOG_ERROR(#v" is null"); \ 50 return ret; \ 51 } \ 52 } \ 53 while (0) 54 55 #define P_NULL_RETURN_NULL_WTTH_LOG(v) \ 56 do { \ 57 if ((v) == NULL) { \ 58 LOG_ERROR(#v" is null"); \ 59 return NULL; \ 60 } \ 61 } \ 62 while (0) 63 64 #define P_ERR_RETURN_WTTH_LOG(v) \ 65 do { \ 66 if ((v) != V_OK) { \ 67 LOG_ERROR(#v" not ok"); \ 68 return v; \ 69 } \ 70 } \ 71 while (0) 72 73 #define P_NULL_GOTO_WTTH_LOG(v) \ 74 do { \ 75 if ((v) == NULL) { \ 76 LOG_ERROR(#v" is null"); \ 77 goto EXIT; \ 78 } \ 79 } \ 80 while (0) 81 82 #define P_ERR_GOTO_WTTH_LOG(v) \ 83 do { \ 84 if ((v) != V_OK) { \ 85 LOG_ERROR(#v" not ok"); \ 86 goto EXIT; \ 87 } \ 88 } \ 89 while (0) 90 91 #define FREE_IF_NOT_NULL(p) \ 92 do { \ 93 APPV_FREE(p); \ 94 } \ 95 while (0) 96 97 #define APPV_MALLOC(size) malloc(size) 98 #define APPV_FREE(buf) \ 99 do { \ 100 if ((buf) != NULL) { \ 101 free(buf); \ 102 (buf) = NULL; \ 103 } \ 104 } while (0) 105 106 long long HapGetInt64(const unsigned char *buf, int32_t len); 107 int32_t HapGetInt(const unsigned char *buf, int32_t len); 108 uint32_t HapGetUnsignedInt(const unsigned char *buf, int32_t len); 109 short HapGetShort(const unsigned char *buf, int32_t len); 110 void HapPutInt32(unsigned char *buf, int32_t len, int32_t value); 111 #ifdef __cplusplus 112 #if __cplusplus 113 } 114 #endif 115 #endif 116 117 #endif 118