1 // SPDX-License-Identifier: GPL-2.0 2 /* Copyright (c) 2023 Meta Platforms, Inc. and affiliates. */ 3 4 #include "vmlinux.h" 5 #include <bpf/bpf_helpers.h> 6 #include <bpf/bpf_tracing.h> 7 #include "bpf_misc.h" 8 #include "bpf_kfuncs.h" 9 #include "crypto_common.h" 10 11 int status; 12 SEC("syscall") 13 int crypto_release(void *ctx) 14 { 15 struct bpf_crypto_params params = { 16 .type = "skcipher", 17 .algo = "ecb(aes)", 18 .key_len = 16, 19 }; 20 21 struct bpf_crypto_ctx *cctx; 22 int err = 0; 23 24 status = 0; 25 26 cctx = bpf_crypto_ctx_create(¶ms, sizeof(params), &err); 27 28 if (!cctx) { 29 status = err; 30 return 0; 31 } 32 33 bpf_crypto_ctx_release(cctx); 34 35 return 0; 36 } 37 38 SEC("syscall") 39 __failure __msg("Unreleased reference") 40 int crypto_acquire(void *ctx) 41 { 42 struct bpf_crypto_params params = { 43 .type = "skcipher", 44 .algo = "ecb(aes)", 45 .key_len = 16, 46 }; 47 struct bpf_crypto_ctx *cctx; 48 int err = 0; 49 50 status = 0; 51 52 cctx = bpf_crypto_ctx_create(¶ms, sizeof(params), &err); 53 54 if (!cctx) { 55 status = err; 56 return 0; 57 } 58 59 cctx = bpf_crypto_ctx_acquire(cctx); 60 if (!cctx) 61 return -EINVAL; 62 63 bpf_crypto_ctx_release(cctx); 64 65 return 0; 66 } 67 68 char __license[] SEC("license") = "GPL"; 69