#!/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!"