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

88 lines
2.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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