montana/macOS/MontanaPresence/Crypto/build-macos.sh

88 lines
2.6 KiB
Bash
Raw Normal View History

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