#!/bin/bash # # Build liboqs for macOS (arm64) with ML-DSA-65 # # Montana Protocol — Post-Quantum Cryptography Layer 1 # ML-DSA-65 (FIPS 204) — Signatures # set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" LIBOQS_SOURCE="/Users/kh./Python/Ничто_Nothing_无_金元Ɉ/Монтана_Montana_蒙大拿/iOS/liboqs" BUILD_DIR="$SCRIPT_DIR/build-macos" OUTPUT_DIR="$SCRIPT_DIR/liboqs" MACOS_SDK=$(xcrun --sdk macosx --show-sdk-path) MACOS_MIN_VERSION="14.0" echo "=== Building liboqs for macOS (arm64) ===" echo "SDK: $MACOS_SDK" echo "Min macOS: $MACOS_MIN_VERSION" echo "Source: $LIBOQS_SOURCE" # Clean previous build rm -rf "$BUILD_DIR" mkdir -p "$BUILD_DIR" cd "$BUILD_DIR" # Configure with CMake for macOS cmake "$LIBOQS_SOURCE" \ -DCMAKE_OSX_ARCHITECTURES=arm64 \ -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_MIN_VERSION \ -DCMAKE_OSX_SYSROOT=$MACOS_SDK \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DOQS_BUILD_ONLY_LIB=ON \ -DOQS_USE_OPENSSL=OFF \ -DOQS_DIST_BUILD=OFF \ -DOQS_PERMIT_UNSUPPORTED_ARCHITECTURE=ON \ -DOQS_OPT_TARGET="generic" \ \ -DOQS_ENABLE_SIG_ML_DSA=ON \ -DOQS_ENABLE_SIG_ml_dsa_65=ON \ \ -DOQS_ENABLE_KEM_ML_KEM=OFF \ -DOQS_ENABLE_KEM_BIKE=OFF \ -DOQS_ENABLE_KEM_FRODOKEM=OFF \ -DOQS_ENABLE_KEM_NTRUPRIME=OFF \ -DOQS_ENABLE_KEM_NTRU=OFF \ -DOQS_ENABLE_KEM_CLASSIC_MCELIECE=OFF \ -DOQS_ENABLE_KEM_HQC=OFF \ -DOQS_ENABLE_KEM_KYBER=OFF \ \ -DOQS_ENABLE_SIG_FALCON=OFF \ -DOQS_ENABLE_SIG_SPHINCS=OFF \ -DOQS_ENABLE_SIG_MAYO=OFF \ -DOQS_ENABLE_SIG_CROSS=OFF # Build echo "=== Building... ===" cmake --build . --parallel $(sysctl -n hw.ncpu) # Copy library and headers echo "=== Installing to $OUTPUT_DIR ===" mkdir -p "$OUTPUT_DIR/lib" mkdir -p "$OUTPUT_DIR/include/oqs" cp lib/liboqs.a "$OUTPUT_DIR/lib/" cp -r include/oqs/* "$OUTPUT_DIR/include/oqs/" # Verify ML-DSA is enabled in oqsconfig.h if grep -q "OQS_ENABLE_SIG_ml_dsa_65" "$OUTPUT_DIR/include/oqs/oqsconfig.h"; then echo "=== ML-DSA-65 config found ===" else echo "=== Patching oqsconfig.h for ML-DSA-65 ===" sed -i '' 's|/\* #undef OQS_ENABLE_SIG_ML_DSA \*/|#define OQS_ENABLE_SIG_ML_DSA 1|' "$OUTPUT_DIR/include/oqs/oqsconfig.h" sed -i '' 's|/\* #undef OQS_ENABLE_SIG_ml_dsa_65 \*/|#define OQS_ENABLE_SIG_ml_dsa_65 1|' "$OUTPUT_DIR/include/oqs/oqsconfig.h" fi echo "=== Done! ===" echo "Library: $OUTPUT_DIR/lib/liboqs.a" ls -la "$OUTPUT_DIR/lib/liboqs.a" # Verify ML-DSA symbols echo "=== Verifying ML-DSA-65 symbols ===" nm "$OUTPUT_DIR/lib/liboqs.a" 2>/dev/null | grep -c "ml_dsa" || echo "0 ML-DSA symbols" echo "=== Build complete ==="