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