piggyback/Makefile
2026-04-04 18:03:43 +02:00

44 lines
1.4 KiB
Makefile

CC = clang
CFLAGS = -O2 -Wall -Wextra
BPF_SRC = piggyback.bpf.c
BPF_OBJ = piggyback.bpf.o
SRV_SRC = piggyback.c
SRV_BIN = piggyback
CLI_SRC = pb-client.c
CLI_BIN = pb-client
# BPF include paths — adjust if headers are elsewhere
BPF_INCLUDES = -I/usr/include/bpf -I/usr/include -I/usr/include/x86_64-linux-gnu
.PHONY: all clean keygen
all: $(BPF_OBJ) $(SRV_BIN) $(CLI_BIN)
# eBPF kernel program — compiled to BPF bytecode
$(BPF_OBJ): $(BPF_SRC)
$(CC) -O2 -target bpf $(BPF_INCLUDES) -c $< -o $@
# Server daemon — requires libbpf + libsodium
$(SRV_BIN): $(SRV_SRC)
$(CC) $(CFLAGS) $< -o $@ -lbpf -lsodium -lpthread
# Client — requires libssl (OpenSSL) for Mode 2 TLS
$(CLI_BIN): $(CLI_SRC)
$(CC) $(CFLAGS) $< -o $@ -lssl -lcrypto -lpthread
# Generate Ed25519 keypair for use with -k flag
# Private key: engagement.key (keep offline, never on target)
# Public key: engagement.pub.hex (pass to daemon via -k)
keygen:
@openssl genpkey -algorithm ed25519 -out engagement.key
@openssl pkey -in engagement.key -pubout -out engagement.pub
@echo ""
@echo "Public key hex (pass to daemon with -k):"
@openssl pkey -in engagement.key -pubout -outform DER | tail -c 32 | xxd -p | tr -d '\n' | tr 'a-f' 'A-F'
@echo ""
@echo "Private key: engagement.key — keep offline, never copy to target"
clean:
rm -f $(BPF_OBJ) $(SRV_BIN) $(CLI_BIN) engagement.key engagement.pub