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_mock.h"
17 #include "cf_log.h"
18 
19 using namespace std;
20 using namespace testing::ext;
21 
22 using namespace CFMock;
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 int __real_OPENSSL_sk_num(const OPENSSL_STACK *st);
29 void *__real_OPENSSL_sk_value(const OPENSSL_STACK *st, int i);
30 BIO *__real_BIO_new_mem_buf(const void *buf, int len);
31 CfResult __real_HcfX509CertificateCreate(const CfEncodingBlob *inStream, HcfX509Certificate **returnObj);
32 OPENSSL_STACK *__real_OPENSSL_sk_new_null(void);
33 int __real_i2d_X509(X509 *a, unsigned char **out);
34 int __real_X509_STORE_add_cert(X509_STORE *ctx, X509 *x);
35 X509_STORE_CTX *__real_X509_STORE_CTX_new(void);
36 X509_STORE *__real_X509_STORE_new(void);
37 int __real_X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509, STACK_OF(X509) * chain);
38 int __real_X509_verify_cert(X509_STORE_CTX *ctx);
39 int __real_i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp);
40 void *__real_X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx);
41 int __real_i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **out);
42 int __real_i2d_AUTHORITY_KEYID(AUTHORITY_KEYID *a, unsigned char **out);
43 CfResult __real_DeepCopyDataToBlob(const unsigned char *data, uint32_t len, CfBlob *outBlob);
44 ASN1_TIME *__real_ASN1_TIME_new(void);
45 EVP_PKEY *__real_X509_get_pubkey(X509 *x);
46 ASN1_OBJECT *__real_OBJ_nid2obj(int n);
47 int __real_OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name);
48 BIGNUM *__real_BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
49 const ASN1_INTEGER *__real_X509_get0_serialNumber(const X509 *x);
50 int __real_i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **out);
51 int __real_ASN1_TIME_normalize(ASN1_TIME *s);
52 ASN1_TIME *__real_X509_getm_notBefore(const X509 *x);
53 ASN1_TIME *__real_X509_getm_notAfter(const X509 *x);
54 void __real_X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, const void **ppval, const X509_ALGOR *algor);
55 ASN1_TYPE *__real_ASN1_TYPE_new(void);
56 int __real_ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
57 int __real_i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **out);
58 long __real_ASN1_INTEGER_get(const ASN1_INTEGER *a);
59 const unsigned char *__real_ASN1_STRING_get0_data(const ASN1_STRING *x);
60 int __real_i2d_GENERAL_NAME(GENERAL_NAME *a, unsigned char **out);
61 X509_EXTENSION *__real_X509_get_ext(const X509 *x, X509_EXTENSION *loc);
62 void *__real_X509V3_EXT_d2i(X509_EXTENSION *ext);
63 void *__real_GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype);
64 int __real_X509_verify(X509 *a, EVP_PKEY *r);
65 CfResult __real_DeepCopyBlobToBlob(const CfBlob *inBlob, CfBlob **outBlob);
66 char *__real_X509_NAME_oneline(const X509_NAME *a, char *buf, int size);
67 int __real_OPENSSL_sk_push(OPENSSL_STACK *st, const int data);
68 int __real_i2d_X509_REVOKED(X509_REVOKED *a, unsigned char **out);
69 int __real_i2d_X509_CRL(X509_CRL *a, unsigned char **out);
70 OPENSSL_STACK *__real_OPENSSL_sk_deep_copy(const OPENSSL_STACK *, OPENSSL_sk_copyfunc c, OPENSSL_sk_freefunc f);
71 int __real_OBJ_obj2nid(const ASN1_OBJECT *o);
72 X509 *__real_X509_dup(X509 *x509);
73 int __real_i2d_X509_EXTENSIONS(X509_EXTENSIONS *a, unsigned char **out);
74 int __real_X509_check_host(X509 *x, const char *chk, size_t chklen, unsigned int flags, char **peername);
75 OCSP_REQUEST *__real_OCSP_REQUEST_new(void);
76 X509_CRL *__real_X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout);
77 struct stack_st_OPENSSL_STRING *__real_X509_get1_ocsp(X509 *x);
78 int __real_OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, char **pport, int *pport_num,
79     char **ppath, char **pquery, char **pfrag);
80 int __real_X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder, size_t *pderlen);
81 const char *__real_OBJ_nid2sn(int n);
82 int __real_ASN1_STRING_length(const ASN1_STRING *x);
83 CfResult __real_DeepCopyDataToOut(const char *data, uint32_t len, CfBlob *out);
84 char *__real_CRYPTO_strdup(const char *str, const char *file, int line);
85 X509_NAME *__real_X509_NAME_new(void);
86 int __real_OBJ_txt2nid(const char *s);
87 int __real_X509_NAME_add_entry_by_NID(
88     X509_NAME *name, int nid, int type, const unsigned char *bytes, int len, int loc, int set);
89 BIO *__real_BIO_new(const BIO_METHOD *type);
90 int __real_X509_print(BIO *bp, X509 *x);
91 long __real_BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
92 int __real_i2d_X509_bio(BIO *bp, X509 *x509);
93 int __real_PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca);
94 bool __real_CheckIsSelfSigned(const X509 *cert);
95 #ifdef __cplusplus
96 }
97 #endif
98 
99 static bool g_mockTagX509Openssl = false;
100 
101 static bool g_mockTagX509HcfCert = false;
102 
GetInstance(void)103 NiceMock<X509OpensslMock> &X509OpensslMock::GetInstance(void)
104 {
105     static NiceMock<X509OpensslMock> gX509OpensslMock;
106     return gX509OpensslMock;
107 }
108 
SetMockFunDefaultBehaviorPartOne(void)109 void X509OpensslMock::SetMockFunDefaultBehaviorPartOne(void)
110 {
111     ON_CALL(*this, X509_dup).WillByDefault([this](X509 *x509) { return __real_X509_dup(x509); });
112 
113     ON_CALL(*this, i2d_X509_EXTENSIONS).WillByDefault([this](X509_EXTENSIONS *a, unsigned char **out) {
114         return __real_i2d_X509_EXTENSIONS(a, out);
115     });
116 
117     ON_CALL(*this, OBJ_obj2nid).WillByDefault([this](const ASN1_OBJECT *o) { return __real_OBJ_obj2nid(o); });
118 
119     ON_CALL(*this, OPENSSL_sk_deep_copy)
120         .WillByDefault([this](const OPENSSL_STACK *st, OPENSSL_sk_copyfunc c, OPENSSL_sk_freefunc f) {
121             return __real_OPENSSL_sk_deep_copy(st, c, f);
122         });
123 
124     ON_CALL(*this, i2d_X509_CRL).WillByDefault([this](X509_CRL *a, unsigned char **out) {
125         return __real_i2d_X509_CRL(a, out);
126     });
127 
128     ON_CALL(*this, i2d_X509_REVOKED).WillByDefault([this](X509_REVOKED *a, unsigned char **out) {
129         return __real_i2d_X509_REVOKED(a, out);
130     });
131 
132     ON_CALL(*this, OPENSSL_sk_push).WillByDefault([this](OPENSSL_STACK *st, const int data) {
133         return __real_OPENSSL_sk_push(st, data);
134     });
135 
136     ON_CALL(*this, X509_NAME_oneline).WillByDefault([this](const X509_NAME *a, char *buf, int size) {
137         return __real_X509_NAME_oneline(a, buf, size);
138     });
139 
140     ON_CALL(*this, DeepCopyBlobToBlob).WillByDefault([this](const CfBlob *inBlob, CfBlob **outBlob) {
141         return __real_DeepCopyBlobToBlob(inBlob, outBlob);
142     });
143 
144     ON_CALL(*this, X509_verify).WillByDefault([this](X509 *a, EVP_PKEY *r) { return __real_X509_verify(a, r); });
145 
146     ON_CALL(*this, GENERAL_NAME_get0_value).WillByDefault([this](const GENERAL_NAME *a, int *ptype) {
147         return __real_GENERAL_NAME_get0_value(a, ptype);
148     });
149 
150     ON_CALL(*this, X509V3_EXT_d2i).WillByDefault([this](X509_EXTENSION *ext) { return __real_X509V3_EXT_d2i(ext); });
151 
152     ON_CALL(*this, X509_get_ext).WillByDefault([this](const X509 *x, X509_EXTENSION *loc) {
153         return __real_X509_get_ext(x, loc);
154     });
155 
156     ON_CALL(*this, i2d_GENERAL_NAME).WillByDefault([this](GENERAL_NAME *a, unsigned char **out) {
157         return __real_i2d_GENERAL_NAME(a, out);
158     });
159 
160     ON_CALL(*this, ASN1_STRING_get0_data).WillByDefault([this](const ASN1_STRING *x) {
161         return __real_ASN1_STRING_get0_data(x);
162     });
163 
164     ON_CALL(*this, ASN1_INTEGER_get).WillByDefault([this](const ASN1_INTEGER *a) {
165         return __real_ASN1_INTEGER_get(a);
166     });
167 }
168 
SetMockFunDefaultBehaviorPartTwo(void)169 void X509OpensslMock::SetMockFunDefaultBehaviorPartTwo(void)
170 {
171     ON_CALL(*this, i2d_ASN1_TYPE).WillByDefault([this](ASN1_TYPE *a, unsigned char **out) {
172         return __real_i2d_ASN1_TYPE(a, out);
173     });
174 
175     ON_CALL(*this, ASN1_TYPE_set1).WillByDefault([this](ASN1_TYPE *a, int type, const void *value) {
176         return __real_ASN1_TYPE_set1(a, type, value);
177     });
178 
179     ON_CALL(*this, ASN1_TYPE_new).WillByDefault([this](void) { return __real_ASN1_TYPE_new(); });
180     ON_CALL(*this, ASN1_TIME_normalize).WillByDefault([this](ASN1_TIME *s) { return __real_ASN1_TIME_normalize(s); });
181     ON_CALL(*this, X509_getm_notBefore).WillByDefault([this](const X509 *x) { return __real_X509_getm_notBefore(x); });
182     ON_CALL(*this, X509_getm_notAfter).WillByDefault([this](const X509 *x) { return __real_X509_getm_notAfter(x); });
183     ON_CALL(*this, X509_ALGOR_get0)
184         .WillByDefault([this](const ASN1_OBJECT **paobj, int *pptype, const void **ppval, const X509_ALGOR *algor) {
185             return __real_X509_ALGOR_get0(paobj, pptype, ppval, algor);
186         });
187 
188     ON_CALL(*this, OPENSSL_sk_num).WillByDefault([this](const OPENSSL_STACK *st) { return __real_OPENSSL_sk_num(st); });
189 
190     ON_CALL(*this, BIO_new_mem_buf).WillByDefault([this](const void *buf, int len) {
191         return __real_BIO_new_mem_buf(buf, len);
192     });
193 
194     ON_CALL(*this, i2d_X509).WillByDefault([this](X509 *a, unsigned char **out) { return __real_i2d_X509(a, out); });
195 
196     ON_CALL(*this, X509_verify_cert).WillByDefault([this](X509_STORE_CTX *ctx) {
197         return __real_X509_verify_cert(ctx);
198     });
199 
200     ON_CALL(*this, HcfX509CertificateCreate)
201         .WillByDefault([this](const CfEncodingBlob *inStream, HcfX509Certificate **returnObj) {
202             return __real_HcfX509CertificateCreate(inStream, returnObj);
203         });
204 
205     ON_CALL(*this, OPENSSL_sk_new_null).WillByDefault([this](void) { return __real_OPENSSL_sk_new_null(); });
206 
207     ON_CALL(*this, X509_STORE_CTX_new).WillByDefault([this](void) { return __real_X509_STORE_CTX_new(); });
208 
209     ON_CALL(*this, X509_STORE_new).WillByDefault([this](void) { return __real_X509_STORE_new(); });
210 
211     ON_CALL(*this, X509_STORE_CTX_init)
212         .WillByDefault([this](X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509, STACK_OF(X509) * chain) {
213             return __real_X509_STORE_CTX_init(ctx, store, x509, chain);
214         });
215 
216     ON_CALL(*this, X509_STORE_add_cert).WillByDefault([this](X509_STORE *ctx, X509 *x) {
217         return __real_X509_STORE_add_cert(ctx, x);
218     });
219 
220     ON_CALL(*this, OPENSSL_sk_value).WillByDefault([this](const OPENSSL_STACK *st, int i) {
221         return __real_OPENSSL_sk_value(st, i);
222     });
223 
224     ON_CALL(*this, i2d_PUBKEY).WillByDefault([this](EVP_PKEY *a, unsigned char **pp) {
225         return __real_i2d_PUBKEY(a, pp);
226     });
227 }
228 
SetMockFunDefaultBehaviorPartThree(void)229 void X509OpensslMock::SetMockFunDefaultBehaviorPartThree(void)
230 {
231     ON_CALL(*this, X509_get_ext_d2i).WillByDefault([this](const X509 *x, int nid, int *crit, int *idx) {
232         return __real_X509_get_ext_d2i(x, nid, crit, idx);
233     });
234 
235     ON_CALL(*this, i2d_ASN1_OCTET_STRING).WillByDefault([this](ASN1_OCTET_STRING *a, unsigned char **out) {
236         return __real_i2d_ASN1_OCTET_STRING(a, out);
237     });
238 
239     ON_CALL(*this, i2d_AUTHORITY_KEYID).WillByDefault([this](AUTHORITY_KEYID *a, unsigned char **out) {
240         return __real_i2d_AUTHORITY_KEYID(a, out);
241     });
242 
243     ON_CALL(*this, DeepCopyDataToBlob).WillByDefault([this](const unsigned char *data, uint32_t len, CfBlob *outBlob) {
244         return __real_DeepCopyDataToBlob(data, len, outBlob);
245     });
246 
247     ON_CALL(*this, ASN1_TIME_new).WillByDefault([this](void) { return __real_ASN1_TIME_new(); });
248 
249     ON_CALL(*this, X509_get_pubkey).WillByDefault([this](X509 *x) { return __real_X509_get_pubkey(x); });
250 
251     ON_CALL(*this, OBJ_nid2obj).WillByDefault([this](int n) { return __real_OBJ_nid2obj(n); });
252 
253     ON_CALL(*this, OBJ_obj2txt).WillByDefault([this](char *buf, int buf_len, const ASN1_OBJECT *a, int no_name) {
254         return __real_OBJ_obj2txt(buf, buf_len, a, no_name);
255     });
256 
257     ON_CALL(*this, BN_bin2bn).WillByDefault([this](const unsigned char *s, int len, BIGNUM *ret) {
258         return __real_BN_bin2bn(s, len, ret);
259     });
260 
261     ON_CALL(*this, X509_get0_serialNumber).WillByDefault([this](const X509 *x) {
262         return __real_X509_get0_serialNumber(x);
263     });
264 
265     ON_CALL(*this, i2d_ASN1_INTEGER).WillByDefault([this](ASN1_INTEGER *a, unsigned char **out) {
266         return __real_i2d_ASN1_INTEGER(a, out);
267     });
268 
269     ON_CALL(*this, X509_check_host)
270         .WillByDefault([this](X509 *x, const char *chk, size_t chklen, unsigned int flags, char **peername) {
271             return __real_X509_check_host(x, chk, chklen, flags, peername);
272         });
273 
274     ON_CALL(*this, OCSP_REQUEST_new).WillByDefault([this](void) { return __real_OCSP_REQUEST_new(); });
275 
276     ON_CALL(*this, X509_CRL_load_http).WillByDefault([this](const char *url, BIO *bio, BIO *rbio, int timeout) {
277         return __real_X509_CRL_load_http(url, bio, rbio, timeout);
278     });
279 
280     ON_CALL(*this, X509_get1_ocsp).WillByDefault([this](X509 *x) { return __real_X509_get1_ocsp(x); });
281 }
282 
SetMockFunDefaultBehaviorPartFour(void)283 void X509OpensslMock::SetMockFunDefaultBehaviorPartFour(void)
284 {
285     ON_CALL(*this, OSSL_HTTP_parse_url)
286         .WillByDefault([this](const char *url, int *pssl, char **puser, char **phost, char **pport, int *pport_num,
287                            char **ppath, char **pquery, char **pfrag) {
288             return __real_OSSL_HTTP_parse_url(url, pssl, puser, phost, pport, pport_num, ppath, pquery, pfrag);
289         });
290     ON_CALL(*this, X509_NAME_get0_der)
291         .WillByDefault([this](X509_NAME *nm, const unsigned char **pder, size_t *pderlen) {
292             return __real_X509_NAME_get0_der(nm, pder, pderlen);
293         });
294 
295     ON_CALL(*this, OBJ_nid2sn).WillByDefault([this](int n) { return __real_OBJ_nid2sn(n); });
296 
297     ON_CALL(*this, ASN1_STRING_length).WillByDefault([this](const ASN1_STRING *x) {
298         return __real_ASN1_STRING_length(x);
299     });
300 
301     ON_CALL(*this, DeepCopyDataToOut).WillByDefault([this](const char *data, uint32_t len, CfBlob *out) {
302         return __real_DeepCopyDataToOut(data, len, out);
303     });
304 
305     ON_CALL(*this, CRYPTO_strdup).WillByDefault([this](const char *str, const char *file, int line) {
306         return __real_CRYPTO_strdup(str, file, line);
307     });
308 
309     ON_CALL(*this, X509_NAME_new).WillByDefault([this](void) { return __real_X509_NAME_new(); });
310 
311     ON_CALL(*this, OBJ_txt2nid).WillByDefault([this](const char *s) { return __real_OBJ_txt2nid(s); });
312 
313     ON_CALL(*this, X509_NAME_add_entry_by_NID)
314         .WillByDefault(
315         [this](X509_NAME *name, int nid, int type, const unsigned char *bytes, int len, int loc, int set) {
316             return __real_X509_NAME_add_entry_by_NID(name, nid, type, bytes, len, loc, set);
317         });
318 
319     ON_CALL(*this, BIO_new).WillByDefault([this](const BIO_METHOD *type) { return __real_BIO_new(type); });
320 
321     ON_CALL(*this, X509_print).WillByDefault([this](BIO *bp, X509 *x) { return __real_X509_print(bp, x); });
322 
323     ON_CALL(*this, BIO_ctrl).WillByDefault([this](BIO *bp, int cmd, long larg, void *parg) {
324         return __real_BIO_ctrl(bp, cmd, larg, parg);
325     });
326 
327     ON_CALL(*this, i2d_X509_bio).WillByDefault([this](BIO *bp, X509 *x509) { return __real_i2d_X509_bio(bp, x509); });
328 
329     ON_CALL(*this, PKCS12_parse)
330         .WillByDefault([this](PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca) {
331             return __real_PKCS12_parse(p12, pass, pkey, cert, ca);
332         });
333 
334     ON_CALL(*this, CheckIsSelfSigned).WillByDefault([this](const X509 *cert) {
335         return __real_CheckIsSelfSigned(cert);
336         });
337 }
338 
X509OpensslMock()339 X509OpensslMock::X509OpensslMock()
340 {
341     SetMockFunDefaultBehaviorPartOne();
342     SetMockFunDefaultBehaviorPartTwo();
343     SetMockFunDefaultBehaviorPartThree();
344     SetMockFunDefaultBehaviorPartFour();
345 }
346 
~X509OpensslMock()347 X509OpensslMock::~X509OpensslMock() {}
348 
SetMockFlag(bool flag)349 void X509OpensslMock::SetMockFlag(bool flag)
350 {
351     g_mockTagX509Openssl = flag;
352 }
353 
SetHcfMockFlag(bool flag)354 void X509OpensslMock::SetHcfMockFlag(bool flag)
355 {
356     g_mockTagX509HcfCert = flag;
357 }
358 
GetMockFlag(void)359 bool X509OpensslMock::GetMockFlag(void)
360 {
361     return g_mockTagX509Openssl;
362 }
363 
364 #ifdef __cplusplus
365 extern "C" {
366 #endif
367 
__wrap_i2d_X509_EXTENSIONS(X509_EXTENSIONS * a,unsigned char ** out)368 int __wrap_i2d_X509_EXTENSIONS(X509_EXTENSIONS *a, unsigned char **out)
369 {
370     if (g_mockTagX509Openssl) {
371         CF_LOG_I("X509OpensslMock i2d_X509_EXTENSIONS");
372         return X509OpensslMock::GetInstance().i2d_X509_EXTENSIONS(a, out);
373     } else {
374         return __real_i2d_X509_EXTENSIONS(a, out);
375     }
376 }
377 
__wrap_OPENSSL_sk_num(const OPENSSL_STACK * st)378 int __wrap_OPENSSL_sk_num(const OPENSSL_STACK *st)
379 {
380     if (g_mockTagX509Openssl) {
381         CF_LOG_I("X509OpensslMock OPENSSL_sk_num");
382         return X509OpensslMock::GetInstance().OPENSSL_sk_num(st);
383     } else {
384         return __real_OPENSSL_sk_num(st);
385     }
386 }
387 
__wrap_X509_getm_notBefore(const X509 * x)388 ASN1_TIME *__wrap_X509_getm_notBefore(const X509 *x)
389 {
390     if (g_mockTagX509Openssl) {
391         CF_LOG_I("X509OpensslMock X509_getm_notBefore");
392         return X509OpensslMock::GetInstance().X509_getm_notBefore(x);
393     } else {
394         return __real_X509_getm_notBefore(x);
395     }
396 }
397 
__wrap_X509_getm_notAfter(const X509 * x)398 ASN1_TIME *__wrap_X509_getm_notAfter(const X509 *x)
399 {
400     if (g_mockTagX509Openssl) {
401         CF_LOG_I("X509OpensslMock X509_getm_notAfter");
402         return X509OpensslMock::GetInstance().X509_getm_notAfter(x);
403     } else {
404         return __real_X509_getm_notAfter(x);
405     }
406 }
407 
__wrap_X509_NAME_oneline(const X509_NAME * a,char * buf,int size)408 char *__wrap_X509_NAME_oneline(const X509_NAME *a, char *buf, int size)
409 {
410     if (g_mockTagX509Openssl) {
411         CF_LOG_I("X509OpensslMock X509_NAME_oneline");
412         return X509OpensslMock::GetInstance().X509_NAME_oneline(a, buf, size);
413     } else {
414         return __real_X509_NAME_oneline(a, buf, size);
415     }
416 }
417 
__wrap_i2d_X509(X509 * a,unsigned char ** out)418 int __wrap_i2d_X509(X509 *a, unsigned char **out)
419 {
420     if (g_mockTagX509Openssl) {
421         CF_LOG_I("X509OpensslMock i2d_X509");
422         return X509OpensslMock::GetInstance().i2d_X509(a, out);
423     } else {
424         return __real_i2d_X509(a, out);
425     }
426 }
427 
__wrap_BIO_new_mem_buf(const void * buf,int len)428 BIO *__wrap_BIO_new_mem_buf(const void *buf, int len)
429 {
430     if (g_mockTagX509Openssl) {
431         CF_LOG_I("X509OpensslMock BIO_new_mem_buf");
432         return X509OpensslMock::GetInstance().BIO_new_mem_buf(buf, len);
433     } else {
434         return __real_BIO_new_mem_buf(buf, len);
435     }
436 }
437 
__wrap_OPENSSL_sk_value(const OPENSSL_STACK * st,int i)438 void *__wrap_OPENSSL_sk_value(const OPENSSL_STACK *st, int i)
439 {
440     if (g_mockTagX509Openssl) {
441         CF_LOG_I("X509OpensslMock OPENSSL_sk_value");
442         return X509OpensslMock::GetInstance().OPENSSL_sk_value(st, i);
443     } else {
444         return __real_OPENSSL_sk_value(st, i);
445     }
446 }
447 
__wrap_HcfX509CertificateCreate(const CfEncodingBlob * inStream,HcfX509Certificate ** returnObj)448 CfResult __wrap_HcfX509CertificateCreate(const CfEncodingBlob *inStream, HcfX509Certificate **returnObj)
449 {
450     if (g_mockTagX509Openssl) {
451         CF_LOG_I("X509OpensslMock HcfX509CertificateCreate");
452         return X509OpensslMock::GetInstance().HcfX509CertificateCreate(inStream, returnObj);
453     } else {
454         return __real_HcfX509CertificateCreate(inStream, returnObj);
455     }
456 }
457 
__wrap_OPENSSL_sk_new_null(void)458 OPENSSL_STACK *__wrap_OPENSSL_sk_new_null(void)
459 {
460     if (g_mockTagX509Openssl) {
461         CF_LOG_I("X509OpensslMock OPENSSL_sk_new_null");
462         return X509OpensslMock::GetInstance().OPENSSL_sk_new_null();
463     } else {
464         return __real_OPENSSL_sk_new_null();
465     }
466 }
467 
__wrap_X509_STORE_add_cert(X509_STORE * ctx,X509 * x)468 int __wrap_X509_STORE_add_cert(X509_STORE *ctx, X509 *x)
469 {
470     if (g_mockTagX509Openssl) {
471         CF_LOG_I("X509OpensslMock X509_STORE_add_cert");
472         return X509OpensslMock::GetInstance().X509_STORE_add_cert(ctx, x);
473     } else {
474         return __real_X509_STORE_add_cert(ctx, x);
475     }
476 }
477 
__wrap_X509_STORE_CTX_new(void)478 X509_STORE_CTX *__wrap_X509_STORE_CTX_new(void)
479 {
480     if (g_mockTagX509Openssl) {
481         CF_LOG_I("X509OpensslMock X509_STORE_CTX_new");
482         return X509OpensslMock::GetInstance().X509_STORE_CTX_new();
483     } else {
484         return __real_X509_STORE_CTX_new();
485     }
486 }
487 
__wrap_X509_STORE_new(void)488 X509_STORE *__wrap_X509_STORE_new(void)
489 {
490     if (g_mockTagX509Openssl) {
491         CF_LOG_I("X509OpensslMock X509_STORE_new");
492         return X509OpensslMock::GetInstance().X509_STORE_new();
493     } else {
494         return __real_X509_STORE_new();
495     }
496 }
497 
__wrap_X509_STORE_CTX_init(X509_STORE_CTX * ctx,X509_STORE * store,X509 * x509,STACK_OF (X509)* chain)498 int __wrap_X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509, STACK_OF(X509) * chain)
499 {
500     if (g_mockTagX509Openssl) {
501         CF_LOG_I("X509OpensslMock X509_STORE_CTX_init");
502         return X509OpensslMock::GetInstance().X509_STORE_CTX_init(ctx, store, x509, chain);
503     } else {
504         return __real_X509_STORE_CTX_init(ctx, store, x509, chain);
505     }
506 }
507 
__wrap_X509_verify_cert(X509_STORE_CTX * ctx)508 int __wrap_X509_verify_cert(X509_STORE_CTX *ctx)
509 {
510     if (g_mockTagX509Openssl) {
511         CF_LOG_I("X509OpensslMock X509_verify_cert");
512         return X509OpensslMock::GetInstance().X509_verify_cert(ctx);
513     } else {
514         return __real_X509_verify_cert(ctx);
515     }
516 }
517 
__wrap_i2d_PUBKEY(EVP_PKEY * a,unsigned char ** pp)518 int __wrap_i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp)
519 {
520     if (g_mockTagX509Openssl) {
521         CF_LOG_I("X509OpensslMock i2d_PUBKEY");
522         return X509OpensslMock::GetInstance().i2d_PUBKEY(a, pp);
523     } else {
524         return __real_i2d_PUBKEY(a, pp);
525     }
526 }
527 
__wrap_X509_get_ext_d2i(const X509 * x,int nid,int * crit,int * idx)528 void *__wrap_X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx)
529 {
530     if (g_mockTagX509Openssl) {
531         CF_LOG_I("X509OpensslMock X509_get_ext_d2i");
532         return X509OpensslMock::GetInstance().X509_get_ext_d2i(x, nid, crit, idx);
533     } else {
534         return __real_X509_get_ext_d2i(x, nid, crit, idx);
535     }
536 }
537 
__wrap_i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING * a,unsigned char ** out)538 int __wrap_i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **out)
539 {
540     if (g_mockTagX509Openssl) {
541         CF_LOG_I("X509OpensslMock i2d_ASN1_OCTET_STRING");
542         return X509OpensslMock::GetInstance().i2d_ASN1_OCTET_STRING(a, out);
543     } else {
544         return __real_i2d_ASN1_OCTET_STRING(a, out);
545     }
546 }
547 
__wrap_i2d_AUTHORITY_KEYID(AUTHORITY_KEYID * a,unsigned char ** out)548 int __wrap_i2d_AUTHORITY_KEYID(AUTHORITY_KEYID *a, unsigned char **out)
549 {
550     if (g_mockTagX509Openssl) {
551         CF_LOG_I("X509OpensslMock i2d_AUTHORITY_KEYID");
552         return X509OpensslMock::GetInstance().i2d_AUTHORITY_KEYID(a, out);
553     } else {
554         return __real_i2d_AUTHORITY_KEYID(a, out);
555     }
556 }
557 
__wrap_DeepCopyDataToBlob(const unsigned char * data,uint32_t len,CfBlob * outBlob)558 CfResult __wrap_DeepCopyDataToBlob(const unsigned char *data, uint32_t len, CfBlob *outBlob)
559 {
560     if (g_mockTagX509Openssl) {
561         CF_LOG_I("X509OpensslMock DeepCopyDataToBlob");
562         return X509OpensslMock::GetInstance().DeepCopyDataToBlob(data, len, outBlob);
563     } else {
564         return __real_DeepCopyDataToBlob(data, len, outBlob);
565     }
566 }
567 
__wrap_ASN1_TIME_new(void)568 ASN1_TIME *__wrap_ASN1_TIME_new(void)
569 {
570     if (g_mockTagX509Openssl) {
571         CF_LOG_I("X509OpensslMock ASN1_TIME_new");
572         return X509OpensslMock::GetInstance().ASN1_TIME_new();
573     } else {
574         return __real_ASN1_TIME_new();
575     }
576 }
577 
__wrap_X509_get0_serialNumber(const X509 * x)578 const ASN1_INTEGER *__wrap_X509_get0_serialNumber(const X509 *x)
579 {
580     if (g_mockTagX509Openssl) {
581         CF_LOG_I("X509OpensslMock X509_get0_serialNumber");
582         return X509OpensslMock::GetInstance().X509_get0_serialNumber(x);
583     } else {
584         return __real_X509_get0_serialNumber(x);
585     }
586 }
587 
__wrap_i2d_ASN1_INTEGER(ASN1_INTEGER * a,unsigned char ** out)588 int __wrap_i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **out)
589 {
590     if (g_mockTagX509Openssl) {
591         CF_LOG_I("X509OpensslMock i2d_ASN1_INTEGER");
592         return X509OpensslMock::GetInstance().i2d_ASN1_INTEGER(a, out);
593     } else {
594         return __real_i2d_ASN1_INTEGER(a, out);
595     }
596 }
597 
__wrap_X509_get_pubkey(X509 * x)598 EVP_PKEY *__wrap_X509_get_pubkey(X509 *x)
599 {
600     if (g_mockTagX509Openssl) {
601         CF_LOG_I("X509OpensslMock X509_get_pubkey");
602         return X509OpensslMock::GetInstance().X509_get_pubkey(x);
603     } else {
604         return __real_X509_get_pubkey(x);
605     }
606 }
607 
__wrap_OBJ_nid2obj(int n)608 ASN1_OBJECT *__wrap_OBJ_nid2obj(int n)
609 {
610     if (g_mockTagX509Openssl) {
611         CF_LOG_I("X509OpensslMock OBJ_nid2obj");
612         return X509OpensslMock::GetInstance().OBJ_nid2obj(n);
613     } else {
614         return __real_OBJ_nid2obj(n);
615     }
616 }
617 
__wrap_OBJ_obj2txt(char * buf,int buf_len,const ASN1_OBJECT * a,int no_name)618 int __wrap_OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
619 {
620     if (g_mockTagX509Openssl) {
621         CF_LOG_I("X509OpensslMock OBJ_obj2txt");
622         return X509OpensslMock::GetInstance().OBJ_obj2txt(buf, buf_len, a, no_name);
623     } else {
624         return __real_OBJ_obj2txt(buf, buf_len, a, no_name);
625     }
626 }
627 
__wrap_BN_bin2bn(const unsigned char * s,int len,BIGNUM * ret)628 BIGNUM *__wrap_BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret)
629 {
630     if (g_mockTagX509Openssl) {
631         CF_LOG_I("X509OpensslMock BN_bin2bn");
632         return X509OpensslMock::GetInstance().BN_bin2bn(s, len, ret);
633     } else {
634         return __real_BN_bin2bn(s, len, ret);
635     }
636 }
637 
__wrap_ASN1_TIME_normalize(ASN1_TIME * s)638 int __wrap_ASN1_TIME_normalize(ASN1_TIME *s)
639 {
640     if (g_mockTagX509Openssl) {
641         CF_LOG_I("X509OpensslMock ASN1_TIME_normalize");
642         return X509OpensslMock::GetInstance().ASN1_TIME_normalize(s);
643     } else {
644         return __real_ASN1_TIME_normalize(s);
645     }
646 }
647 
__wrap_X509_ALGOR_get0(const ASN1_OBJECT ** paobj,int * pptype,const void ** ppval,const X509_ALGOR * algor)648 void __wrap_X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, const void **ppval, const X509_ALGOR *algor)
649 {
650     if (g_mockTagX509Openssl) {
651         CF_LOG_I("X509OpensslMock X509_ALGOR_get0");
652         return X509OpensslMock::GetInstance().X509_ALGOR_get0(paobj, pptype, ppval, algor);
653     } else {
654         return __real_X509_ALGOR_get0(paobj, pptype, ppval, algor);
655     }
656 }
657 
__wrap_ASN1_TYPE_new(void)658 ASN1_TYPE *__wrap_ASN1_TYPE_new(void)
659 {
660     if (g_mockTagX509Openssl) {
661         CF_LOG_I("X509OpensslMock ASN1_TYPE_new");
662         return X509OpensslMock::GetInstance().ASN1_TYPE_new();
663     } else {
664         return __real_ASN1_TYPE_new();
665     }
666 }
667 
__wrap_ASN1_TYPE_set1(ASN1_TYPE * a,int type,const void * value)668 int __wrap_ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value)
669 {
670     if (g_mockTagX509Openssl) {
671         CF_LOG_I("X509OpensslMock ASN1_TYPE_set1");
672         return X509OpensslMock::GetInstance().ASN1_TYPE_set1(a, type, value);
673     } else {
674         return __real_ASN1_TYPE_set1(a, type, value);
675     }
676 }
677 
__wrap_i2d_ASN1_TYPE(ASN1_TYPE * a,unsigned char ** out)678 int __wrap_i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **out)
679 {
680     if (g_mockTagX509Openssl) {
681         CF_LOG_I("X509OpensslMock i2d_ASN1_TYPE");
682         return X509OpensslMock::GetInstance().i2d_ASN1_TYPE(a, out);
683     } else {
684         return __real_i2d_ASN1_TYPE(a, out);
685     }
686 }
687 
__wrap_ASN1_INTEGER_get(const ASN1_INTEGER * a)688 long __wrap_ASN1_INTEGER_get(const ASN1_INTEGER *a)
689 {
690     if (g_mockTagX509Openssl) {
691         CF_LOG_I("X509OpensslMock ASN1_INTEGER_get");
692         return X509OpensslMock::GetInstance().ASN1_INTEGER_get(a);
693     } else {
694         return __real_ASN1_INTEGER_get(a);
695     }
696 }
697 
__wrap_ASN1_STRING_get0_data(const ASN1_STRING * x)698 const unsigned char *__wrap_ASN1_STRING_get0_data(const ASN1_STRING *x)
699 {
700     if (g_mockTagX509Openssl) {
701         CF_LOG_I("X509OpensslMock ASN1_STRING_get0_data");
702         return X509OpensslMock::GetInstance().ASN1_STRING_get0_data(x);
703     } else {
704         return __real_ASN1_STRING_get0_data(x);
705     }
706 }
707 
__wrap_i2d_GENERAL_NAME(GENERAL_NAME * a,unsigned char ** out)708 int __wrap_i2d_GENERAL_NAME(GENERAL_NAME *a, unsigned char **out)
709 {
710     if (g_mockTagX509Openssl) {
711         CF_LOG_I("X509OpensslMock i2d_GENERAL_NAME");
712         return X509OpensslMock::GetInstance().i2d_GENERAL_NAME(a, out);
713     } else {
714         return __real_i2d_GENERAL_NAME(a, out);
715     }
716 }
717 
__wrap_X509_get_ext(const X509 * x,X509_EXTENSION * loc)718 X509_EXTENSION *__wrap_X509_get_ext(const X509 *x, X509_EXTENSION *loc)
719 {
720     if (g_mockTagX509Openssl) {
721         CF_LOG_I("X509OpensslMock X509_get_ext");
722         return X509OpensslMock::GetInstance().X509_get_ext(x, loc);
723     } else {
724         return __real_X509_get_ext(x, loc);
725     }
726 }
727 
__wrap_X509V3_EXT_d2i(X509_EXTENSION * ext)728 void *__wrap_X509V3_EXT_d2i(X509_EXTENSION *ext)
729 {
730     if (g_mockTagX509Openssl) {
731         CF_LOG_I("X509OpensslMock X509V3_EXT_d2i");
732         return X509OpensslMock::GetInstance().X509V3_EXT_d2i(ext);
733     } else {
734         return __real_X509V3_EXT_d2i(ext);
735     }
736 }
737 
__wrap_GENERAL_NAME_get0_value(const GENERAL_NAME * a,int * ptype)738 void *__wrap_GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype)
739 {
740     if (g_mockTagX509Openssl) {
741         CF_LOG_I("X509OpensslMock GENERAL_NAME_get0_value");
742         return X509OpensslMock::GetInstance().GENERAL_NAME_get0_value(a, ptype);
743     } else {
744         return __real_GENERAL_NAME_get0_value(a, ptype);
745     }
746 }
747 
__wrap_X509_verify(X509 * a,EVP_PKEY * r)748 int __wrap_X509_verify(X509 *a, EVP_PKEY *r)
749 {
750     if (g_mockTagX509Openssl) {
751         CF_LOG_I("X509OpensslMock X509_verify");
752         return X509OpensslMock::GetInstance().X509_verify(a, r);
753     } else {
754         return __real_X509_verify(a, r);
755     }
756 }
757 
__wrap_DeepCopyBlobToBlob(const CfBlob * inBlob,CfBlob ** outBlob)758 CfResult __wrap_DeepCopyBlobToBlob(const CfBlob *inBlob, CfBlob **outBlob)
759 {
760     if (g_mockTagX509Openssl) {
761         CF_LOG_I("X509OpensslMock DeepCopyBlobToBlob");
762         return X509OpensslMock::GetInstance().DeepCopyBlobToBlob(inBlob, outBlob);
763     } else {
764         return __real_DeepCopyBlobToBlob(inBlob, outBlob);
765     }
766 }
767 
__wrap_OPENSSL_sk_push(OPENSSL_STACK * st,const int data)768 int __wrap_OPENSSL_sk_push(OPENSSL_STACK *st, const int data)
769 {
770     if (g_mockTagX509Openssl) {
771         CF_LOG_I("X509OpensslMock OPENSSL_sk_push");
772         return X509OpensslMock::GetInstance().OPENSSL_sk_push(st, data);
773     } else {
774         return __real_OPENSSL_sk_push(st, data);
775     }
776 }
777 
__wrap_i2d_X509_REVOKED(X509_REVOKED * a,unsigned char ** out)778 int __wrap_i2d_X509_REVOKED(X509_REVOKED *a, unsigned char **out)
779 {
780     if (g_mockTagX509Openssl) {
781         CF_LOG_I("X509OpensslMock i2d_X509_REVOKED");
782         return X509OpensslMock::GetInstance().i2d_X509_REVOKED(a, out);
783     } else {
784         return __real_i2d_X509_REVOKED(a, out);
785     }
786 }
787 
__wrap_i2d_X509_CRL(X509_CRL * a,unsigned char ** out)788 int __wrap_i2d_X509_CRL(X509_CRL *a, unsigned char **out)
789 {
790     if (g_mockTagX509Openssl) {
791         CF_LOG_I("X509OpensslMock i2d_X509_CRL");
792         return X509OpensslMock::GetInstance().i2d_X509_CRL(a, out);
793     } else {
794         return __real_i2d_X509_CRL(a, out);
795     }
796 }
797 
__wrap_OPENSSL_sk_deep_copy(const OPENSSL_STACK * st,OPENSSL_sk_copyfunc c,OPENSSL_sk_freefunc f)798 OPENSSL_STACK *__wrap_OPENSSL_sk_deep_copy(const OPENSSL_STACK *st, OPENSSL_sk_copyfunc c, OPENSSL_sk_freefunc f)
799 {
800     if (g_mockTagX509Openssl) {
801         CF_LOG_I("X509OpensslMock OPENSSL_sk_deep_copy");
802         return X509OpensslMock::GetInstance().OPENSSL_sk_deep_copy(st, c, f);
803     } else {
804         return __real_OPENSSL_sk_deep_copy(st, c, f);
805     }
806 }
807 
__wrap_OBJ_obj2nid(const ASN1_OBJECT * o)808 int __wrap_OBJ_obj2nid(const ASN1_OBJECT *o)
809 {
810     if (g_mockTagX509Openssl) {
811         CF_LOG_I("X509OpensslMock OBJ_obj2nid");
812         return X509OpensslMock::GetInstance().OBJ_obj2nid(o);
813     } else {
814         return __real_OBJ_obj2nid(o);
815     }
816 }
817 
__wrap_X509_dup(X509 * x509)818 X509 *__wrap_X509_dup(X509 *x509)
819 {
820     if (g_mockTagX509Openssl) {
821         CF_LOG_I("X509OpensslMock X509_dup");
822         return X509OpensslMock::GetInstance().X509_dup(x509);
823     } else {
824         return __real_X509_dup(x509);
825     }
826 }
827 
__wrap_X509_check_host(X509 * x,const char * chk,size_t chklen,unsigned int flags,char ** peername)828 int __wrap_X509_check_host(X509 *x, const char *chk, size_t chklen, unsigned int flags, char **peername)
829 {
830     if (g_mockTagX509Openssl) {
831         CF_LOG_I("X509OpensslMock X509_check_host");
832         return X509OpensslMock::GetInstance().X509_check_host(x, chk, chklen, flags, peername);
833     } else {
834         return __real_X509_check_host(x, chk, chklen, flags, peername);
835     }
836 }
837 
__wrap_OCSP_REQUEST_new(void)838 OCSP_REQUEST *__wrap_OCSP_REQUEST_new(void)
839 {
840     if (g_mockTagX509Openssl) {
841         CF_LOG_I("X509OpensslMock OCSP_REQUEST_new");
842         return X509OpensslMock::GetInstance().OCSP_REQUEST_new();
843     } else {
844         return __real_OCSP_REQUEST_new();
845     }
846 }
847 
__wrap_X509_CRL_load_http(const char * url,BIO * bio,BIO * rbio,int timeout)848 X509_CRL *__wrap_X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout)
849 {
850     if (g_mockTagX509Openssl || g_mockTagX509HcfCert) {
851         CF_LOG_I("X509OpensslMock X509_CRL_load_http");
852         return X509OpensslMock::GetInstance().X509_CRL_load_http(url, bio, rbio, timeout);
853     } else {
854         return __real_X509_CRL_load_http(url, bio, rbio, timeout);
855     }
856 }
857 
__wrap_X509_get1_ocsp(X509 * x)858 struct stack_st_OPENSSL_STRING *__wrap_X509_get1_ocsp(X509 *x)
859 {
860     if (g_mockTagX509Openssl || g_mockTagX509HcfCert) {
861         CF_LOG_I("X509OpensslMock X509_get1_ocsp");
862         return X509OpensslMock::GetInstance().X509_get1_ocsp(x);
863     } else {
864         return __real_X509_get1_ocsp(x);
865     }
866 }
867 
__wrap_OSSL_HTTP_parse_url(const char * url,int * pssl,char ** puser,char ** phost,char ** pport,int * pport_num,char ** ppath,char ** pquery,char ** pfrag)868 int __wrap_OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, char **pport, int *pport_num,
869     char **ppath, char **pquery, char **pfrag)
870 {
871     if (g_mockTagX509Openssl) {
872         CF_LOG_I("X509OpensslMock OSSL_HTTP_parse_url");
873         return X509OpensslMock::GetInstance().OSSL_HTTP_parse_url(
874             url, pssl, puser, phost, pport, pport_num, ppath, pquery, pfrag);
875     } else {
876         return __real_OSSL_HTTP_parse_url(url, pssl, puser, phost, pport, pport_num, ppath, pquery, pfrag);
877     }
878 }
879 
__wrap_X509_NAME_get0_der(X509_NAME * nm,const unsigned char ** pder,size_t * pderlen)880 int __wrap_X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder, size_t *pderlen)
881 {
882     if (g_mockTagX509Openssl) {
883         CF_LOG_I("X509OpensslMock X509_NAME_get0_der");
884         return X509OpensslMock::GetInstance().X509_NAME_get0_der(nm, pder, pderlen);
885     } else {
886         return __real_X509_NAME_get0_der(nm, pder, pderlen);
887     }
888 }
889 
__wrap_OBJ_nid2sn(int n)890 const char *__wrap_OBJ_nid2sn(int n)
891 {
892     if (g_mockTagX509Openssl) {
893         CF_LOG_I("X509OpensslMock OBJ_nid2sn");
894         return X509OpensslMock::GetInstance().OBJ_nid2sn(n);
895     } else {
896         return __real_OBJ_nid2sn(n);
897     }
898 }
899 
__wrap_ASN1_STRING_length(const ASN1_STRING * x)900 int __wrap_ASN1_STRING_length(const ASN1_STRING *x)
901 {
902     if (g_mockTagX509Openssl) {
903         CF_LOG_I("X509OpensslMock ASN1_STRING_length");
904         return X509OpensslMock::GetInstance().ASN1_STRING_length(x);
905     } else {
906         return __real_ASN1_STRING_length(x);
907     }
908 }
909 
__wrap_DeepCopyDataToOut(const char * data,uint32_t len,CfBlob * out)910 CfResult __wrap_DeepCopyDataToOut(const char *data, uint32_t len, CfBlob *out)
911 {
912     if (g_mockTagX509Openssl) {
913         CF_LOG_I("X509OpensslMock DeepCopyDataToOut");
914         return X509OpensslMock::GetInstance().DeepCopyDataToOut(data, len, out);
915     } else {
916         return __real_DeepCopyDataToOut(data, len, out);
917     }
918 }
919 
__wrap_CRYPTO_strdup(const char * str,const char * file,int line)920 char *__wrap_CRYPTO_strdup(const char *str, const char *file, int line)
921 {
922     if (g_mockTagX509Openssl) {
923         CF_LOG_I("X509OpensslMock CRYPTO_strdup");
924         return X509OpensslMock::GetInstance().CRYPTO_strdup(str, file, line);
925     } else {
926         return __real_CRYPTO_strdup(str, file, line);
927     }
928 }
929 
__wrap_X509_NAME_new(void)930 X509_NAME *__wrap_X509_NAME_new(void)
931 {
932     if (g_mockTagX509Openssl) {
933         CF_LOG_I("X509OpensslMock X509_NAME_new");
934         return X509OpensslMock::GetInstance().X509_NAME_new();
935     } else {
936         return __real_X509_NAME_new();
937     }
938 }
939 
__wrap_OBJ_txt2nid(const char * s)940 int __wrap_OBJ_txt2nid(const char *s)
941 {
942     if (g_mockTagX509Openssl) {
943         CF_LOG_I("X509OpensslMock OBJ_txt2nid");
944         return X509OpensslMock::GetInstance().OBJ_txt2nid(s);
945     } else {
946         return __real_OBJ_txt2nid(s);
947     }
948 }
949 
__wrap_X509_NAME_add_entry_by_NID(X509_NAME * name,int nid,int type,const unsigned char * bytes,int len,int loc,int set)950 int __wrap_X509_NAME_add_entry_by_NID(
951     X509_NAME *name, int nid, int type, const unsigned char *bytes, int len, int loc, int set)
952 {
953     if (g_mockTagX509Openssl) {
954         CF_LOG_I("X509OpensslMock X509_NAME_add_entry_by_NID");
955         return X509OpensslMock::GetInstance().X509_NAME_add_entry_by_NID(name, nid, type, bytes, len, loc, set);
956     } else {
957         return __real_X509_NAME_add_entry_by_NID(name, nid, type, bytes, len, loc, set);
958     }
959 }
960 
__wrap_BIO_new(const BIO_METHOD * type)961 BIO *__wrap_BIO_new(const BIO_METHOD *type)
962 {
963     if (g_mockTagX509Openssl) {
964         CF_LOG_I("X509OpensslMock BIO_new");
965         return X509OpensslMock::GetInstance().BIO_new(type);
966     } else {
967         return __real_BIO_new(type);
968     }
969 }
970 
__wrap_X509_print(BIO * bp,X509 * x)971 int __wrap_X509_print(BIO *bp, X509 *x)
972 {
973     if (g_mockTagX509Openssl) {
974         CF_LOG_I("X509OpensslMock X509_print");
975         return X509OpensslMock::GetInstance().X509_print(bp, x);
976     } else {
977         return __real_X509_print(bp, x);
978     }
979 }
980 
__wrap_BIO_ctrl(BIO * bp,int cmd,long larg,void * parg)981 long __wrap_BIO_ctrl(BIO *bp, int cmd, long larg, void *parg)
982 {
983     if (g_mockTagX509Openssl) {
984         CF_LOG_I("X509OpensslMock BIO_ctrl");
985         return X509OpensslMock::GetInstance().BIO_ctrl(bp, cmd, larg, parg);
986     } else {
987         return __real_BIO_ctrl(bp, cmd, larg, parg);
988     }
989 }
990 
__wrap_i2d_X509_bio(BIO * bp,X509 * x509)991 int __wrap_i2d_X509_bio(BIO *bp, X509 *x509)
992 {
993     if (g_mockTagX509Openssl) {
994         CF_LOG_I("X509OpensslMock i2d_X509_bio");
995         return X509OpensslMock::GetInstance().i2d_X509_bio(bp, x509);
996     } else {
997         return __real_i2d_X509_bio(bp, x509);
998     }
999 }
1000 
__wrap_PKCS12_parse(PKCS12 * p12,const char * pass,EVP_PKEY ** pkey,X509 ** cert,STACK_OF (X509)** ca)1001 int __wrap_PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca)
1002 {
1003     if (g_mockTagX509Openssl) {
1004         CF_LOG_I("X509OpensslMock PKCS12_parse");
1005         return X509OpensslMock::GetInstance().PKCS12_parse(p12, pass, pkey, cert, ca);
1006     } else {
1007         return __real_PKCS12_parse(p12, pass, pkey, cert, ca);
1008     }
1009 }
1010 
__wrap_CheckIsSelfSigned(const X509 * cert)1011 bool __wrap_CheckIsSelfSigned(const X509 *cert)
1012 {
1013     if (g_mockTagX509Openssl || g_mockTagX509HcfCert) {
1014         CF_LOG_I("X509OpensslMock CheckIsSelfSigned");
1015         return X509OpensslMock::GetInstance().CheckIsSelfSigned(cert);
1016     } else {
1017         return __real_CheckIsSelfSigned(cert);
1018     }
1019 }
1020 
1021 #ifdef __cplusplus
1022 }
1023 #endif
1024