# Container for TKM testing
#
# Build and usage (called from repository root):
#
#   docker build -t strongswan-tkm -f testing/tkm/Dockerfile testing
#
#   docker run -it --rm --cap-add net_admin -v $PWD:/strongswan strongswan-tkm
#
# In the container, this may be used to configure strongSwan with TKM support:
#
#   /strongswan/configure --disable-defaults --enable-silent-rules --enable-ikev2 --enable-kernel-netlink --enable-pem --enable-pkcs1 --enable-random --enable-sha1 --enable-socket-default --enable-swanctl --enable-tkm
#
# The following script can be used to generate private key, CA cert and example
# config for TKM:
#
#   /usr/local/share/tkm/generate-config.sh
#
# Run TKM in the background with:
#
#   tkm_keymanager -c tkm.conf -k key.der -r ca.der:1 >/tmp/tkm.log &
#
# Then tests for charon-tkm can be run against TKM:
#
#   make -j check TESTS_RUNNERS=tkm TESTS_TKM=1

FROM debian:trixie

ARG packages="autoconf automake bison build-essential ca-certificates ccache \
flex git gperf libssl-dev libtool pkg-config \
gnat gprbuild libahven-dev libxmlada-schema-dev libgmpada-dev \
libalog-dev"

RUN apt-get update && \
  DEBIAN_FRONTEND=noninteractive apt-get install -qq -y \
  --no-install-recommends \
  $packages \
  && rm -rf /var/lib/apt/lists/*

COPY scripts/recipes/*.mk /tmp/recipes/

RUN cd /tmp/recipes \
  && make -f 004_spark-crypto.mk \
  && make -f 005_anet.mk \
  && make -f 006_tkm-rpc.mk \
  && make -f 007_x509-ada.mk \
  && make -f 008_xfrm-ada.mk \
  && make -f 009_xfrm-proxy.mk \
  && make -f 010_tkm.mk \
  && rm -rf /tmp/recipes

ENV ADA_PROJECT_PATH=/usr/local/ada/lib/gnat
ENV PATH=/usr/lib/ccache:$PATH

COPY tkm/generate-config.sh /usr/local/share/tkm/
COPY tests/tkm/host2host-initiator/hosts/moon/etc/tkm/tkm.conf /usr/local/share/tkm/

WORKDIR /build

CMD [ "bash" ]
