1use super::psa_crypto_binding::{
8 self, psa_algorithm_t, psa_cipher_operation_t, psa_dh_family_t, psa_ecc_family_t,
9 psa_key_attributes_t, psa_key_derivation_operation_t, psa_key_derivation_step_t, psa_key_id_t,
10 psa_key_lifetime_t, psa_key_type_t, psa_key_usage_t,
11};
12
13pub const PSA_KEY_DERIVATION_INPUT_SECRET: psa_key_derivation_step_t =
14 psa_crypto_binding::shim_PSA_KEY_DERIVATION_INPUT_SECRET;
15pub const PSA_KEY_DERIVATION_INPUT_LABEL: psa_key_derivation_step_t =
16 psa_crypto_binding::shim_PSA_KEY_DERIVATION_INPUT_LABEL;
17pub const PSA_KEY_DERIVATION_INPUT_SALT: psa_key_derivation_step_t =
18 psa_crypto_binding::shim_PSA_KEY_DERIVATION_INPUT_SALT;
19pub const PSA_KEY_DERIVATION_INPUT_INFO: psa_key_derivation_step_t =
20 psa_crypto_binding::shim_PSA_KEY_DERIVATION_INPUT_INFO;
21pub const PSA_KEY_DERIVATION_INPUT_SEED: psa_key_derivation_step_t =
22 psa_crypto_binding::shim_PSA_KEY_DERIVATION_INPUT_SEED;
23
24pub unsafe fn psa_get_key_bits(attributes: *const psa_key_attributes_t) -> usize {
25 psa_crypto_binding::shim_get_key_bits(attributes)
26}
27
28pub unsafe fn psa_get_key_type(attributes: *const psa_key_attributes_t) -> psa_key_type_t {
29 psa_crypto_binding::shim_get_key_type(attributes)
30}
31
32pub unsafe fn psa_get_key_lifetime(attributes: *const psa_key_attributes_t) -> psa_key_lifetime_t {
33 psa_crypto_binding::shim_get_key_lifetime(attributes)
34}
35
36pub unsafe fn psa_get_key_algorithm(attributes: *const psa_key_attributes_t) -> psa_algorithm_t {
37 psa_crypto_binding::shim_get_key_algorithm(attributes)
38}
39
40pub unsafe fn psa_get_key_usage_flags(attributes: *const psa_key_attributes_t) -> psa_key_usage_t {
41 psa_crypto_binding::shim_get_key_usage_flags(attributes)
42}
43
44pub unsafe fn psa_key_attributes_init() -> psa_key_attributes_t {
45 psa_crypto_binding::shim_key_attributes_init()
46}
47
48pub unsafe fn psa_cipher_operation_init() -> psa_cipher_operation_t {
49 psa_crypto_binding::shim_cipher_operation_init()
50}
51
52pub fn psa_key_derivation_operation_init() -> psa_key_derivation_operation_t {
53 unsafe { psa_crypto_binding::shim_key_derivation_operation_init() }
54}
55
56pub unsafe fn psa_set_key_algorithm(attributes: *mut psa_key_attributes_t, alg: psa_algorithm_t) {
57 psa_crypto_binding::shim_set_key_algorithm(attributes, alg);
58}
59
60pub unsafe fn psa_set_key_bits(attributes: *mut psa_key_attributes_t, bits: usize) {
61 psa_crypto_binding::shim_set_key_bits(attributes, bits);
62}
63
64pub unsafe fn psa_set_key_id(attributes: *mut psa_key_attributes_t, id: psa_key_id_t) {
65 psa_crypto_binding::shim_set_key_id(attributes, id);
66}
67
68pub unsafe fn psa_set_key_lifetime(
69 attributes: *mut psa_key_attributes_t,
70 lifetime: psa_key_lifetime_t,
71) {
72 psa_crypto_binding::shim_set_key_lifetime(attributes, lifetime);
73}
74
75pub unsafe fn psa_set_key_type(attributes: *mut psa_key_attributes_t, type_: psa_key_type_t) {
76 psa_crypto_binding::shim_set_key_type(attributes, type_);
77}
78
79pub unsafe fn psa_set_key_usage_flags(
80 attributes: *mut psa_key_attributes_t,
81 usage_flags: psa_key_usage_t,
82) {
83 psa_crypto_binding::shim_set_key_usage_flags(attributes, usage_flags);
84}
85
86pub unsafe fn psa_get_key_id(attributes: *const psa_key_attributes_t) -> psa_key_id_t {
87 psa_crypto_binding::shim_get_key_id(attributes)
88}
89
90pub fn PSA_ALG_IS_HASH(alg: psa_algorithm_t) -> bool {
91 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_HASH(alg) == 1 }
92}
93
94pub fn PSA_ALG_IS_MAC(alg: psa_algorithm_t) -> bool {
95 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_MAC(alg) == 1 }
96}
97
98pub fn PSA_ALG_IS_HMAC(alg: psa_algorithm_t) -> bool {
99 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_HMAC(alg) == 1 }
100}
101
102pub fn PSA_ALG_IS_BLOCK_CIPHER_MAC(alg: psa_algorithm_t) -> bool {
103 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) == 1 }
104}
105
106pub fn PSA_ALG_IS_CIPHER(alg: psa_algorithm_t) -> bool {
107 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_CIPHER(alg) == 1 }
108}
109
110pub fn PSA_ALG_IS_AEAD(alg: psa_algorithm_t) -> bool {
111 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_AEAD(alg) == 1 }
112}
113
114pub fn PSA_ALG_IS_SIGN(alg: psa_algorithm_t) -> bool {
115 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_SIGN(alg) == 1 }
116}
117
118pub fn PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg: psa_algorithm_t) -> bool {
119 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) == 1 }
120}
121
122pub unsafe fn PSA_ALG_IS_RSA_OAEP(alg: psa_algorithm_t) -> bool {
123 psa_crypto_binding::shim_PSA_ALG_IS_RSA_OAEP(alg) == 1
124}
125
126pub fn PSA_ALG_IS_KEY_AGREEMENT(alg: psa_algorithm_t) -> bool {
127 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_KEY_AGREEMENT(alg) == 1 }
128}
129
130pub fn PSA_ALG_IS_RAW_KEY_AGREEMENT(alg: psa_algorithm_t) -> bool {
131 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_RAW_KEY_AGREEMENT(alg) == 1 }
132}
133
134pub fn PSA_ALG_IS_FFDH(alg: psa_algorithm_t) -> bool {
135 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_FFDH(alg) == 1 }
136}
137
138pub fn PSA_ALG_IS_ECDH(alg: psa_algorithm_t) -> bool {
139 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_ECDH(alg) == 1 }
140}
141
142pub fn PSA_ALG_IS_KEY_DERIVATION(alg: psa_algorithm_t) -> bool {
143 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_KEY_DERIVATION(alg) == 1 }
144}
145
146pub fn PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg: psa_algorithm_t) -> bool {
147 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) == 1 }
148}
149
150pub fn PSA_ALG_IS_RSA_PSS(alg: psa_algorithm_t) -> bool {
151 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_RSA_PSS(alg) == 1 }
152}
153
154pub fn PSA_ALG_IS_ECDSA(alg: psa_algorithm_t) -> bool {
155 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_ECDSA(alg) == 1 }
156}
157
158pub fn PSA_ALG_IS_DETERMINISTIC_ECDSA(alg: psa_algorithm_t) -> bool {
159 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) == 1 }
160}
161
162pub fn PSA_ALG_IS_HKDF(alg: psa_algorithm_t) -> bool {
163 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_HKDF(alg) == 1 }
164}
165
166pub fn PSA_ALG_IS_TLS12_PRF(alg: psa_algorithm_t) -> bool {
167 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_TLS12_PRF(alg) == 1 }
168}
169
170pub fn PSA_ALG_IS_TLS12_PSK_TO_MS(alg: psa_algorithm_t) -> bool {
171 unsafe { psa_crypto_binding::shim_PSA_ALG_IS_TLS12_PSK_TO_MS(alg) == 1 }
172}
173
174pub fn PSA_ALG_SIGN_GET_HASH(sign_alg: psa_algorithm_t) -> psa_algorithm_t {
175 unsafe { psa_crypto_binding::shim_PSA_ALG_SIGN_GET_HASH(sign_alg) }
176}
177
178pub fn PSA_ALG_RSA_OAEP_GET_HASH(rsa_oaep_alg: psa_algorithm_t) -> psa_algorithm_t {
179 unsafe { psa_crypto_binding::shim_PSA_ALG_RSA_OAEP_GET_HASH(rsa_oaep_alg) }
180}
181
182pub fn PSA_ALG_HMAC_GET_HASH(hmac_alg: psa_algorithm_t) -> psa_algorithm_t {
183 unsafe { psa_crypto_binding::shim_PSA_ALG_HMAC_GET_HASH(hmac_alg) }
184}
185
186pub fn PSA_ALG_HKDF_GET_HASH(hkdf_alg: psa_algorithm_t) -> psa_algorithm_t {
187 unsafe { psa_crypto_binding::shim_PSA_ALG_HKDF_GET_HASH(hkdf_alg) }
188}
189
190pub fn PSA_ALG_TLS12_PRF_GET_HASH(tls12_prf_alg: psa_algorithm_t) -> psa_algorithm_t {
191 unsafe { psa_crypto_binding::shim_PSA_ALG_TLS12_PRF_GET_HASH(tls12_prf_alg) }
192}
193
194pub fn PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(tls12_psk_to_ms_alg: psa_algorithm_t) -> psa_algorithm_t {
195 unsafe { psa_crypto_binding::shim_PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(tls12_psk_to_ms_alg) }
196}
197
198pub unsafe fn PSA_ALG_KEY_AGREEMENT_GET_BASE(alg: psa_algorithm_t) -> psa_algorithm_t {
199 psa_crypto_binding::shim_PSA_ALG_KEY_AGREEMENT_GET_BASE(alg)
200}
201
202pub unsafe fn PSA_ALG_KEY_AGREEMENT_GET_KDF(alg: psa_algorithm_t) -> psa_algorithm_t {
203 psa_crypto_binding::shim_PSA_ALG_KEY_AGREEMENT_GET_KDF(alg)
204}
205
206pub fn PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
207 unsafe { psa_crypto_binding::shim_PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) }
208}
209
210pub fn PSA_ALG_RSA_PSS(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
211 unsafe { psa_crypto_binding::shim_PSA_ALG_RSA_PSS(hash_alg) }
212}
213
214pub fn PSA_ALG_ECDSA(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
215 unsafe { psa_crypto_binding::shim_PSA_ALG_ECDSA(hash_alg) }
216}
217
218pub fn PSA_ALG_DETERMINISTIC_ECDSA(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
219 unsafe { psa_crypto_binding::shim_PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) }
220}
221
222pub unsafe fn PSA_ALG_RSA_OAEP(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
223 psa_crypto_binding::shim_PSA_ALG_RSA_OAEP(hash_alg)
224}
225
226pub unsafe fn PSA_ALG_HMAC(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
227 psa_crypto_binding::shim_PSA_ALG_HMAC(hash_alg)
228}
229
230pub unsafe fn PSA_ALG_TRUNCATED_MAC(
231 mac_alg: psa_algorithm_t,
232 mac_length: usize,
233) -> psa_algorithm_t {
234 psa_crypto_binding::shim_PSA_ALG_TRUNCATED_MAC(mac_alg, mac_length)
235}
236
237pub unsafe fn PSA_ALG_FULL_LENGTH_MAC(mac_alg: psa_algorithm_t) -> psa_algorithm_t {
238 psa_crypto_binding::shim_PSA_ALG_FULL_LENGTH_MAC(mac_alg)
239}
240
241pub unsafe fn PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(aead_alg: psa_algorithm_t) -> psa_algorithm_t {
242 psa_crypto_binding::shim_PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(aead_alg)
243}
244
245pub unsafe fn PSA_ALG_AEAD_WITH_SHORTENED_TAG(
246 aead_alg: psa_algorithm_t,
247 tag_length: usize,
248) -> psa_algorithm_t {
249 psa_crypto_binding::shim_PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, tag_length)
250}
251
252pub unsafe fn PSA_ALG_HKDF(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
253 psa_crypto_binding::shim_PSA_ALG_HKDF(hash_alg)
254}
255
256pub unsafe fn PSA_ALG_TLS12_PRF(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
257 psa_crypto_binding::shim_PSA_ALG_TLS12_PRF(hash_alg)
258}
259
260pub unsafe fn PSA_ALG_TLS12_PSK_TO_MS(hash_alg: psa_algorithm_t) -> psa_algorithm_t {
261 psa_crypto_binding::shim_PSA_ALG_TLS12_PSK_TO_MS(hash_alg)
262}
263
264pub unsafe fn PSA_ALG_KEY_AGREEMENT(
265 raw_key_agreement: psa_algorithm_t,
266 key_derivation: psa_algorithm_t,
267) -> psa_algorithm_t {
268 psa_crypto_binding::shim_PSA_ALG_KEY_AGREEMENT(raw_key_agreement, key_derivation)
269}
270
271pub fn PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type: psa_key_type_t) -> bool {
272 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) == 1 }
273}
274
275pub fn PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(key_type: psa_key_type_t) -> bool {
276 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(key_type) == 1 }
277}
278
279pub fn PSA_KEY_TYPE_IS_DH_KEY_PAIR(key_type: psa_key_type_t) -> bool {
280 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_IS_DH_KEY_PAIR(key_type) == 1 }
281}
282
283pub fn PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(key_type: psa_key_type_t) -> bool {
284 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(key_type) == 1 }
285}
286
287pub fn PSA_KEY_TYPE_ECC_GET_FAMILY(key_type: psa_key_type_t) -> psa_ecc_family_t {
288 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_ECC_GET_FAMILY(key_type) }
289}
290
291pub fn PSA_KEY_TYPE_DH_GET_FAMILY(key_type: psa_key_type_t) -> psa_dh_family_t {
292 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_DH_GET_FAMILY(key_type) }
293}
294
295pub fn PSA_KEY_TYPE_ECC_KEY_PAIR(curve: psa_ecc_family_t) -> psa_key_type_t {
296 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_ECC_KEY_PAIR(curve) }
297}
298
299pub fn PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve: psa_ecc_family_t) -> psa_key_type_t {
300 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) }
301}
302
303pub fn PSA_KEY_TYPE_DH_KEY_PAIR(group: psa_dh_family_t) -> psa_key_type_t {
304 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_DH_KEY_PAIR(group) }
305}
306
307pub fn PSA_KEY_TYPE_DH_PUBLIC_KEY(group: psa_dh_family_t) -> psa_key_type_t {
308 unsafe { psa_crypto_binding::shim_PSA_KEY_TYPE_DH_PUBLIC_KEY(group) }
309}
310
311pub unsafe fn PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(key_type: psa_key_type_t) -> psa_key_type_t {
312 psa_crypto_binding::shim_PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(key_type)
313}
314
315pub unsafe fn PSA_SIGN_OUTPUT_SIZE(
316 key_type: psa_key_type_t,
317 key_bits: usize,
318 alg: psa_algorithm_t,
319) -> usize {
320 psa_crypto_binding::shim_PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg)
321}
322
323pub unsafe fn PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(
324 key_type: psa_key_type_t,
325 key_bits: usize,
326 alg: psa_algorithm_t,
327) -> usize {
328 psa_crypto_binding::shim_PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(key_type, key_bits, alg)
329}
330
331pub unsafe fn PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(
332 key_type: psa_key_type_t,
333 key_bits: usize,
334 alg: psa_algorithm_t,
335) -> usize {
336 psa_crypto_binding::shim_PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(key_type, key_bits, alg)
337}
338
339pub unsafe fn PSA_EXPORT_KEY_OUTPUT_SIZE(key_type: psa_key_type_t, key_bits: usize) -> usize {
340 psa_crypto_binding::shim_PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits)
341}
342
343pub fn PSA_HASH_LENGTH(alg: psa_algorithm_t) -> usize {
344 unsafe { psa_crypto_binding::shim_PSA_HASH_LENGTH(alg) }
345}
346
347pub unsafe fn PSA_MAC_LENGTH(
348 key_type: psa_key_type_t,
349 key_bits: usize,
350 alg: psa_algorithm_t,
351) -> usize {
352 psa_crypto_binding::shim_PSA_MAC_LENGTH(key_type, key_bits, alg)
353}
354
355pub unsafe fn PSA_MAC_TRUNCATED_LENGTH(alg: psa_algorithm_t) -> usize {
356 psa_crypto_binding::shim_PSA_MAC_TRUNCATED_LENGTH(alg)
358}
359
360pub fn PSA_AEAD_TAG_LENGTH(
361 key_type: psa_key_type_t,
362 key_bits: usize,
363 alg: psa_algorithm_t,
364) -> usize {
365 unsafe { psa_crypto_binding::shim_PSA_AEAD_TAG_LENGTH(key_type, key_bits, alg) }
366}
367
368pub unsafe fn PSA_AEAD_ENCRYPT_OUTPUT_SIZE(
369 key_type: psa_key_type_t,
370 alg: psa_algorithm_t,
371 plaintext_length: usize,
372) -> usize {
373 psa_crypto_binding::shim_PSA_AEAD_ENCRYPT_OUTPUT_SIZE(key_type, alg, plaintext_length)
374}
375
376pub unsafe fn PSA_AEAD_DECRYPT_OUTPUT_SIZE(
377 key_type: psa_key_type_t,
378 alg: psa_algorithm_t,
379 ciphertext_length: usize,
380) -> usize {
381 psa_crypto_binding::shim_PSA_AEAD_DECRYPT_OUTPUT_SIZE(key_type, alg, ciphertext_length)
382}