blob: f8a7f6df34a44a12515fe287d5f17c36c5c7bc0d [file] [log] [blame]
{
"name": "bls-signatures-pod",
"version": "0.2.4",
"summary": "BLS signatures in C++, using the relic toolkit",
"description": "Implements BLS signatures with aggregation as in Boneh, Drijvers, Neven 2018, using relic toolkit for cryptographic primitives (pairings, EC, hashing). The BLS12-381 curve is used.",
"homepage": "https://github.com/Chia-Network/bls-signatures",
"license": {
"type": "Apache License 2.0"
},
"authors": {
"Chia Network": "hello@chia.net"
},
"social_media_url": "https://twitter.com/ChiaNetworkInc",
"source": {
"git": "https://github.com/Chia-Network/bls-signatures.git",
"commit": "f114ffeff4653e5522d1b3e28687fa9f384a557f",
"submodules": true
},
"prepare_command": "set -x\n\n MIN_IOS=\"10.0\"\n MIN_WATCHOS=\"2.0\"\n MIN_TVOS=$MIN_IOS\n MIN_MACOS=\"10.10\"\n\n IPHONEOS=iphoneos\n IPHONESIMULATOR=iphonesimulator\n WATCHOS=watchos\n WATCHSIMULATOR=watchsimulator\n TVOS=appletvos\n TVSIMULATOR=appletvsimulator\n MACOS=macosx\n\n LOGICALCPU_MAX=`sysctl -n hw.logicalcpu_max`\n\n GMP_DIR=\"`pwd`/gmp\"\n\n version_min_flag()\n {\n PLATFORM=$1\n\n FLAG=\"\"\n if [[ $PLATFORM = $IPHONEOS ]]; then\n FLAG=\"-miphoneos-version-min=${MIN_IOS}\"\n elif [[ $PLATFORM = $IPHONESIMULATOR ]]; then\n FLAG=\"-mios-simulator-version-min=${MIN_IOS}\"\n elif [[ $PLATFORM = $WATCHOS ]]; then\n FLAG=\"-mwatchos-version-min=${MIN_WATCHOS}\"\n elif [[ $PLATFORM = $WATCHSIMULATOR ]]; then\n FLAG=\"-mwatchos-simulator-version-min=${MIN_WATCHOS}\"\n elif [[ $PLATFORM = $TVOS ]]; then\n FLAG=\"-mtvos-version-min=${MIN_TVOS}\"\n elif [[ $PLATFORM = $TVSIMULATOR ]]; then\n FLAG=\"-mtvos-simulator-version-min=${MIN_TVOS}\"\n elif [[ $PLATFORM = $MACOS ]]; then\n FLAG=\"-mmacosx-version-min=${MIN_MACOS}\"\n fi\n\n echo $FLAG\n }\n\n\n prepare()\n {\n download_gmp()\n {\n GMP_VERSION=\"6.1.2\"\n CURRENT_DIR=`pwd`\n\n if [ ! -s ${CURRENT_DIR}/gmp-${GMP_VERSION}.tar.bz2 ]; then\n curl -L -o ${CURRENT_DIR}/gmp-${GMP_VERSION}.tar.bz2 https://gmplib.org/download/gmp/gmp-${GMP_VERSION}.tar.bz2\n fi\n\n rm -rf gmp\n tar xfj \"gmp-${GMP_VERSION}.tar.bz2\"\n mv gmp-${GMP_VERSION} gmp\n }\n\n download_cmake_toolchain()\n {\n pushd contrib/relic\n\n if [ ! -s ios.toolchain.cmake ]; then\n SHA256_HASH=\"f01aec9c094be1cd00d094c83c14bb2730a0741f845c78e8568884bcbdcd3204\"\n curl -o ios.toolchain.cmake https://raw.githubusercontent.com/leetal/ios-cmake/6ea5db18f9a05b4103e2aca665374b94c119fbed/ios.toolchain.cmake\n DOWNLOADED_HASH=`shasum -a 256 ios.toolchain.cmake | cut -f 1 -d \" \"`\n if [ $SHA256_HASH != $DOWNLOADED_HASH ]; then\n echo \"Error: sha256 checksum of ios.toolchain.cmake mismatch\" >&2\n exit 1\n fi\n fi\n\n popd # contrib/relic\n }\n\n download_gmp\n download_cmake_toolchain\n\n rm -rf artefacts\n mkdir artefacts\n }\n\n\n build_gmp()\n {\n build_gmp_arch()\n {\n PLATFORM=$1\n ARCH=$2\n\n SDK=`xcrun --sdk $PLATFORM --show-sdk-path`\n PLATFORM_PATH=`xcrun --sdk $PLATFORM --show-sdk-platform-path`\n CLANG=`xcrun --sdk $PLATFORM --find clang`\n CLANGPP=`xcrun --sdk $PLATFORM --find clang++`\n CURRENT_DIR=`pwd`\n DEVELOPER=`xcode-select --print-path`\n export PATH=\"${PLATFORM_PATH}/Developer/usr/bin:${DEVELOPER}/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin\"\n\n make clean || true\n make distclean || true\n\n mkdir gmplib-${PLATFORM}-${ARCH}\n\n EXTRA_ARGS=\"-no-integrated-as -arch ${ARCH} -target ${ARCH}-apple-darwin $(version_min_flag $PLATFORM)\"\n CFLAGS=\"-fembed-bitcode -isysroot ${SDK} -Wno-error -Wno-implicit-function-declaration ${EXTRA_ARGS}\"\n\n ./configure --prefix=\"${CURRENT_DIR}/gmplib-${PLATFORM}-${ARCH}\" CC=\"${CLANG} ${CFLAGS}\" CPP=\"${CLANG} -E\" CPPFLAGS=\"${CFLAGS}\" --host=aarch64-apple-darwin --disable-assembly --enable-static --disable-shared ${ARGS}\n\n make -j $LOGICALCPU_MAX &> \"${CURRENT_DIR}/gmplib-${PLATFORM}-${ARCH}-build.log\"\n make install &> \"${CURRENT_DIR}/gmplib-${PLATFORM}-${ARCH}-install.log\"\n }\n\n BUILD_IN=$1\n IFS='|' read -ra BUILD_PAIRS <<< \"$BUILD_IN\"\n\n pushd gmp\n\n LIPOARGS=\"\"\n PLATFORM=\"\"\n ARCH=\"\"\n for BUILD_PAIR in \"${BUILD_PAIRS[@]}\"\n do\n IFS=';' read -ra PARSED_PAIR <<< \"$BUILD_PAIR\"\n PLATFORM=${PARSED_PAIR[0]}\n ARCH=${PARSED_PAIR[1]}\n\n build_gmp_arch $PLATFORM $ARCH\n LIPOARGS+=\"gmplib-${PLATFORM}-${ARCH}/lib/libgmp.a \"\n done\n\n cp -r gmplib-${PLATFORM}-${ARCH}/include .\n\n rm -rf lib\n mkdir lib\n\n xcrun lipo $LIPOARGS -create -output lib/libgmp.a\n\n popd # gmp\n }\n\n\n build_relic()\n {\n build_relic_arch()\n {\n PLATFORM=$1\n ARCH=$2\n\n SDK=`xcrun --sdk $PLATFORM --show-sdk-path`\n\n BUILDDIR=\"relic-${PLATFORM}-${ARCH}\"\n rm -rf $BUILDDIR\n mkdir $BUILDDIR\n pushd $BUILDDIR\n\n unset CC\n export CC=`xcrun --sdk ${PLATFORM} --find clang`\n\n WSIZE=0\n IOS_PLATFORM=\"\"\n OPTIMIZATIONFLAGS=\"\"\n\n if [[ $PLATFORM = $IPHONEOS ]]; then\n if [[ $ARCH = \"arm64\" ]]; then\n IOS_PLATFORM=OS64\n WSIZE=64\n OPTIMIZATIONFLAGS=-fomit-frame-pointer\n else\n IOS_PLATFORM=OS\n WSIZE=32\n fi\n elif [[ $PLATFORM = $IPHONESIMULATOR ]]; then\n if [[ $ARCH = \"x86_64\" ]]; then\n IOS_PLATFORM=SIMULATOR64\n WSIZE=64\n OPTIMIZATIONFLAGS=-fomit-frame-pointer\n else\n IOS_PLATFORM=SIMULATOR\n WSIZE=32\n fi\n elif [[ $PLATFORM = $WATCHOS ]]; then\n IOS_PLATFORM=WATCHOS\n WSIZE=32\n elif [[ $PLATFORM = $WATCHSIMULATOR ]]; then\n IOS_PLATFORM=SIMULATOR_WATCHOS\n WSIZE=32\n elif [[ $PLATFORM = $TVOS ]]; then\n IOS_PLATFORM=TVOS\n WSIZE=64\n OPTIMIZATIONFLAGS=-fomit-frame-pointer\n elif [[ $PLATFORM = $TVSIMULATOR ]]; then\n IOS_PLATFORM=SIMULATOR_TVOS\n WSIZE=64\n OPTIMIZATIONFLAGS=-fomit-frame-pointer\n elif [[ $PLATFORM = $MACOS ]]; then\n WSIZE=64\n OPTIMIZATIONFLAGS=-fomit-frame-pointer\n fi\n\n COMPILER_ARGS=\"\"\n EXTRA_ARGS=\"\"\n if [[ $PLATFORM = $MACOS ]]; then\n EXTRA_ARGS=\"-DOPSYS=MACOSX\"\n COMPILER_ARGS=$(version_min_flag $PLATFORM)\n else\n EXTRA_ARGS=\"-DOPSYS=NONE -DIOS_PLATFORM=$IOS_PLATFORM -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake\"\n fi\n \n if [[ $ARCH = \"i386\" ]]; then\n EXTRA_ARGS+=\" -DARCH=X86\"\n elif [[ $ARCH = \"x86_64\" ]]; then\n EXTRA_ARGS+=\" -DARCH=X64\"\n else\n EXTRA_ARGS+=\" -DARCH=ARM\"\n if [[ $ARCH = \"armv7s\" ]]; then\n EXTRA_ARGS+=\" -DIOS_ARCH=armv7s\"\n elif [[ $ARCH = \"armv7k\" ]]; then\n EXTRA_ARGS+=\" -DIOS_ARCH=armv7k\"\n fi\n fi\n\n CURRENT_DIR=`pwd`\n\n cmake -DCMAKE_PREFIX_PATH:PATH=\"${GMP_DIR}\" -DTESTS=0 -DBENCH=0 -DCHECK=off -DARITH=gmp -DFP_PRIME=381 -DMULTI=PTHREAD -DFP_QNRES=off -DFP_METHD=\"INTEG;INTEG;INTEG;MONTY;LOWER;SLIDE\" -DFPX_METHD=\"INTEG;INTEG;LAZYR\" -DPP_METHD=\"LAZYR;OATEP\" -DCOMP=\"-O3 -funroll-loops $OPTIMIZATIONFLAGS -isysroot $SDK -arch $ARCH -fembed-bitcode ${COMPILER_ARGS}\" -DWSIZE=$WSIZE -DVERBS=off -DSHLIB=off -DALLOC=\"AUTO\" -DEP_PLAIN=off -DEP_SUPER=off -DPP_EXT=\"LAZYR\" -DTIMER=\"HREAL\" ${EXTRA_ARGS} ../\n\n make -j $LOGICALCPU_MAX\n\n popd # \"$BUILDDIR\"\n }\n\n BUILD_IN=$1\n IFS='|' read -ra BUILD_PAIRS <<< \"$BUILD_IN\"\n \n pushd contrib/relic\n\n LIPOARGS=\"\"\n for BUILD_PAIR in \"${BUILD_PAIRS[@]}\"\n do\n IFS=';' read -ra PARSED_PAIR <<< \"$BUILD_PAIR\"\n PLATFORM=${PARSED_PAIR[0]}\n ARCH=${PARSED_PAIR[1]}\n\n build_relic_arch $PLATFORM $ARCH\n LIPOARGS+=\"relic-${PLATFORM}-${ARCH}/lib/librelic_s.a \"\n done\n\n xcrun lipo $LIPOARGS -create -output librelic.a\n\n popd # contrib/relic\n }\n\n\n build_bls()\n {\n BLS_FILES=( \"aggregationinfo\" \"bls\" \"chaincode\" \"extendedprivatekey\" \"extendedpublickey\" \"privatekey\" \"publickey\" \"signature\" )\n ALL_BLS_OBJ_FILES=$(printf \"%s.o \" \"${BLS_FILES[@]}\")\n\n build_bls_arch()\n {\n PLATFORM=$1\n ARCH=$2\n\n SDK=`xcrun --sdk $PLATFORM --show-sdk-path`\n\n BUILDDIR=\"bls-${PLATFORM}-${ARCH}\"\n rm -rf $BUILDDIR\n mkdir $BUILDDIR\n pushd $BUILDDIR\n\n EXTRA_ARGS=\"$(version_min_flag $PLATFORM)\"\n\n CURRENT_DIR=`pwd`\n\n for F in \"${BLS_FILES[@]}\"\n do\n clang -I\"../contrib/relic/include\" -I\"../contrib/relic/relic-${PLATFORM}-${ARCH}/include\" -I\"../src/\" -I\"${GMP_DIR}/include\" -x c++ -std=c++14 -stdlib=libc++ -arch \"${ARCH}\" -isysroot \"${SDK}\" ${EXTRA_ARGS} -c \"../src/${F}.cpp\" -o \"${CURRENT_DIR}/${F}.o\"\n done\n\n ar -cvq libbls.a $ALL_BLS_OBJ_FILES\n\n popd # \"$BUILDDIR\"\n }\n\n BUILD_IN=$1\n IFS='|' read -ra BUILD_PAIRS <<< \"$BUILD_IN\"\n\n LIPOARGS=\"\"\n for BUILD_PAIR in \"${BUILD_PAIRS[@]}\"\n do\n IFS=';' read -ra PARSED_PAIR <<< \"$BUILD_PAIR\"\n PLATFORM=${PARSED_PAIR[0]}\n ARCH=${PARSED_PAIR[1]}\n\n build_bls_arch $PLATFORM $ARCH\n LIPOARGS+=\"bls-${PLATFORM}-${ARCH}/libbls.a \"\n done\n\n xcrun lipo $LIPOARGS -create -output libbls.a\n }\n\n\n build_all()\n {\n SUFFIX=$1\n BUILD_IN=$2\n\n build_gmp $BUILD_IN\n build_relic $BUILD_IN\n build_bls $BUILD_IN\n\n mv gmp/lib/libgmp.a \"artefacts/libgmp_${SUFFIX}.a\"\n mv contrib/relic/librelic.a \"artefacts/librelic_${SUFFIX}.a\"\n mv libbls.a \"artefacts/libbls_${SUFFIX}.a\"\n }\n\n\n make_relic_universal()\n {\n RELIC_TARGET_DIR=relic-iphoneos-arm64\n\n perl -p -e 's/#define WSIZE.*/#ifdef __LP64__\n#define WSIZE 64\n#else\n#define WSIZE 32\n#endif/' \"contrib/relic/${RELIC_TARGET_DIR}/include/relic_conf.h\" > \"contrib/relic/${RELIC_TARGET_DIR}/include/relic_conf.h.new\"\n\n rm \"contrib/relic/${RELIC_TARGET_DIR}/include/relic_conf.h\"\n mv \"contrib/relic/${RELIC_TARGET_DIR}/include/relic_conf.h.new\" \"contrib/relic/${RELIC_TARGET_DIR}/include/relic_conf.h\" \n }\n\n prepare\n\n build_all \"macos\" \"${MACOS};x86_64\"\n build_all \"watchos\" \"${WATCHOS};armv7k|${WATCHSIMULATOR};i386\"\n build_all \"tvos\" \"${TVOS};arm64|${TVSIMULATOR};x86_64\"\n build_all \"ios\" \"${IPHONEOS};armv7s|${IPHONEOS};arm64|${IPHONESIMULATOR};i386|${IPHONESIMULATOR};x86_64\"\n\n make_relic_universal",
"platforms": {
"ios": "10.0",
"watchos": "2.0",
"tvos": "10.0",
"osx": "10.10"
},
"libraries": "c++",
"pod_target_xcconfig": {
"CLANG_CXX_LANGUAGE_STANDARD": "c++14",
"CLANG_WARN_DOCUMENTATION_COMMENTS": "NO",
"GCC_WARN_64_TO_32_BIT_CONVERSION": "NO",
"GCC_WARN_INHIBIT_ALL_WARNINGS": "YES"
},
"source_files": [
"src/*.hpp",
"gmp/include/gmp.h",
"contrib/relic/include/*.h",
"contrib/relic/include/low/*.h",
"contrib/relic/relic-iphoneos-arm64/include/*.h"
],
"exclude_files": "src/test-utils.hpp",
"ios": {
"vendored_libraries": [
"artefacts/libgmp_ios.a",
"artefacts/librelic_ios.a",
"artefacts/libbls_ios.a"
]
},
"watchos": {
"vendored_libraries": [
"artefacts/libgmp_watchos.a",
"artefacts/librelic_watchos.a",
"artefacts/libbls_watchos.a"
]
},
"tvos": {
"vendored_libraries": [
"artefacts/libgmp_tvos.a",
"artefacts/librelic_tvos.a",
"artefacts/libbls_tvos.a"
]
},
"osx": {
"vendored_libraries": [
"artefacts/libgmp_macos.a",
"artefacts/librelic_macos.a",
"artefacts/libbls_macos.a"
]
}
}