1 /*
2 * Copyright (c) 2024 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 #include <string.h>
17
18 #include "hks_api.h"
19 #include "hks_errcode_adapter.h"
20
21 #include "cj_huks_ffi.h"
22
FfiOHOSGetSdkVersion(struct HksBlob * sdkVersion)23 int32_t FfiOHOSGetSdkVersion(struct HksBlob *sdkVersion)
24 {
25 return HksGetSdkVersion(sdkVersion);
26 }
27
FfiOHOSInitSession(const char * keyAlias,const struct HksParamSet * paramSet,struct HksBlob * handle,struct HksBlob * token)28 int32_t FfiOHOSInitSession(const char *keyAlias, const struct HksParamSet *paramSet,
29 struct HksBlob *handle, struct HksBlob *token)
30 {
31 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
32 return HksInit(&keyAliasBlob, paramSet, handle, token);
33 }
34
FfiOHOSUpdateSession(const struct HksBlob * handle,const struct HksParamSet * paramSet,const struct HksBlob * inData,struct HksBlob * outData)35 int32_t FfiOHOSUpdateSession(const struct HksBlob *handle, const struct HksParamSet *paramSet,
36 const struct HksBlob *inData, struct HksBlob *outData)
37 {
38 return HksUpdate(handle, paramSet, inData, outData);
39 }
40
FfiOHOSFinishSession(const struct HksBlob * handle,const struct HksParamSet * paramSet,const struct HksBlob * inData,struct HksBlob * outData)41 int32_t FfiOHOSFinishSession(const struct HksBlob *handle, const struct HksParamSet *paramSet,
42 const struct HksBlob *inData, struct HksBlob *outData)
43 {
44 return HksFinish(handle, paramSet, inData, outData);
45 }
46
FfiOHOSAbortSession(const struct HksBlob * handle,const struct HksParamSet * paramSet)47 int32_t FfiOHOSAbortSession(const struct HksBlob *handle, const struct HksParamSet *paramSet)
48 {
49 return HksAbort(handle, paramSet);
50 }
51
FfiOHOSIsKeyExist(const char * keyAlias,const struct HksParamSet * paramSet)52 int32_t FfiOHOSIsKeyExist(const char *keyAlias, const struct HksParamSet *paramSet)
53 {
54 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
55 return HksKeyExist(&keyAliasBlob, paramSet);
56 }
57
FfiOHOSGetKeyItemProperties(const char * keyAlias,const struct HksParamSet * paramSetIn,struct HksParamSet * paramSetOut)58 int32_t FfiOHOSGetKeyItemProperties(const char *keyAlias,
59 const struct HksParamSet *paramSetIn, struct HksParamSet *paramSetOut)
60 {
61 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
62 return HksGetKeyParamSet(&keyAliasBlob, paramSetIn, paramSetOut);
63 }
64
FfiOHOSHAttestKey(const char * keyAlias,const struct HksParamSet * paramSet,struct HksCertChain * certChain)65 int32_t FfiOHOSHAttestKey(const char *keyAlias, const struct HksParamSet *paramSet,
66 struct HksCertChain *certChain)
67 {
68 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
69 return HksAttestKey(&keyAliasBlob, paramSet, certChain);
70 }
71
FfiOHOSHAnonAttestKey(const char * keyAlias,const struct HksParamSet * paramSet,struct HksCertChain * certChain)72 int32_t FfiOHOSHAnonAttestKey(const char *keyAlias, const struct HksParamSet *paramSet,
73 struct HksCertChain *certChain)
74 {
75 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
76 return HksAnonAttestKey(&keyAliasBlob, paramSet, certChain);
77 }
78
FfiOHOSExportKey(const char * keyAlias,const struct HksParamSet * paramSet,struct HksBlob * key)79 int32_t FfiOHOSExportKey(const char *keyAlias, const struct HksParamSet *paramSet,
80 struct HksBlob *key)
81 {
82 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
83 return HksExportPublicKey(&keyAliasBlob, paramSet, key);
84 }
85
FfiOHOSImportWrappedKey(const char * keyAlias,const char * wrappingKeyAlias,const struct HksParamSet * paramSet,const struct HksBlob * wrappedKeyData)86 int32_t FfiOHOSImportWrappedKey(const char *keyAlias, const char *wrappingKeyAlias,
87 const struct HksParamSet *paramSet, const struct HksBlob *wrappedKeyData)
88 {
89 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
90 struct HksBlob wrappingKeyAliasBlob = {strlen(wrappingKeyAlias), (uint8_t *)wrappingKeyAlias};
91 return HksImportWrappedKey(&keyAliasBlob, &wrappingKeyAliasBlob, paramSet, wrappedKeyData);
92 }
93
FfiOHOSGenerateKey(const char * keyAlias,const struct HksParamSet * paramSetIn,struct HksParamSet * paramSetOut)94 int32_t FfiOHOSGenerateKey(const char *keyAlias, const struct HksParamSet *paramSetIn,
95 struct HksParamSet *paramSetOut)
96 {
97 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
98 return HksGenerateKey(&keyAliasBlob, paramSetIn, paramSetOut);
99 }
100
FfiOHOSDeleteKey(const char * keyAlias,const struct HksParamSet * paramSet)101 int32_t FfiOHOSDeleteKey(const char *keyAlias, const struct HksParamSet *paramSet)
102 {
103 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
104 return HksDeleteKey(&keyAliasBlob, paramSet);
105 }
106
FfiOHOSImportKey(const char * keyAlias,const struct HksParamSet * paramSet,struct HksBlob * key)107 int32_t FfiOHOSImportKey(const char *keyAlias, const struct HksParamSet *paramSet, struct HksBlob *key)
108 {
109 struct HksBlob keyAliasBlob = {strlen(keyAlias), (uint8_t *)keyAlias};
110 return HksImportKey(&keyAliasBlob, paramSet, key);
111 }
112
FfiOHOSConvertErrCode(int32_t hksCode,struct HksResult * ret)113 void FfiOHOSConvertErrCode(int32_t hksCode, struct HksResult *ret)
114 {
115 *ret = HksConvertErrCode(hksCode);
116 }
117