camera-trng/scripts/test-openssl-provider.sh

66 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# Test the Camera QRNG OpenSSL provider
set -e
cd "$(dirname "$0")/.."
# Build release version
echo "Building release..."
cargo build --release
# Find the library
if [[ "$OSTYPE" == "darwin"* ]]; then
LIB="target/release/libcamera_trng.dylib"
else
LIB="target/release/libcamera_trng.so"
fi
if [[ ! -f "$LIB" ]]; then
echo "Error: Library not found at $LIB"
exit 1
fi
echo "Library built: $LIB"
echo "Exported symbols:"
nm -gU "$LIB" | grep -i ossl || true
# Check OpenSSL version
echo ""
echo "OpenSSL version:"
openssl version
# Test loading the provider (requires OpenSSL 3.x)
echo ""
echo "Testing provider load..."
# Create temp config
TMPCONF=$(mktemp)
cat > "$TMPCONF" << CONF
openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
[provider_sect]
camera-qrng = camera_qrng_sect
default = default_sect
[default_sect]
activate = 1
[camera_qrng_sect]
module = $(pwd)/$LIB
activate = 1
CONF
echo "Config written to: $TMPCONF"
cat "$TMPCONF"
echo ""
echo "Loading provider (camera required)..."
OPENSSL_CONF="$TMPCONF" openssl list -providers 2>&1 || echo "(provider listing may require additional setup)"
echo ""
echo "Generating random bytes with provider..."
OPENSSL_CONF="$TMPCONF" openssl rand -hex 32 2>&1 || echo "(rand may use default provider)"
rm -f "$TMPCONF"
echo ""
echo "Test complete!"