• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "cf_param.h"
17 
18 #include "cj_x509_crl.h"
19 
FfiCertCjX509CrlNewInstance(const CfEncodingBlob * blob,CjX509Crl * returnObj)20 int32_t FfiCertCjX509CrlNewInstance(const CfEncodingBlob *blob, CjX509Crl *returnObj)
21 {
22     auto crl = static_cast<HcfX509Crl *>(malloc(sizeof(HcfX509Crl)));
23     if (crl == nullptr) {
24         return CF_ERR_MALLOC;
25     }
26     const auto errCode = HcfX509CrlCreate(blob, &crl);
27     if (errCode != CF_SUCCESS) {
28         free(crl);
29         return errCode;
30     }
31     returnObj->crl = crl;
32     return CF_SUCCESS;
33 }
34 
FfiCertCjX509CrlDeleteInstance(CjX509Crl self)35 void FfiCertCjX509CrlDeleteInstance(CjX509Crl self)
36 {
37     CfObjDestroy(self.crl);
38 }
39 
FfiCertCjX509CrlIsRevoked(const CjX509Crl self,const HcfX509Certificate * cert)40 bool FfiCertCjX509CrlIsRevoked(const CjX509Crl self, const HcfX509Certificate *cert)
41 {
42     return self.crl->base.isRevoked(&self.crl->base, &cert->base);
43 }
44 
FfiCertCjX509CrlGetType(const CjX509Crl self)45 const char *FfiCertCjX509CrlGetType(const CjX509Crl self)
46 {
47     return self.crl->base.getType(&self.crl->base);
48 }
49 
FfiCertCjX509CrlGetEncoded(const CjX509Crl self,CfEncodingBlob * encodedOut)50 CfResult FfiCertCjX509CrlGetEncoded(const CjX509Crl self, CfEncodingBlob *encodedOut)
51 {
52     return self.crl->getEncoded(self.crl, encodedOut);
53 }
54 
FfiCertCjX509CrlVerify(const CjX509Crl self,HcfPubKey * pubKey)55 CfResult FfiCertCjX509CrlVerify(const CjX509Crl self, HcfPubKey *pubKey)
56 {
57     return self.crl->verify(self.crl, pubKey);
58 }
59 
FfiCertCjX509CrlGetVersion(const CjX509Crl self)60 long FfiCertCjX509CrlGetVersion(const CjX509Crl self)
61 {
62     return self.crl->getVersion(self.crl);
63 }
64 
FfiCertCjX509CrlGetIssuerName(const CjX509Crl self,CfBlob * out)65 CfResult FfiCertCjX509CrlGetIssuerName(const CjX509Crl self, CfBlob *out)
66 {
67     return self.crl->getIssuerName(self.crl, out);
68 }
69 
FfiCertCjX509CrlGetLastUpdate(const CjX509Crl self,CfBlob * out)70 CfResult FfiCertCjX509CrlGetLastUpdate(const CjX509Crl self, CfBlob *out)
71 {
72     return self.crl->getLastUpdate(self.crl, out);
73 }
74 
FfiCertCjX509CrlGetNextUpdate(const CjX509Crl self,CfBlob * out)75 CfResult FfiCertCjX509CrlGetNextUpdate(const CjX509Crl self, CfBlob *out)
76 {
77     return self.crl->getNextUpdate(self.crl, out);
78 }
79 
FfiCertCjX509CrlGetRevokedCert(const CjX509Crl self,const CfBlob * serialNumber,CjX509CrlEntry * entryOut)80 CfResult FfiCertCjX509CrlGetRevokedCert(const CjX509Crl self, const CfBlob *serialNumber,
81                                         CjX509CrlEntry *entryOut)
82 {
83     return self.crl->getRevokedCert(self.crl, serialNumber, &entryOut->crlEntry);
84 }
85 
FfiCertCjX509CrlGetRevokedCertWithCert(const CjX509Crl self,HcfX509Certificate * cert,CjX509CrlEntry * entryOut)86 CfResult FfiCertCjX509CrlGetRevokedCertWithCert(const CjX509Crl self, HcfX509Certificate *cert,
87                                                 CjX509CrlEntry *entryOut)
88 {
89     return self.crl->getRevokedCertWithCert(self.crl, cert, &entryOut->crlEntry);
90 }
91 
FfiCertCjX509CrlGetRevokedCerts(const CjX509Crl self,CfArray * entrysOut)92 CfResult FfiCertCjX509CrlGetRevokedCerts(const CjX509Crl self, CfArray *entrysOut)
93 {
94     return self.crl->getRevokedCerts(self.crl, entrysOut);
95 }
96 
FfiCertCjX509CrlGetTbsInfo(const CjX509Crl self,CfBlob * tbsCertListOut)97 CfResult FfiCertCjX509CrlGetTbsInfo(const CjX509Crl self, CfBlob *tbsCertListOut)
98 {
99     return self.crl->getTbsInfo(self.crl, tbsCertListOut);
100 }
101 
FfiCertCjX509CrlGetSignature(const CjX509Crl self,CfBlob * signature)102 CfResult FfiCertCjX509CrlGetSignature(const CjX509Crl self, CfBlob *signature)
103 {
104     return self.crl->getSignature(self.crl, signature);
105 }
106 
FfiCertCjX509CrlGetSignatureAlgName(const CjX509Crl self,CfBlob * out)107 CfResult FfiCertCjX509CrlGetSignatureAlgName(const CjX509Crl self, CfBlob *out)
108 {
109     return self.crl->getSignatureAlgName(self.crl, out);
110 }
111 
FfiCertCjX509CrlGetSignatureAlgOid(const CjX509Crl self,CfBlob * out)112 CfResult FfiCertCjX509CrlGetSignatureAlgOid(const CjX509Crl self, CfBlob *out)
113 {
114     return self.crl->getSignatureAlgOid(self.crl, out);
115 }
116 
FfiCertCjX509CrlGetSignatureAlgParams(const CjX509Crl self,CfBlob * sigAlgParamOut)117 CfResult FfiCertCjX509CrlGetSignatureAlgParams(const CjX509Crl self, CfBlob *sigAlgParamOut)
118 {
119     return self.crl->getSignatureAlgParams(self.crl, sigAlgParamOut);
120 }
121 
FfiCertCjX509CrlGetExtensions(const CjX509Crl self,CfBlob * out)122 CfResult FfiCertCjX509CrlGetExtensions(const CjX509Crl self, CfBlob *out)
123 {
124     return self.crl->getExtensions(self.crl, out);
125 }
126 
FfiCertCjX509CrlMatch(const CjX509Crl self,const CjX509CrlMatchParams * matchParams,bool * out)127 CfResult FfiCertCjX509CrlMatch(const CjX509Crl self, const CjX509CrlMatchParams *matchParams, bool *out)
128 {
129     HcfCertificate *certPtr = nullptr;
130     if (matchParams->x509Cert != nullptr) {
131         certPtr = &matchParams->x509Cert->base;
132     }
133     const auto hcfParams = HcfX509CrlMatchParams{
134         .issuer = matchParams->issuer,
135         .x509Cert = certPtr,
136         .updateDateTime = matchParams->updateDateTime,
137         .maxCRL = matchParams->maxCRL,
138         .minCRL = matchParams->minCRL,
139     };
140     return self.crl->match(self.crl, &hcfParams, out);
141 }
142 
FfiCertCjX509CrlToString(const CjX509Crl self,CfBlob * out)143 CfResult FfiCertCjX509CrlToString(const CjX509Crl self, CfBlob *out)
144 {
145     return self.crl->toString(self.crl, out);
146 }
147 
FfiCertCjX509CrlHashCode(const CjX509Crl self,CfBlob * out)148 CfResult FfiCertCjX509CrlHashCode(const CjX509Crl self, CfBlob *out)
149 {
150     return self.crl->hashCode(self.crl, out);
151 }
152 
FfiCertCjX509CrlGetExtensionsObject(const CjX509Crl self,CfBlob * out)153 CfResult FfiCertCjX509CrlGetExtensionsObject(const CjX509Crl self, CfBlob *out)
154 {
155     return self.crl->getExtensionsObject(self.crl, out);
156 }
157