88 lines
2.6 KiB
Bash
Executable File
88 lines
2.6 KiB
Bash
Executable File
#!/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 ==="
|