1 /*
2  * Copyright (c) 2023 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 NAPI_X509_CRL_H
17 #define NAPI_X509_CRL_H
18 
19 #include <string>
20 
21 #include "napi/native_api.h"
22 #include "napi/native_common.h"
23 #include "x509_crl.h"
24 #include "x509_crl_match_parameters.h"
25 
26 namespace OHOS {
27 namespace CertFramework {
28 class NapiX509Crl {
29 public:
30     explicit NapiX509Crl(HcfX509Crl *x509Crl);
31     ~NapiX509Crl();
32 
33     static void DefineX509CrlJSClass(napi_env env, napi_value exports, std::string className);
34     static void DefineX509CrlJS(napi_env env, napi_value exports, std::string className);
35     static void DefineX509CRLJS(napi_env env, napi_value exports, std::string className);
36     static napi_value NapiCreateX509CrlBase(napi_env env, napi_callback_info info, std::string createName);
37     static napi_value NapiCreateX509Crl(napi_env env, napi_callback_info info);
38     static napi_value NapiCreateX509CRL(napi_env env, napi_callback_info info);
39     static void CreateX509CrlExecute(napi_env env, void *data);
40     static void CreateX509CrlComplete(napi_env env, napi_status status, void *data);
41     static napi_value CreateX509Crl(napi_env env, std::string createName);
42 
43     napi_value IsRevoked(napi_env env, napi_callback_info info);
44     napi_value GetType(napi_env env, napi_callback_info info);
45     napi_value GetEncoded(napi_env env, napi_callback_info info);
46     napi_value Verify(napi_env env, napi_callback_info info);
47     napi_value GetVersion(napi_env env, napi_callback_info info);
48     napi_value GetIssuerDN(napi_env env, napi_callback_info info);
49     napi_value GetThisUpdate(napi_env env, napi_callback_info info);
50     napi_value GetNextUpdate(napi_env env, napi_callback_info info);
51     napi_value GetRevokedCertificate(napi_env env, napi_callback_info info, std::string returnClassName);
52     napi_value GetRevokedCertificateWithCert(napi_env env, napi_callback_info info, std::string returnClassName);
53     napi_value GetRevokedCertificates(napi_env env, napi_callback_info info, std::string returnClassName);
54     napi_value GetTBSCertList(napi_env env, napi_callback_info info);
55     napi_value GetSignature(napi_env env, napi_callback_info info);
56     napi_value GetSigAlgName(napi_env env, napi_callback_info info);
57     napi_value GetSigAlgOID(napi_env env, napi_callback_info info);
58     napi_value GetSigAlgParams(napi_env env, napi_callback_info info);
59     napi_value GetExtensions(napi_env env, napi_callback_info info);
60     napi_value ToString(napi_env env, napi_callback_info info);
61     napi_value HashCode(napi_env env, napi_callback_info info);
62     napi_value GetExtensionsObject(napi_env env, napi_callback_info info);
63     napi_value GetIssuerX500DistinguishedName(napi_env env, napi_callback_info info);
64     napi_value Match(napi_env env, napi_callback_info info);
65     CfResult MatchProc(HcfX509CrlMatchParams *param, bool &boolFlag);
66 
GetX509Crl()67     HcfX509Crl *GetX509Crl()
68     {
69         return x509Crl_;
70     }
71 
72     static thread_local napi_ref classCrlRef_;
73     static thread_local napi_ref classCRLRef_;
74 
75 private:
76     HcfX509Crl *x509Crl_ = nullptr;
77 };
78 } // namespace CertFramework
79 } // namespace OHOS
80 
81 #endif // NAPI_X509_CRL_H
82