#!/bin/bash

EMBEDDED_CERT="-----BEGIN CERTIFICATE-----
MIIDJTCCAg2gAwIBAgIUUO3cWG8VMPfTfEqTEAurcjomgiQwDQYJKoZIhvcNAQEL
BQAwIjEgMB4GA1UEAwwXTFVOQSBLZXJuZWwgQ2VydGlmaWNhdGUwHhcNMjYwNzIx
MDUwNTA4WhcNMzIwNzE5MDUwNTA4WjAiMSAwHgYDVQQDDBdMVU5BIEtlcm5lbCBD
ZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN+Nk2j8
lj1IKAYF76m/TWc09ba3rDsWAu6vlDNEURM4sdbRRkJs09Ar7dw4Llyu74xSPCyu
93ayy985uih62DqIbhXVRrCOuZMa1abKmyVOghi6xzxUSoWxTRfpIXBeEAdxoYiT
DYI+IESf/ev+ceYh0iI3zvYbJ7QFKUPhrdhn/bmOV8aeVzaZUNs5DWkcD6kPl0sA
lKKNAt8tucQo25a6aqc4lOILClFKbCdMmuvBaDedxY8rVn30b3wParhA9nci1OVd
zQ7MWYC8sZUPLn/zKH2gARL5lk+mhagc3iBVhEvzUlhERzELwGy6bKKBpQSNzV2q
Y0vXD4/6bl9zvDECAwEAAaNTMFEwHQYDVR0OBBYEFPAXCWD2oWg0cUVPiRAaDYYT
hpp6MB8GA1UdIwQYMBaAFPAXCWD2oWg0cUVPiRAaDYYThpp6MA8GA1UdEwEB/wQF
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBALoJOIKQJ06mBed9rSkxTV/mEto+XI8v
1JxU31JavQtn7/+Dej0A7KkQ9DCFzxzkOAfyvoeGtRsq7mY2vBgyVxRkPGEoSODr
y3MZlrGBYPUyKqXaX6OJLLC1EpK6Xhwc43Hr126/h64n+uvAUYx3I1PeXoarpnFj
cgdM3egFIAfG7jv2sXRo41LcyJ/32YXhpZWOC/ha1DjQkYiJWMffQZs6ZS6qZ3iy
t+Xojdu/oqmyC9s8HBw7HdFAbpFroAsjgurymAuqaIEcHMGbaIY+rX3V6J2N8G9t
rvZUloYxj6nBFCq2Bp5ZkLsp4QCzdVSvDeTcYgcZAvdmzxXAhmk+UAs=
-----END CERTIFICATE-----"

if [ $# -ne 1 ]; then
    echo "Usage: $0 <kernel IMAGE>"
    echo "Example: $0 ./LUNAkrnlIMAGE"
    exit 1
fi

KERNEL_IMAGE="$1"
SECTION_NAME=".cert"
TEMP_EXTRACT="/tmp/embedded_cert_$$.pem"

if [ ! -f "$KERNEL_IMAGE" ]; then
    echo "Error: File not found $KERNEL_IMAGE"
    exit 1
fi

objcopy -O binary --only-section="$SECTION_NAME" "$KERNEL_IMAGE" "$TEMP_EXTRACT" 2>/dev/null
if [ ! -s "$TEMP_EXTRACT" ]; then
    echo "Error! $SECTION_NAME section was not found in the file"
    exit 1
fi

EMBEDDED_HASH=$(echo "$EMBEDDED_CERT" | sha256sum | awk '{print $1}')
EXTRACT_HASH=$(sha256sum "$TEMP_EXTRACT" | awk '{print $1}')

if [ "$EMBEDDED_HASH" = "$EXTRACT_HASH" ]; then
    echo "OK! Verification passed"
else
    echo "Error! Verification failed"
    echo "  Script certificate hash: $EMBEDDED_HASH"
    echo "  Kernel certificate hash: $EXTRACT_HASH"
    exit 1
fi

rm -f "$TEMP_EXTRACT"
