18e920a95Sopenharmony_ci/*
28e920a95Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
38e920a95Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48e920a95Sopenharmony_ci * you may not use this file except in compliance with the License.
58e920a95Sopenharmony_ci * You may obtain a copy of the License at
68e920a95Sopenharmony_ci *
78e920a95Sopenharmony_ci *    http://www.apache.org/licenses/LICENSE-2.0
88e920a95Sopenharmony_ci *
98e920a95Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108e920a95Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118e920a95Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128e920a95Sopenharmony_ci * See the License for the specific language governing permissions and
138e920a95Sopenharmony_ci * limitations under the License.
148e920a95Sopenharmony_ci */
158e920a95Sopenharmony_ci
168e920a95Sopenharmony_ci#ifndef HKS_API_H
178e920a95Sopenharmony_ci#define HKS_API_H
188e920a95Sopenharmony_ci
198e920a95Sopenharmony_ci#include "hks_type.h"
208e920a95Sopenharmony_ci
218e920a95Sopenharmony_cinamespace OHOS {
228e920a95Sopenharmony_cinamespace Security {
238e920a95Sopenharmony_cinamespace CodeSign {
248e920a95Sopenharmony_ciextern int g_count;
258e920a95Sopenharmony_cienum HksType {
268e920a95Sopenharmony_ci    KEYEXIST = 1,
278e920a95Sopenharmony_ci    ATTESTKEY = 2,
288e920a95Sopenharmony_ci    GENERATEKEY = 3,
298e920a95Sopenharmony_ci    INIT = 4,
308e920a95Sopenharmony_ci    UPDATE = 5,
318e920a95Sopenharmony_ci    FINISH = 6,
328e920a95Sopenharmony_ci    ERROR = 7,
338e920a95Sopenharmony_ci};
348e920a95Sopenharmony_ciint32_t HksKeyExist(const struct HksBlob *keyAlias, const struct HksParamSet *paramSet);
358e920a95Sopenharmony_ci
368e920a95Sopenharmony_ciint32_t HksAttestKey(const struct HksBlob *keyAlias,
378e920a95Sopenharmony_ci    const struct HksParamSet *paramSet, struct HksCertChain *certChain);
388e920a95Sopenharmony_ci
398e920a95Sopenharmony_ciint32_t HksGenerateKey(const struct HksBlob *keyAlias,
408e920a95Sopenharmony_ci    const struct HksParamSet *paramSetIn, struct HksParamSet *paramSetOut);
418e920a95Sopenharmony_ci
428e920a95Sopenharmony_ciint32_t HksInit(const struct HksBlob *keyAlias, const struct HksParamSet *paramSet,
438e920a95Sopenharmony_ci    struct HksBlob *handle, struct HksBlob *token);
448e920a95Sopenharmony_ci
458e920a95Sopenharmony_ciint32_t HksUpdate(const struct HksBlob *handle, const struct HksParamSet *paramSet,
468e920a95Sopenharmony_ci    const struct HksBlob *inData, struct HksBlob *outData);
478e920a95Sopenharmony_ci
488e920a95Sopenharmony_ciint32_t HksFinish(const struct HksBlob *handle, const struct HksParamSet *paramSet,
498e920a95Sopenharmony_ci    const struct HksBlob *inData, struct HksBlob *outData);
508e920a95Sopenharmony_ci}
518e920a95Sopenharmony_ci}
528e920a95Sopenharmony_ci}
538e920a95Sopenharmony_ci
548e920a95Sopenharmony_ci#endif /* HKS_API_H */
55