1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */ 3 #ifndef _BPF_CRYPTO_H 4 #define _BPF_CRYPTO_H 5 6 struct bpf_crypto_type { 7 void *(*alloc_tfm)(const char *algo); 8 void (*free_tfm)(void *tfm); 9 int (*has_algo)(const char *algo); 10 int (*setkey)(void *tfm, const u8 *key, unsigned int keylen); 11 int (*setauthsize)(void *tfm, unsigned int authsize); 12 int (*encrypt)(void *tfm, const u8 *src, u8 *dst, unsigned int len, u8 *iv); 13 int (*decrypt)(void *tfm, const u8 *src, u8 *dst, unsigned int len, u8 *iv); 14 unsigned int (*ivsize)(void *tfm); 15 unsigned int (*statesize)(void *tfm); 16 u32 (*get_flags)(void *tfm); 17 struct module *owner; 18 char name[14]; 19 }; 20 21 int bpf_crypto_register_type(const struct bpf_crypto_type *type); 22 int bpf_crypto_unregister_type(const struct bpf_crypto_type *type); 23 24 #endif /* _BPF_CRYPTO_H */ 25