• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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=test1,compare1=one,cpmpare3=three"
27 #define RESULT 1415926
28 
Provider_NewCtx(void * provCtx,int32_t algid,BSL_Param * param)29 void *Provider_NewCtx(void *provCtx, int32_t algid, BSL_Param *param)
30 {
31     (void)provCtx;
32     (void)param;
33     int *ctx = malloc(sizeof(int));
34     return ctx;
35 }
36 
Provider_FreeCtx(void * ctx)37 int32_t Provider_FreeCtx(void *ctx)
38 {
39     free(ctx);
40     return 0;
41 }
42 
MD5_Init(void * mdCtx)43 int32_t MD5_Init(void *mdCtx)
44 {
45     mdCtx = NULL;
46     return RESULT;
47 }
48 
49 const CRYPT_EAL_Func defMdMd5[] = {
50     {CRYPT_EAL_IMPLMD_NEWCTX, Provider_NewCtx},
51     {CRYPT_EAL_IMPLMD_INITCTX, MD5_Init},
52     {CRYPT_EAL_IMPLMD_UPDATE, NULL},
53     {CRYPT_EAL_IMPLMD_FINAL, NULL},
54     {CRYPT_EAL_IMPLMD_DEINITCTX, NULL},
55     {CRYPT_EAL_IMPLMD_DUPCTX, NULL},
56     {CRYPT_EAL_IMPLMD_CTRL, NULL},
57     {CRYPT_EAL_IMPLMD_FREECTX, NULL},
58     CRYPT_EAL_FUNC_END,
59 };
60 
61 const CRYPT_EAL_Func defKdfScrypt[] = {
62     {CRYPT_EAL_IMPLKDF_NEWCTX, Provider_NewCtx},
63     {CRYPT_EAL_IMPLKDF_SETPARAM, NULL},
64     {CRYPT_EAL_IMPLKDF_DERIVE, NULL},
65     {CRYPT_EAL_IMPLKDF_DEINITCTX, NULL},
66     {CRYPT_EAL_IMPLKDF_CTRL, NULL},
67     {CRYPT_EAL_IMPLKDF_FREECTX, NULL},
68     CRYPT_EAL_FUNC_END,
69 };
70 
71 const CRYPT_EAL_Func defMacHmac[] = {
72     {CRYPT_EAL_IMPLMAC_NEWCTX, Provider_NewCtx},
73     {CRYPT_EAL_IMPLMAC_INIT, NULL},
74     {CRYPT_EAL_IMPLMAC_UPDATE, NULL},
75     {CRYPT_EAL_IMPLMAC_FINAL, NULL},
76     {CRYPT_EAL_IMPLMAC_REINITCTX, NULL},
77     {CRYPT_EAL_IMPLMAC_CTRL, NULL},
78     {CRYPT_EAL_IMPLMAC_FREECTX, NULL},
79     CRYPT_EAL_FUNC_END,
80 };
81 
82 const CRYPT_EAL_Func defKeyMgmtDsa[] = {
83     {CRYPT_EAL_IMPLPKEYMGMT_NEWCTX, Provider_NewCtx},
84     {CRYPT_EAL_IMPLPKEYMGMT_SETPARAM, NULL},
85     {CRYPT_EAL_IMPLPKEYMGMT_GETPARAM, NULL},
86     {CRYPT_EAL_IMPLPKEYMGMT_GENKEY, NULL},
87     {CRYPT_EAL_IMPLPKEYMGMT_SETPRV, NULL},
88     {CRYPT_EAL_IMPLPKEYMGMT_SETPUB, NULL},
89     {CRYPT_EAL_IMPLPKEYMGMT_GETPRV, NULL},
90     {CRYPT_EAL_IMPLPKEYMGMT_GETPUB, NULL},
91     {CRYPT_EAL_IMPLPKEYMGMT_DUPCTX, NULL},
92     {CRYPT_EAL_IMPLPKEYMGMT_CHECK, NULL},
93     {CRYPT_EAL_IMPLPKEYMGMT_COMPARE, NULL},
94     {CRYPT_EAL_IMPLPKEYMGMT_CTRL, NULL},
95     {CRYPT_EAL_IMPLPKEYMGMT_FREECTX, NULL},
96     CRYPT_EAL_FUNC_END,
97 };
98 
99 const CRYPT_EAL_Func defAsymCipherRsa[] = {
100     {CRYPT_EAL_IMPLPKEYCIPHER_ENCRYPT, NULL},
101     {CRYPT_EAL_IMPLPKEYCIPHER_DECRYPT, NULL},
102     CRYPT_EAL_FUNC_END
103 };
104 
105 const CRYPT_EAL_Func defExchX25519[] = {
106     {CRYPT_EAL_IMPLPKEYEXCH_EXCH, NULL},
107     CRYPT_EAL_FUNC_END
108 };
109 
110 const CRYPT_EAL_Func defSignDsa[] = {
111     {CRYPT_EAL_IMPLPKEYSIGN_SIGN, NULL},
112     {CRYPT_EAL_IMPLPKEYSIGN_VERIFY, NULL},
113     CRYPT_EAL_FUNC_END,
114 };
115 static const CRYPT_EAL_AlgInfo defMds[] = {
116     {CRYPT_MD_MD5, defMdMd5, CRYPT_EAL_DEFAULT_ATTR},
117     CRYPT_EAL_ALGINFO_END
118 };
119 
120 static const CRYPT_EAL_AlgInfo defKdfs[] = {
121     {CRYPT_KDF_SCRYPT, defKdfScrypt, CRYPT_EAL_DEFAULT_ATTR},
122     CRYPT_EAL_ALGINFO_END
123 };
124 
125 static const CRYPT_EAL_AlgInfo defKeyMgmt[] = {
126     {CRYPT_PKEY_DSA, defKeyMgmtDsa, CRYPT_EAL_DEFAULT_ATTR},
127     CRYPT_EAL_ALGINFO_END
128 };
129 
130 static const CRYPT_EAL_AlgInfo defAsymCiphers[] = {
131     {CRYPT_PKEY_RSA, defAsymCipherRsa, CRYPT_EAL_DEFAULT_ATTR},
132     CRYPT_EAL_ALGINFO_END
133 };
134 
135 static const CRYPT_EAL_AlgInfo defKeyExch[] = {
136     {CRYPT_PKEY_X25519, defExchX25519, CRYPT_EAL_DEFAULT_ATTR},
137     CRYPT_EAL_ALGINFO_END
138 };
139 
140 static const CRYPT_EAL_AlgInfo defSigns[] = {
141     {CRYPT_PKEY_DSA, defSignDsa, CRYPT_EAL_DEFAULT_ATTR},
142     CRYPT_EAL_ALGINFO_END
143 };
144 
145 static const CRYPT_EAL_AlgInfo defMacs[] = {
146     {CRYPT_MAC_HMAC_MD5, defMacHmac, CRYPT_EAL_DEFAULT_ATTR},
147     CRYPT_EAL_ALGINFO_END
148 };
149 
CRYPT_EAL_DefaultProvQuery(void * provCtx,int32_t operaId,const CRYPT_EAL_AlgInfo ** algInfos)150 static int32_t CRYPT_EAL_DefaultProvQuery(void *provCtx, int32_t operaId, const CRYPT_EAL_AlgInfo **algInfos)
151 {
152     (void) provCtx;
153     int32_t ret = CRYPT_SUCCESS;
154     switch (operaId) {
155         case CRYPT_EAL_OPERAID_SYMMCIPHER:
156             break;
157         case CRYPT_EAL_OPERAID_KEYMGMT:
158             *algInfos = defKeyMgmt;
159             break;
160         case CRYPT_EAL_OPERAID_SIGN:
161             *algInfos = defSigns;
162             break;
163         case CRYPT_EAL_OPERAID_ASYMCIPHER:
164             *algInfos = defAsymCiphers;
165             break;
166         case CRYPT_EAL_OPERAID_KEYEXCH:
167             *algInfos = defKeyExch;
168             break;
169         case CRYPT_EAL_OPERAID_KEM:
170             break;
171         case CRYPT_EAL_OPERAID_HASH:
172             *algInfos = defMds;
173             break;
174         case CRYPT_EAL_OPERAID_MAC:
175             *algInfos = defMacs;
176             break;
177         case CRYPT_EAL_OPERAID_KDF:
178             *algInfos = defKdfs;
179             break;
180         case CRYPT_EAL_OPERAID_RAND:
181             break;
182         default:
183             ret = CRYPT_NOT_SUPPORT;
184             break;
185     }
186     return ret;
187 }
CRYPT_EAL_DefaultProvFree(void * provCtx)188 static void CRYPT_EAL_DefaultProvFree(void *provCtx)
189 {
190     return;
191 }
192 
193 static CRYPT_EAL_Func defProvOutFuncs[] = {
194     {CRYPT_EAL_PROVCB_QUERY, CRYPT_EAL_DefaultProvQuery},
195     {CRYPT_EAL_PROVCB_FREE, CRYPT_EAL_DefaultProvFree},
196     {CRYPT_EAL_PROVCB_CTRL, NULL},
197     CRYPT_EAL_FUNC_END
198 };
199 
CRYPT_EAL_ProviderInit(CRYPT_EAL_ProvMgrCtx * mgrCtx,BSL_Param * param,CRYPT_EAL_Func * capFuncs,CRYPT_EAL_Func ** outFuncs,void ** provCtx)200 int32_t CRYPT_EAL_ProviderInit(CRYPT_EAL_ProvMgrCtx *mgrCtx,
201     BSL_Param *param, CRYPT_EAL_Func *capFuncs, CRYPT_EAL_Func **outFuncs, void **provCtx)
202 {
203     *outFuncs = defProvOutFuncs;
204     return 0;
205 }
206