bitcoinpqc 0.4.0

Post-Quantum Cryptographic signature algorithms for Bitcoin (BIP-360)
{
  "targets": [
    {
      "target_name": "secp256k1",
      "type": "static_library",
      "sources": [
        "src/c_sources/secp256k1/src/secp256k1.c",
        "src/c_sources/secp256k1/src/precomputed_ecmult.c",
        "src/c_sources/secp256k1/src/precomputed_ecmult_gen.c"
      ],
      "include_dirs": [
        "src/c_sources/secp256k1",
        "src/c_sources/secp256k1/include",
        "src/c_sources/secp256k1/src"
      ],
      "cflags": [
        "-Wno-unused-function",
        "-Wno-nonnull-compare"
      ],
      "defines": [
        "ECMULT_GEN_PREC_BITS=4",
        "ECMULT_WINDOW_SIZE=15",
        "ENABLE_MODULE_SCHNORRSIG=1",
        "ENABLE_MODULE_EXTRAKEYS=1",
        "USE_NUM_NONE=1",
        "USE_FIELD_INV_BUILTIN=1",
        "USE_SCALAR_INV_BUILTIN=1",
        "USE_ENDOMORPHISM=1"
      ],
      "conditions": [
        ["target_arch=='x64' and OS!='win'", {
          "defines": [
            "HAVE___INT128=1",
            "USE_ASM_X86_64=1",
            "USE_FIELD_5X52=1",
            "USE_SCALAR_4X64=1"
          ]
        }, {
          "defines": [
            "USE_FIELD_10X26=1",
            "USE_SCALAR_8X32=1"
          ]
        }]
      ]
    },
    {
      "target_name": "bitcoinpqc",
      "dependencies": [
        "secp256k1",
        "<!(node -p \"require('node-addon-api').gyp\")"
      ],
      "sources": [
        "src/native/bitcoinpqc_addon.cc",
        "src/c_sources/bitcoinpqc.c",
        "src/c_sources/secp256k1_schnorr.c",
        "src/c_sources/ml_dsa/keygen.c",
        "src/c_sources/ml_dsa/sign.c",
        "src/c_sources/ml_dsa/verify.c",
        "src/c_sources/ml_dsa/utils.c",
        "src/c_sources/slh_dsa/keygen.c",
        "src/c_sources/slh_dsa/sign.c",
        "src/c_sources/slh_dsa/verify.c",
        "src/c_sources/slh_dsa/utils.c",
        "src/c_sources/dilithium_ref/sign.c",
        "src/c_sources/dilithium_ref/packing.c",
        "src/c_sources/dilithium_ref/polyvec.c",
        "src/c_sources/dilithium_ref/poly.c",
        "src/c_sources/dilithium_ref/ntt.c",
        "src/c_sources/dilithium_ref/reduce.c",
        "src/c_sources/dilithium_ref/rounding.c",
        "src/c_sources/dilithium_ref/fips202.c",
        "src/c_sources/dilithium_ref/symmetric-shake.c",
        "src/c_sources/randombytes_custom.c",
        "src/c_sources/sphincsplus_ref/address.c",
        "src/c_sources/sphincsplus_ref/fors.c",
        "src/c_sources/sphincsplus_ref/hash_sha2.c",
        "src/c_sources/sphincsplus_ref/merkle.c",
        "src/c_sources/sphincsplus_ref/sign.c",
        "src/c_sources/sphincsplus_ref/thash_sha2_simple.c",
        "src/c_sources/sphincsplus_ref/utils.c",
        "src/c_sources/sphincsplus_ref/utilsx1.c",
        "src/c_sources/sphincsplus_ref/wots.c",
        "src/c_sources/sphincsplus_ref/wotsx1.c",
        "src/c_sources/sphincsplus_ref/sha2.c"
      ],
      "include_dirs": [
        "<!@(node -p \"require('node-addon-api').include\")",
        "src/c_sources",
        "src/c_sources/include",
        "src/c_sources/dilithium_ref",
        "src/c_sources/sphincsplus_ref",
        "src/c_sources/secp256k1/include"
      ],
      "cflags!": [ "-fno-exceptions" ],
      "cflags_cc!": [ "-fno-exceptions" ],
      "cflags": [ "-Wno-sign-compare", "-Wno-unused-variable", "-Wno-implicit-function-declaration" ],
      "defines": [
        "NAPI_DISABLE_CPP_EXCEPTIONS",
        "DILITHIUM_MODE=2",
        "CRYPTO_ALGNAME=\"SPHINCS+-sha2-128s\"",
        "PARAMS=sphincs-sha2-128s",
        "CUSTOM_RANDOMBYTES=1"
      ],
      "conditions": [
        ["OS=='win'", {
          "msvs_settings": {
            "VCCLCompilerTool": {
              "ExceptionHandling": 1
            }
          }
        }],
        ["OS=='mac'", {
          "xcode_settings": {
            "GCC_ENABLE_CPP_EXCEPTIONS": "YES",
            "GCC_SYMBOLS_PRIVATE_EXTERN": "YES",
            "OTHER_CFLAGS": [
              "-Wno-sign-compare",
              "-Wno-unused-variable",
              "-Wno-implicit-function-declaration"
            ]
          }
        }],
        ["OS!='win'", {
          "libraries": [ "-lpthread" ]
        }]
      ]
    }
  ]
}