Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright(c) 2018 Cavium Networks
3 : : */
4 : :
5 : : #ifndef __RTA_COMPAT_H__
6 : : #define __RTA_COMPAT_H__
7 : :
8 : : #if OPENSSL_VERSION_NUMBER >= 0x30000000L
9 : : static __rte_always_inline void
10 : : free_hmac_ctx(EVP_MAC_CTX *ctx)
11 : : {
12 : 647 : EVP_MAC_CTX_free(ctx);
13 : 79 : }
14 : :
15 : : static __rte_always_inline void
16 : : free_cmac_ctx(EVP_MAC_CTX *ctx)
17 : : {
18 : 54 : EVP_MAC_CTX_free(ctx);
19 : 6 : }
20 : : #else
21 : : static __rte_always_inline void
22 : : free_hmac_ctx(HMAC_CTX *ctx)
23 : : {
24 : : HMAC_CTX_free(ctx);
25 : : }
26 : :
27 : : static __rte_always_inline void
28 : : free_cmac_ctx(CMAC_CTX *ctx)
29 : : {
30 : : CMAC_CTX_free(ctx);
31 : : }
32 : : #endif
33 : :
34 : : #if (OPENSSL_VERSION_NUMBER < 0x10100000L)
35 : :
36 : : static __rte_always_inline int
37 : : set_rsa_params(RSA *rsa, BIGNUM *p, BIGNUM *q)
38 : : {
39 : : rsa->p = p;
40 : : rsa->q = q;
41 : : return 0;
42 : : }
43 : :
44 : : static __rte_always_inline int
45 : : set_rsa_crt_params(RSA *rsa, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
46 : : {
47 : : rsa->dmp1 = dmp1;
48 : : rsa->dmq1 = dmq1;
49 : : rsa->iqmp = iqmp;
50 : : return 0;
51 : : }
52 : :
53 : : static __rte_always_inline int
54 : : set_rsa_keys(RSA *rsa, BIGNUM *n, BIGNUM *e, BIGNUM *d)
55 : : {
56 : : rsa->n = n;
57 : : rsa->e = e;
58 : : rsa->d = d;
59 : : return 0;
60 : : }
61 : :
62 : : static __rte_always_inline int
63 : : set_dh_params(DH *dh, BIGNUM *p, BIGNUM *g)
64 : : {
65 : : dh->p = p;
66 : : dh->q = NULL;
67 : : dh->g = g;
68 : : return 0;
69 : : }
70 : :
71 : : static __rte_always_inline int
72 : : set_dh_priv_key(DH *dh, BIGNUM *priv_key)
73 : : {
74 : : dh->priv_key = priv_key;
75 : : return 0;
76 : : }
77 : :
78 : : static __rte_always_inline int
79 : : set_dsa_params(DSA *dsa, BIGNUM *p, BIGNUM *q, BIGNUM *g)
80 : : {
81 : : dsa->p = p;
82 : : dsa->q = q;
83 : : dsa->g = g;
84 : : return 0;
85 : : }
86 : :
87 : : static __rte_always_inline void
88 : : get_dh_pub_key(DH *dh, const BIGNUM **pub_key)
89 : : {
90 : : *pub_key = dh->pub_key;
91 : : }
92 : :
93 : : static __rte_always_inline void
94 : : get_dh_priv_key(DH *dh, const BIGNUM **priv_key)
95 : : {
96 : : *priv_key = dh->priv_key;
97 : : }
98 : :
99 : : static __rte_always_inline void
100 : : set_dsa_sign(DSA_SIG *sign, BIGNUM *r, BIGNUM *s)
101 : : {
102 : : sign->r = r;
103 : : sign->s = s;
104 : : }
105 : :
106 : : static __rte_always_inline void
107 : : get_dsa_sign(DSA_SIG *sign, const BIGNUM **r, const BIGNUM **s)
108 : : {
109 : : *r = sign->r;
110 : : *s = sign->s;
111 : : }
112 : :
113 : : static __rte_always_inline int
114 : : set_dsa_keys(DSA *dsa, BIGNUM *pub, BIGNUM *priv)
115 : : {
116 : : dsa->pub_key = pub;
117 : : dsa->priv_key = priv;
118 : : return 0;
119 : : }
120 : :
121 : : static __rte_always_inline void
122 : : set_dsa_pub_key(DSA *dsa, BIGNUM *pub)
123 : : {
124 : : dsa->pub_key = pub;
125 : : }
126 : :
127 : : static __rte_always_inline void
128 : : get_dsa_priv_key(DSA *dsa, BIGNUM **priv_key)
129 : : {
130 : : *priv_key = dsa->priv_key;
131 : : }
132 : :
133 : : #elif (OPENSSL_VERSION_NUMBER >= 0x30000000L)
134 : : static __rte_always_inline void
135 : : set_dsa_sign(DSA_SIG *sign, BIGNUM *r, BIGNUM *s)
136 : : {
137 : 1 : DSA_SIG_set0(sign, r, s);
138 : : }
139 : :
140 : : static __rte_always_inline void
141 : : get_dsa_sign(DSA_SIG *sign, const BIGNUM **r, const BIGNUM **s)
142 : : {
143 : 1 : DSA_SIG_get0(sign, r, s);
144 : : }
145 : : #else
146 : :
147 : : static __rte_always_inline int
148 : : set_rsa_params(RSA *rsa, BIGNUM *p, BIGNUM *q)
149 : : {
150 : : return !(RSA_set0_factors(rsa, p, q));
151 : : }
152 : :
153 : : static __rte_always_inline int
154 : : set_rsa_crt_params(RSA *rsa, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
155 : : {
156 : : return !(RSA_set0_crt_params(rsa, dmp1, dmq1, iqmp));
157 : : }
158 : :
159 : : /* n, e must be non-null, d can be NULL */
160 : :
161 : : static __rte_always_inline int
162 : : set_rsa_keys(RSA *rsa, BIGNUM *n, BIGNUM *e, BIGNUM *d)
163 : : {
164 : : return !(RSA_set0_key(rsa, n, e, d));
165 : : }
166 : :
167 : : static __rte_always_inline int
168 : : set_dh_params(DH *dh, BIGNUM *p, BIGNUM *g)
169 : : {
170 : : return !(DH_set0_pqg(dh, p, NULL, g));
171 : : }
172 : :
173 : : static __rte_always_inline int
174 : : set_dh_priv_key(DH *dh, BIGNUM *priv_key)
175 : : {
176 : : return !(DH_set0_key(dh, NULL, priv_key));
177 : : }
178 : :
179 : : static __rte_always_inline void
180 : : get_dh_pub_key(DH *dh_key, const BIGNUM **pub_key)
181 : : {
182 : : DH_get0_key(dh_key, pub_key, NULL);
183 : : }
184 : :
185 : : static __rte_always_inline void
186 : : get_dh_priv_key(DH *dh_key, const BIGNUM **priv_key)
187 : : {
188 : : DH_get0_key(dh_key, NULL, priv_key);
189 : : }
190 : :
191 : : static __rte_always_inline int
192 : : set_dsa_params(DSA *dsa, BIGNUM *p, BIGNUM *q, BIGNUM *g)
193 : : {
194 : : return !(DSA_set0_pqg(dsa, p, q, g));
195 : : }
196 : :
197 : : static __rte_always_inline void
198 : : set_dsa_priv_key(DSA *dsa, BIGNUM *priv_key)
199 : : {
200 : : DSA_set0_key(dsa, NULL, priv_key);
201 : : }
202 : :
203 : : static __rte_always_inline void
204 : : set_dsa_sign(DSA_SIG *sign, BIGNUM *r, BIGNUM *s)
205 : : {
206 : : DSA_SIG_set0(sign, r, s);
207 : : }
208 : :
209 : : static __rte_always_inline void
210 : : get_dsa_sign(DSA_SIG *sign, const BIGNUM **r, const BIGNUM **s)
211 : : {
212 : : DSA_SIG_get0(sign, r, s);
213 : : }
214 : :
215 : : static __rte_always_inline int
216 : : set_dsa_keys(DSA *dsa, BIGNUM *pub, BIGNUM *priv)
217 : : {
218 : : return !(DSA_set0_key(dsa, pub, priv));
219 : : }
220 : :
221 : : static __rte_always_inline void
222 : : set_dsa_pub_key(DSA *dsa, BIGNUM *pub_key)
223 : : {
224 : : DSA_set0_key(dsa, pub_key, NULL);
225 : : }
226 : :
227 : : static __rte_always_inline void
228 : : get_dsa_priv_key(DSA *dsa, const BIGNUM **priv_key)
229 : : {
230 : : DSA_get0_key(dsa, NULL, priv_key);
231 : : }
232 : :
233 : : #endif /* version < 10100000 */
234 : :
235 : : #endif /* __RTA_COMPAT_H__ */
|