1 /*
2 * This file is part of the openHiTLS project.
3 *
4 * openHiTLS is licensed under the Mulan PSL v2.
5 * You can use this software according to the terms and conditions of the Mulan PSL v2.
6 * You may obtain a copy of Mulan PSL v2 at:
7 *
8 * http://license.coscl.org.cn/MulanPSL2
9 *
10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13 * See the Mulan PSL v2 for more details.
14 */
15
16 // Source code for the test .so file
17
18 #include <stdio.h>
19 #include <stdint.h>
20 #include <stdlib.h>
21 #include <string.h>
22 #include "crypt_errno.h"
23 #include "crypt_eal_provider.h"
24 #include "crypt_eal_implprovider.h"
25
26 #define CRYPT_EAL_DEFAULT_ATTR "provider=test2,compare1=one,compare2=two"
27 #define RESULT 5358979
28
MD5_Init(void * mdCtx)29 int32_t MD5_Init(void *mdCtx)
30 {
31 mdCtx = NULL;
32 return RESULT;
33 }
34
35 const CRYPT_EAL_Func defMdMd5[] = {
36 {CRYPT_EAL_IMPLMD_NEWCTX, NULL},
37 {CRYPT_EAL_IMPLMD_INITCTX, MD5_Init},
38 {CRYPT_EAL_IMPLMD_UPDATE, NULL},
39 {CRYPT_EAL_IMPLMD_FINAL, NULL},
40 {CRYPT_EAL_IMPLMD_DEINITCTX, NULL},
41 {CRYPT_EAL_IMPLMD_DUPCTX, NULL},
42 {CRYPT_EAL_IMPLMD_CTRL, NULL},
43 {CRYPT_EAL_IMPLMD_FREECTX, NULL},
44 CRYPT_EAL_FUNC_END,
45 };
46
47 static const CRYPT_EAL_AlgInfo defMds[] = {
48 {CRYPT_MD_MD5, defMdMd5, CRYPT_EAL_DEFAULT_ATTR},
49 CRYPT_EAL_ALGINFO_END
50 };
51
52
CRYPT_EAL_DefaultProvQuery(void * provCtx,int32_t operaId,const CRYPT_EAL_AlgInfo ** algInfos)53 static int32_t CRYPT_EAL_DefaultProvQuery(void *provCtx, int32_t operaId, const CRYPT_EAL_AlgInfo **algInfos)
54 {
55 (void) provCtx;
56 int32_t ret = CRYPT_SUCCESS;
57 switch (operaId) {
58 case CRYPT_EAL_OPERAID_SYMMCIPHER:
59 break;
60 case CRYPT_EAL_OPERAID_KEYMGMT:
61 break;
62 case CRYPT_EAL_OPERAID_SIGN:
63 break;
64
65 case CRYPT_EAL_OPERAID_ASYMCIPHER:
66 break;
67
68 case CRYPT_EAL_OPERAID_KEYEXCH:
69 break;
70
71 case CRYPT_EAL_OPERAID_KEM:
72 break;
73 case CRYPT_EAL_OPERAID_HASH:
74 *algInfos = defMds;
75 break;
76 case CRYPT_EAL_OPERAID_MAC:
77 break;
78 case CRYPT_EAL_OPERAID_KDF:
79 // *algInfos = defKdfs;
80 break;
81 case CRYPT_EAL_OPERAID_RAND:
82 break;
83 default:
84 ret = CRYPT_NOT_SUPPORT;
85 break;
86 }
87 return ret;
88 }
89
CRYPT_EAL_DefaultProvFree(void * provCtx)90 static void CRYPT_EAL_DefaultProvFree(void *provCtx)
91 {
92 return;
93 }
94
95 static CRYPT_EAL_Func defProvOutFuncs[] = {
96 {CRYPT_EAL_PROVCB_QUERY, CRYPT_EAL_DefaultProvQuery},
97 {CRYPT_EAL_PROVCB_FREE, CRYPT_EAL_DefaultProvFree},
98 {CRYPT_EAL_PROVCB_CTRL, NULL},
99 CRYPT_EAL_FUNC_END
100 };
101
CRYPT_EAL_ProviderInit(CRYPT_EAL_ProvMgrCtx * mgrCtx,BSL_Param * param,CRYPT_EAL_Func * capFuncs,CRYPT_EAL_Func ** outFuncs,void ** provCtx)102 int32_t CRYPT_EAL_ProviderInit(CRYPT_EAL_ProvMgrCtx *mgrCtx,
103 BSL_Param *param, CRYPT_EAL_Func *capFuncs, CRYPT_EAL_Func **outFuncs, void **provCtx)
104 {
105 *outFuncs = defProvOutFuncs;
106 return 0;
107 }
108