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 #ifndef VERIFY_IMPL_H
16 #define VERIFY_IMPL_H
17 
18 #include "ffi_remote_data.h"
19 #include "pub_key.h"
20 #include "signature.h"
21 
22 namespace OHOS {
23 namespace CryptoFramework {
24 class VerifyImpl : public OHOS::FFI::FFIData {
25     DECL_TYPE(VerifyImpl, OHOS::FFI::FFIData)
26 public:
27     explicit VerifyImpl(HcfVerify *verify);
28     ~VerifyImpl();
29     HcfVerify *GetVerify();
30     HcfResult Init(HcfPubKey *pubKey);
31     HcfResult Update(HcfBlob *input);
32     bool Verify(HcfBlob *data, HcfBlob signatureData, int32_t *errCode);
33     HcfResult Recover(HcfBlob input, HcfBlob *output);
34     HcfResult SetVerifySpecByNum(int32_t itemValue);
35     HcfResult SetVerifySpecByArr(HcfBlob itemValue);
36     HcfResult GetVerifySpecString(SignSpecItem item, char *itemValue);
37     HcfResult GetVerifySpecNum(SignSpecItem item, int32_t *itemValue);
38 private:
39     HcfVerify *verify_ = nullptr;
40 };
41 }
42 }
43 #endif