1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#ifndef HUKS_HDI_TEMPLATE_H 17094332d3Sopenharmony_ci#define HUKS_HDI_TEMPLATE_H 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_ci#include "huks_sa_type.h" 20094332d3Sopenharmony_ci 21094332d3Sopenharmony_citypedef struct HksBlob TargetBlob; 22094332d3Sopenharmony_citypedef struct HksParamSet TargetParamSet; 23094332d3Sopenharmony_ci 24094332d3Sopenharmony_ci#define HDI_ADAPTER_PARAM(oldParamPtr, newParamPtr) ((oldParamPtr) == NULL ? NULL : (newParamPtr)) 25094332d3Sopenharmony_ci 26094332d3Sopenharmony_ci 27094332d3Sopenharmony_ci#define HDI_CONVERTER_PARAM_IN_BLOB(fromHuksBlobPtr, toHksBlobPtr) \ 28094332d3Sopenharmony_ci if ((fromHuksBlobPtr) != NULL && (toHksBlobPtr) != NULL) { \ 29094332d3Sopenharmony_ci (toHksBlobPtr)->data = (fromHuksBlobPtr)->data; \ 30094332d3Sopenharmony_ci (toHksBlobPtr)->size = (fromHuksBlobPtr)->dataLen; \ 31094332d3Sopenharmony_ci } 32094332d3Sopenharmony_ci 33094332d3Sopenharmony_ci#define HDI_CONVERTER_PARAM_IN_PARAMSET(fromHuksParamSetPtr, toHksParamSetPtr) \ 34094332d3Sopenharmony_ci if ((fromHuksParamSetPtr) != NULL && (fromHuksParamSetPtr)->data != NULL && \ 35094332d3Sopenharmony_ci (fromHuksParamSetPtr)->dataLen >= sizeof(TargetParamSet)) { \ 36094332d3Sopenharmony_ci (toHksParamSetPtr) = (TargetParamSet *)(fromHuksParamSetPtr)->data; \ 37094332d3Sopenharmony_ci } 38094332d3Sopenharmony_ci 39094332d3Sopenharmony_ci#define HDI_CONVERTER_PARAM_OUT_BLOB(fromHksBlobPtr, toHuksBlobPtr) \ 40094332d3Sopenharmony_ci if ((fromHksBlobPtr) != NULL && (toHuksBlobPtr) != NULL) { \ 41094332d3Sopenharmony_ci (toHuksBlobPtr)->data = (fromHksBlobPtr)->data; \ 42094332d3Sopenharmony_ci (toHuksBlobPtr)->dataLen = (fromHksBlobPtr)->size; \ 43094332d3Sopenharmony_ci } 44094332d3Sopenharmony_ci 45094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_GENERATEKEY(keyAlias, paramSet, keyIn, keyOut, ret, func) \ 46094332d3Sopenharmony_ci TargetBlob keyAliasCore = {0}; \ 47094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 48094332d3Sopenharmony_ci TargetBlob keyInCore = {0}; \ 49094332d3Sopenharmony_ci TargetBlob keyOutCore = {0}; \ 50094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(keyAlias, &keyAliasCore) \ 51094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 52094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(keyIn, &keyInCore) \ 53094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(keyOut, &keyOutCore) \ 54094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(keyAlias, &keyAliasCore), \ 55094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 56094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(keyIn, &keyInCore), \ 57094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(keyOut, &keyOutCore)); \ 58094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&keyOutCore, keyOut) 59094332d3Sopenharmony_ci 60094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_IMPORTKEY(keyAlias, key, paramSet, keyOut, ret, func) \ 61094332d3Sopenharmony_ci TargetBlob keyAliasCore = {0}; \ 62094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 63094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 64094332d3Sopenharmony_ci TargetBlob keyOutCore = {0}; \ 65094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(keyAlias, &keyAliasCore) \ 66094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 67094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 68094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(keyOut, &keyOutCore) \ 69094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(keyAlias, &keyAliasCore), \ 70094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(key, &keyCore), \ 71094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 72094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(keyOut, &keyOutCore)); \ 73094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&keyOutCore, keyOut) 74094332d3Sopenharmony_ci 75094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_IMPORTWRAPPEDKEY(wrappedKeyAlias, key, wrappedKeyData, paramSet, keyOut, ret, func) \ 76094332d3Sopenharmony_ci TargetBlob wrappingKeyAliasCore = {0}; \ 77094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 78094332d3Sopenharmony_ci TargetBlob wrappedKeyDataCore = {0}; \ 79094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 80094332d3Sopenharmony_ci TargetBlob keyOutCore = {0}; \ 81094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(wrappingKeyAlias, &wrappingKeyAliasCore) \ 82094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 83094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 84094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(wrappedKeyData, &wrappedKeyDataCore) \ 85094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(keyOut, &keyOutCore) \ 86094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(wrappingKeyAlias, &wrappedKeyDataCore), \ 87094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(key, &keyCore), \ 88094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(wrappedKeyData, &wrappedKeyDataCore), \ 89094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 90094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(keyOut, &keyOutCore)); \ 91094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&keyOutCore, keyOut) 92094332d3Sopenharmony_ci 93094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_EXPORTPUBLICKEY(key, paramSet, keyOut, ret, func) \ 94094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 95094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 96094332d3Sopenharmony_ci TargetBlob keyOutCore = {0}; \ 97094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 98094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 99094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(keyOut, &keyOutCore) \ 100094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(key, &keyCore), \ 101094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 102094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(keyOut, &keyOutCore)); \ 103094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&keyOutCore, keyOut) 104094332d3Sopenharmony_ci 105094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_INIT(key, paramSet, handle, token, ret, func) \ 106094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 107094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 108094332d3Sopenharmony_ci TargetBlob handleCore = {0}; \ 109094332d3Sopenharmony_ci TargetBlob tokenCore = {0}; \ 110094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 111094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 112094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(handle, &handleCore) \ 113094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(token, &tokenCore) \ 114094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(key, &keyCore), \ 115094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 116094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(handle, &handleCore), \ 117094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(token, &tokenCore)); \ 118094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&handleCore, handle) \ 119094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&tokenCore, token) 120094332d3Sopenharmony_ci 121094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_UPDATE(handle, paramSet, inData, outData, ret, func) \ 122094332d3Sopenharmony_ci TargetBlob handleCore = {0}; \ 123094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 124094332d3Sopenharmony_ci TargetBlob inDataCore = {0}; \ 125094332d3Sopenharmony_ci TargetBlob outDataCore = {0}; \ 126094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(handle, &handleCore) \ 127094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 128094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(inData, &inDataCore) \ 129094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(outData, &outDataCore) \ 130094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(handle, &handleCore), \ 131094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 132094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(inData, &inDataCore), \ 133094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(outData, &outDataCore)); \ 134094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&outDataCore, outData) 135094332d3Sopenharmony_ci 136094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_FINISH(handle, paramSet, inData, outData, ret, func) \ 137094332d3Sopenharmony_ci TargetBlob handleCore = {0}; \ 138094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 139094332d3Sopenharmony_ci TargetBlob inDataCore = {0}; \ 140094332d3Sopenharmony_ci TargetBlob outDataCore = {0}; \ 141094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(handle, &handleCore) \ 142094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 143094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(inData, &inDataCore) \ 144094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(outData, &outDataCore) \ 145094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(handle, &handleCore), \ 146094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 147094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(inData, &inDataCore), \ 148094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(outData, &outDataCore)); \ 149094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&outDataCore, outData) 150094332d3Sopenharmony_ci 151094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_ABORT(handle, paramSet, ret, func) \ 152094332d3Sopenharmony_ci TargetBlob handleCore = {0}; \ 153094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 154094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(handle, &handleCore) \ 155094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 156094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(handle, &handleCore), \ 157094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore)); 158094332d3Sopenharmony_ci 159094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_CHECKKEYVALIDITY(paramSet, key, ret, func) \ 160094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 161094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 162094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 163094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 164094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 165094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(key, &keyCore)); 166094332d3Sopenharmony_ci 167094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_ATTESTKEY(key, paramSet, certChain, ret, func) \ 168094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 169094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 170094332d3Sopenharmony_ci TargetBlob certChainCore = {0}; \ 171094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 172094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 173094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(certChain, &certChainCore) \ 174094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(key, &keyCore), \ 175094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 176094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(certChain, &certChainCore)); \ 177094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&certChainCore, certChain) 178094332d3Sopenharmony_ci 179094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_GENERATERANDOM(paramSet, random, ret, func) \ 180094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 181094332d3Sopenharmony_ci TargetBlob randomCore = {0}; \ 182094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 183094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(random, &randomCore) \ 184094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 185094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(random, &randomCore)); \ 186094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&randomCore, random) 187094332d3Sopenharmony_ci 188094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_SIGN(key, paramSet, srcData, signature, ret, func) \ 189094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 190094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 191094332d3Sopenharmony_ci TargetBlob srcDataCore = {0}; \ 192094332d3Sopenharmony_ci TargetBlob signatureCore = {0}; \ 193094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 194094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 195094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(srcData, &srcDataCore) \ 196094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(signature, &signatureCore) \ 197094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(key, &keyCore), \ 198094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 199094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(srcData, &srcDataCore), \ 200094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(signature, &signatureCore)); \ 201094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&signatureCore, signature) 202094332d3Sopenharmony_ci 203094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_VERIFY(key, paramSet, srcData, signature, ret, func) \ 204094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 205094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 206094332d3Sopenharmony_ci TargetBlob srcDataCore = {0}; \ 207094332d3Sopenharmony_ci TargetBlob signatureCore = {0}; \ 208094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 209094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 210094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(srcData, &srcDataCore) \ 211094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(signature, &signatureCore) \ 212094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(key, &keyCore), \ 213094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 214094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(srcData, &srcDataCore), \ 215094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(signature, &signatureCore)); 216094332d3Sopenharmony_ci 217094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_ENCRYPT(key, paramSet, plainText, cipherText, ret, func) \ 218094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 219094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 220094332d3Sopenharmony_ci TargetBlob plainTextCore = {0}; \ 221094332d3Sopenharmony_ci TargetBlob cipherTextCore = {0}; \ 222094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 223094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 224094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(plainText, &plainTextCore) \ 225094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(cipherText, &cipherTextCore) \ 226094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(key, &keyCore), \ 227094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 228094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(plainText, &plainTextCore), \ 229094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(cipherText, &cipherTextCore)); \ 230094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&cipherTextCore, cipherText) 231094332d3Sopenharmony_ci 232094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_DECRYPT(key, paramSet, cipherText, plainText, ret, func) \ 233094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 234094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 235094332d3Sopenharmony_ci TargetBlob cipherTextCore = {0}; \ 236094332d3Sopenharmony_ci TargetBlob plainTextCore = {0}; \ 237094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 238094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 239094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(cipherText, &cipherTextCore) \ 240094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(plainText, &plainTextCore) \ 241094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(key, &keyCore), \ 242094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 243094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(cipherText, &cipherTextCore), \ 244094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(plainText, &plainTextCore)); \ 245094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&plainTextCore, plainText) 246094332d3Sopenharmony_ci 247094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_AGREEKEY(paramSet, privateKey, peerPublicKey, agreedKey, ret, func) \ 248094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 249094332d3Sopenharmony_ci TargetBlob privateKeyCore = {0}; \ 250094332d3Sopenharmony_ci TargetBlob peerPublicKeyCore = {0}; \ 251094332d3Sopenharmony_ci TargetBlob agreedKeyCore = {0}; \ 252094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 253094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(privateKey, &privateKeyCore) \ 254094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(peerPublicKey, &peerPublicKeyCore) \ 255094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(agreedKey, &agreedKeyCore) \ 256094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 257094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(privateKey, &privateKeyCore), \ 258094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(peerPublicKey, &peerPublicKeyCore), \ 259094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(agreedKey, &agreedKeyCore)); \ 260094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&agreedKeyCore, agreedKey) 261094332d3Sopenharmony_ci 262094332d3Sopenharmony_ci 263094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_DERIVEKEY(paramSet, kdfKey, derivedKey, ret, func) \ 264094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 265094332d3Sopenharmony_ci TargetBlob kdfKeyCore = {0}; \ 266094332d3Sopenharmony_ci TargetBlob derivedKeyCore = {0}; \ 267094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 268094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(kdfKey, &kdfKeyCore) \ 269094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(derivedKey, &derivedKeyCore) \ 270094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 271094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(kdfKey, &kdfKeyCore), \ 272094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(derivedKey, &derivedKeyCore)); \ 273094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&derivedKeyCore, derivedKey) 274094332d3Sopenharmony_ci 275094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_MAC(key, paramSet, srcData, mac, ret, func) \ 276094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 277094332d3Sopenharmony_ci TargetBlob keyCore = {0}; \ 278094332d3Sopenharmony_ci TargetBlob srcDataCore = {0}; \ 279094332d3Sopenharmony_ci TargetBlob macCore = {0}; \ 280094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 281094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(key, &keyCore) \ 282094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(srcData, &srcDataCore) \ 283094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(mac, &macCore) \ 284094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(key, &keyCore), \ 285094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 286094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(srcData, &srcDataCore), \ 287094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(mac, &macCore)); \ 288094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&macCore, mac) 289094332d3Sopenharmony_ci 290094332d3Sopenharmony_ci#define HDI_CONVERTER_FUNC_UPGRADEKEY(oldKey, paramSet, newKey, ret, func) \ 291094332d3Sopenharmony_ci TargetParamSet *paramSetCore = NULL; \ 292094332d3Sopenharmony_ci TargetBlob oldKeyCore = {0}; \ 293094332d3Sopenharmony_ci TargetBlob newKeyCore = {0}; \ 294094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_PARAMSET(paramSet, paramSetCore) \ 295094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(oldKey, &oldKeyCore) \ 296094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_IN_BLOB(newKey, &newKeyCore) \ 297094332d3Sopenharmony_ci ret = (func)(HDI_ADAPTER_PARAM(oldKey, &oldKeyCore), \ 298094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(paramSet, paramSetCore), \ 299094332d3Sopenharmony_ci HDI_ADAPTER_PARAM(newKey, &newKeyCore)); \ 300094332d3Sopenharmony_ci HDI_CONVERTER_PARAM_OUT_BLOB(&newKeyCore, newKey) 301094332d3Sopenharmony_ci 302094332d3Sopenharmony_ci#undef HUKS_NULL_POINTER 303094332d3Sopenharmony_ci 304094332d3Sopenharmony_ci#ifdef __cplusplus 305094332d3Sopenharmony_ci#define HUKS_NULL_POINTER nullptr 306094332d3Sopenharmony_ci#else 307094332d3Sopenharmony_ci#define HUKS_NULL_POINTER NULL 308094332d3Sopenharmony_ci#endif 309094332d3Sopenharmony_ci 310094332d3Sopenharmony_ci#define HUKS_HDI_IF_NOT_SUCC_RETURN(RESULT, ERROR_CODE) \ 311094332d3Sopenharmony_ciif ((RESULT) != HUKS_SUCCESS) { \ 312094332d3Sopenharmony_ci return (ERROR_CODE); \ 313094332d3Sopenharmony_ci} 314094332d3Sopenharmony_ci 315094332d3Sopenharmony_ci#define HUKS_HDI_IF_NULL_LOGE_RETURN(OBJECT, ERROR_CODE, LOG_MESSAGE, ...) \ 316094332d3Sopenharmony_ciif ((OBJECT) == HUKS_NULL_POINTER) { \ 317094332d3Sopenharmony_ci HDF_LOGE(LOG_MESSAGE, ##__VA_ARGS__); \ 318094332d3Sopenharmony_ci return (ERROR_CODE); \ 319094332d3Sopenharmony_ci} 320094332d3Sopenharmony_ci 321094332d3Sopenharmony_ci#endif 322