blob: 13f17dfea12b6c6e7f7beb2e8ea50af121767ab0 [file] [log] [blame]
{
"name": "bls-signatures-pod",
"version": "0.2.0",
"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": "f37e5bb0901a14a45c3d3195cc49029cff340bc2",
"submodules": true
},
"prepare_command": "set -x\n\n MIN_IOS=\"10.0\"\n\n IPHONEOS_PLATFORM_STR=iphoneos\n IPHONEOS_PLATFORM=`xcrun --sdk ${IPHONEOS_PLATFORM_STR} --show-sdk-platform-path`\n IPHONEOS_SDK=`xcrun --sdk ${IPHONEOS_PLATFORM_STR} --show-sdk-path`\n\n IPHONESIMULATOR_PLATFORM_STR=iphonesimulator\n IPHONESIMULATOR_PLATFORM=`xcrun --sdk ${IPHONESIMULATOR_PLATFORM_STR} --show-sdk-platform-path`\n IPHONESIMULATOR_SDK=`xcrun --sdk ${IPHONESIMULATOR_PLATFORM_STR} --show-sdk-path`\n\n\n build_gmp()\n {\n CURRENT_DIR=`pwd`\n DEVELOPER=`xcode-select --print-path`\n\n GMP_VERSION=\"6.1.2\"\n\n BITCODE=\"-fembed-bitcode\"\n SDKVERSION=`xcrun -sdk iphoneos --show-sdk-version`\n if [ \"${SDKVERSION}\" == \"9.0\" ]; then\n BITCODE=\"\"\n fi\n\n CLANG=`xcrun --sdk iphoneos --find clang`\n CLANGPP=`xcrun --sdk iphoneos --find clang++`\n\n build_gmp_arch()\n {\n ARCH=$1\n SDK=$2\n PLATFORM=$3\n ARGS=$4\n\n make clean || true\n make distclean || true\n\n export PATH=\"${PLATFORM}/Developer/usr/bin:${DEVELOPER}/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin\"\n\n mkdir gmplib-${ARCH}\n\n EXTRAS=\"-miphoneos-version-min=${MIN_IOS} -no-integrated-as -arch ${ARCH} -target ${ARCH}-apple-darwin\"\n\n CFLAGS=\"${BITCODE} -isysroot ${SDK} -Wno-error -Wno-implicit-function-declaration ${EXTRAS}\"\n\n ./configure --prefix=\"${CURRENT_DIR}/gmplib-${ARCH}\" CC=\"${CLANG} ${CFLAGS}\" CPP=\"${CLANG} -E\" CPPFLAGS=\"${CFLAGS}\" --host=aarch64-apple-darwin --disable-assembly --enable-static --disable-shared ${ARGS}\n\n make -j `sysctl -n hw.logicalcpu_max` &> \"${CURRENT_DIR}/gmplib-${ARCH}-build.log\"\n make install &> \"${CURRENT_DIR}/gmplib-${ARCH}-install.log\"\n }\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 pushd gmp\n\n CURRENT_DIR=`pwd`\n\n build_gmp_arch \"armv7s\" \"${IPHONEOS_SDK}\" \"${IPHONEOS_PLATFORM}\" \n build_gmp_arch \"arm64\" \"${IPHONEOS_SDK}\" \"${IPHONEOS_PLATFORM}\" \n build_gmp_arch \"i386\" \"${IPHONESIMULATOR_SDK}\" \"${IPHONESIMULATOR_PLATFORM}\"\n build_gmp_arch \"x86_64\" \"${IPHONESIMULATOR_SDK}\" \"${IPHONESIMULATOR_PLATFORM}\"\n\n cp -r ${CURRENT_DIR}/gmplib-x86_64/include .\n\n mkdir lib\n\n lipo \"${CURRENT_DIR}/gmplib-armv7s/lib/libgmp.a\" \"${CURRENT_DIR}/gmplib-arm64/lib/libgmp.a\" \"${CURRENT_DIR}/gmplib-i386/lib/libgmp.a\" \"${CURRENT_DIR}/gmplib-x86_64/lib/libgmp.a\" -create -output lib/libgmp.a\n\n popd # gmp\n\n pwd\n }\n\n\n relic_target_dir()\n {\n ARCH=$1\n echo \"relic-target-${ARCH}\"\n }\n\n\n build_relic()\n {\n pushd contrib/relic\n\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\n build_relic_arch()\n {\n ARCH=$1\n SDK=$2\n PLATFORM=$3\n\n BUILDDIR=$(relic_target_dir \"${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=64\n IOS_PLATFORM=OS64\n OPTIMIZATIONFLAGS=-fomit-frame-pointer\n if [[ \"${ARCH}\" != \"arm64\" && \"${ARCH}\" != \"x86_64\" ]]; then\n WSIZE=32\n IOS_PLATFORM=OS\n OPTIMIZATIONFLAGS=\"\"\n fi\n\n EXTRA_ARGS=\"\"\n if [[ \"${ARCH}\" != \"i386\" && \"${ARCH}\" != \"x86_64\" ]]; then\n EXTRA_ARGS=\"-DARCH=ARM -DOPSYS=NONE -DIOS_PLATFORM=$IOS_PLATFORM -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake\"\n if [[ \"${ARCH}\" != \"arm64\" ]]; then\n EXTRA_ARGS+=\" -DIOS_ARCH=armv7s\"\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 -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\" -DWSIZE=$WSIZE -DVERBS=off -DSHLIB=off -DALLOC=\"AUTO\" -DEP_PLAIN=off -DEP_SUPER=off -DPP_EXT=\"LAZYR\" -DTIMER=\"HREAL\" ${EXTRA_ARGS} ../\n\n make\n\n popd # \"$BUILDDIR\"\n }\n\n build_relic_arch \"armv7s\" \"${IPHONEOS_SDK}\" \"${IPHONEOS_PLATFORM_STR}\"\n build_relic_arch \"arm64\" \"${IPHONEOS_SDK}\" \"${IPHONEOS_PLATFORM_STR}\"\n build_relic_arch \"i386\" \"${IPHONESIMULATOR_SDK}\" \"${IPHONESIMULATOR_PLATFORM_STR}\"\n build_relic_arch \"x86_64\" \"${IPHONESIMULATOR_SDK}\" \"${IPHONESIMULATOR_PLATFORM_STR}\"\n\n xcrun lipo \"$(relic_target_dir \"armv7s\")/lib/librelic_s.a\" \"$(relic_target_dir \"arm64\")/lib/librelic_s.a\" \"$(relic_target_dir \"i386\")/lib/librelic_s.a\" \"$(relic_target_dir \"x86_64\")/lib/librelic_s.a\" -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 bls_target_dir()\n {\n ARCH=$1\n echo \"bls-target-${ARCH}\"\n }\n\n build_bls_arch()\n {\n ARCH=$1\n SDK=$2\n\n BUILDDIR=$(bls_target_dir \"${ARCH}\")\n rm -rf \"$BUILDDIR\"\n mkdir \"$BUILDDIR\"\n pushd \"$BUILDDIR\"\n\n CURRENT_DIR=`pwd`\n\n EXTRA_ARGS=\"\"\n if [[ \"${ARCH}\" != \"i386\" && \"${ARCH}\" != \"x86_64\" ]]; then\n EXTRA_ARGS=\"-miphoneos-version-min=${MIN_IOS}\"\n fi\n\n for F in \"${BLS_FILES[@]}\"\n do\n clang -I\"../contrib/relic/include\" -I\"../contrib/relic/$(relic_target_dir \"${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_bls_arch \"armv7s\" \"${IPHONEOS_SDK}\"\n build_bls_arch \"arm64\" \"${IPHONEOS_SDK}\"\n build_bls_arch \"i386\" \"${IPHONESIMULATOR_SDK}\"\n build_bls_arch \"x86_64\" \"${IPHONESIMULATOR_SDK}\"\n\n xcrun lipo \"$(bls_target_dir \"armv7s\")/libbls.a\" \"$(bls_target_dir \"arm64\")/libbls.a\" \"$(bls_target_dir \"i386\")/libbls.a\" \"$(bls_target_dir \"x86_64\")/libbls.a\" -create -output \"libbls.a\"\n }\n\n\n make_relic_universal()\n {\n RELIC_ARM64_TARGET_DIR=$(relic_target_dir \"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_ARM64_TARGET_DIR}/include/relic_conf.h\" > \"contrib/relic/${RELIC_ARM64_TARGET_DIR}/include/relic_conf.h.new\"\n\n rm \"contrib/relic/${RELIC_ARM64_TARGET_DIR}/include/relic_conf.h\"\n mv \"contrib/relic/${RELIC_ARM64_TARGET_DIR}/include/relic_conf.h.new\" \"contrib/relic/${RELIC_ARM64_TARGET_DIR}/include/relic_conf.h\" \n }\n\n\n build_gmp\n GMP_DIR=\"`pwd`/gmp\"\n\n build_relic\n\n build_bls\n\n make_relic_universal",
"platforms": {
"ios": "10.0"
},
"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-target-arm64/include/*.h"
],
"exclude_files": "src/test-utils.hpp",
"vendored_libraries": [
"gmp/lib/libgmp.a",
"contrib/relic/librelic.a",
"libbls.a"
]
}