#!/bin/bash

CSR=$2
CANAME="kit-ca"

# Prüfen, ob der CSR-Parameter fehlt
if [[ "$1" == "sign" && -z "$CSR" ]]; then
    echo "Fehler: Kein CSR angegeben!"
    exit 1
fi

case $1 in
    create)
        echo "Erstelle eine neue CA: $CANAME"
        openssl genrsa -out "$CANAME.key" 4096
        openssl req -new -key "$CANAME.key" -x509 -days 3650 -out "$CANAME.crt" -subj "/CN=$CANAME"
        ;;
    sign)
        # CN aus dem CSR holen (robustere Extraktion)
        CN=$(openssl req -noout -subject -in "$CSR" | sed -n 's/.*CN *= *\([^,\/]*\).*/\1/p' | tr -d ' ')

        if [[ -z "$CN" ]]; then
            echo "Fehler: Konnte CN nicht aus $CSR extrahieren!"
            exit 1
        fi

        echo "Signiere CSR für: $CN"
        openssl x509 -req -in "$CSR" -CA "$CANAME.crt" -CAkey "$CANAME.key" -CAcreateserial -out "$CN.crt" -days 3650 -extensions v3_req -extfile <(printf "[ v3_req ]\nsubjectAltName=DNS:$CN")
        ;;
    *)
        echo "Fehler: Ungültige Option. Benutze 'create' oder 'sign'."
        exit 1
        ;;
esac
