brintos

brintos / linux-shallow public Read only

0
0
Text · 2.1 KiB · b5e6574 Raw
83 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/* Copyright (c) 2024 Meta, Inc */3#include <linux/types.h>4#include <linux/module.h>5#include <linux/bpf_crypto.h>6#include <crypto/skcipher.h>7 8static void *bpf_crypto_lskcipher_alloc_tfm(const char *algo)9{10	return crypto_alloc_lskcipher(algo, 0, 0);11}12 13static void bpf_crypto_lskcipher_free_tfm(void *tfm)14{15	crypto_free_lskcipher(tfm);16}17 18static int bpf_crypto_lskcipher_has_algo(const char *algo)19{20	return crypto_has_skcipher(algo, CRYPTO_ALG_TYPE_LSKCIPHER, CRYPTO_ALG_TYPE_MASK);21}22 23static int bpf_crypto_lskcipher_setkey(void *tfm, const u8 *key, unsigned int keylen)24{25	return crypto_lskcipher_setkey(tfm, key, keylen);26}27 28static u32 bpf_crypto_lskcipher_get_flags(void *tfm)29{30	return crypto_lskcipher_get_flags(tfm);31}32 33static unsigned int bpf_crypto_lskcipher_ivsize(void *tfm)34{35	return crypto_lskcipher_ivsize(tfm);36}37 38static unsigned int bpf_crypto_lskcipher_statesize(void *tfm)39{40	return crypto_lskcipher_statesize(tfm);41}42 43static int bpf_crypto_lskcipher_encrypt(void *tfm, const u8 *src, u8 *dst,44					unsigned int len, u8 *siv)45{46	return crypto_lskcipher_encrypt(tfm, src, dst, len, siv);47}48 49static int bpf_crypto_lskcipher_decrypt(void *tfm, const u8 *src, u8 *dst,50					unsigned int len, u8 *siv)51{52	return crypto_lskcipher_decrypt(tfm, src, dst, len, siv);53}54 55static const struct bpf_crypto_type bpf_crypto_lskcipher_type = {56	.alloc_tfm	= bpf_crypto_lskcipher_alloc_tfm,57	.free_tfm	= bpf_crypto_lskcipher_free_tfm,58	.has_algo	= bpf_crypto_lskcipher_has_algo,59	.setkey		= bpf_crypto_lskcipher_setkey,60	.encrypt	= bpf_crypto_lskcipher_encrypt,61	.decrypt	= bpf_crypto_lskcipher_decrypt,62	.ivsize		= bpf_crypto_lskcipher_ivsize,63	.statesize	= bpf_crypto_lskcipher_statesize,64	.get_flags	= bpf_crypto_lskcipher_get_flags,65	.owner		= THIS_MODULE,66	.name		= "skcipher",67};68 69static int __init bpf_crypto_skcipher_init(void)70{71	return bpf_crypto_register_type(&bpf_crypto_lskcipher_type);72}73 74static void __exit bpf_crypto_skcipher_exit(void)75{76	int err = bpf_crypto_unregister_type(&bpf_crypto_lskcipher_type);77	WARN_ON_ONCE(err);78}79 80module_init(bpf_crypto_skcipher_init);81module_exit(bpf_crypto_skcipher_exit);82MODULE_LICENSE("GPL");83