frost: initialize project
This commit adds the foundational configuration and building scripts and an initial structure for the project.
This commit is contained in:
parent
168377204d
commit
2f3fa4cace
@ -320,3 +320,7 @@ endif
|
|||||||
if ENABLE_MODULE_ECDSA_ADAPTOR
|
if ENABLE_MODULE_ECDSA_ADAPTOR
|
||||||
include src/modules/ecdsa_adaptor/Makefile.am.include
|
include src/modules/ecdsa_adaptor/Makefile.am.include
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if ENABLE_MODULE_FROST
|
||||||
|
include src/modules/frost/Makefile.am.include
|
||||||
|
endif
|
||||||
|
@ -12,6 +12,7 @@ Added features:
|
|||||||
* Experimental module for Confidential Assets (Pedersen commitments, range proofs, and [surjection proofs](src/modules/surjection/surjection.md)).
|
* Experimental module for Confidential Assets (Pedersen commitments, range proofs, and [surjection proofs](src/modules/surjection/surjection.md)).
|
||||||
* Experimental module for Bulletproofs++ range proofs.
|
* Experimental module for Bulletproofs++ range proofs.
|
||||||
* Experimental module for [address whitelisting](src/modules/whitelist/whitelist.md).
|
* Experimental module for [address whitelisting](src/modules/whitelist/whitelist.md).
|
||||||
|
* Experimental module for FROST.
|
||||||
|
|
||||||
Experimental features are made available for testing and review by the community. The APIs of these features should not be considered stable.
|
Experimental features are made available for testing and review by the community. The APIs of these features should not be considered stable.
|
||||||
|
|
||||||
|
18
configure.ac
18
configure.ac
@ -240,6 +240,11 @@ AC_ARG_ENABLE(external_default_callbacks,
|
|||||||
AS_HELP_STRING([--enable-external-default-callbacks],[enable external default callback functions [default=no]]), [],
|
AS_HELP_STRING([--enable-external-default-callbacks],[enable external default callback functions [default=no]]), [],
|
||||||
[SECP_SET_DEFAULT([enable_external_default_callbacks], [no], [no])])
|
[SECP_SET_DEFAULT([enable_external_default_callbacks], [no], [no])])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(module_frost,
|
||||||
|
AS_HELP_STRING([--enable-module-frost],[enable FROST module (experimental)]),
|
||||||
|
[],
|
||||||
|
[SECP_SET_DEFAULT([enable_module_frost], [no], [yes])])
|
||||||
|
|
||||||
# Test-only override of the (autodetected by the C code) "widemul" setting.
|
# Test-only override of the (autodetected by the C code) "widemul" setting.
|
||||||
# Legal values are:
|
# Legal values are:
|
||||||
# * int64 (for [u]int64_t),
|
# * int64 (for [u]int64_t),
|
||||||
@ -530,6 +535,14 @@ if test x"$enable_module_ecdh" = x"yes"; then
|
|||||||
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_ECDH=1"
|
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_ECDH=1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x"$enable_module_frost" = x"yes"; then
|
||||||
|
if test x"$enable_module_schnorrsig" = x"no"; then
|
||||||
|
AC_MSG_ERROR([Module dependency error: You have disabled the schnorrsig module explicitly, but it is required by the frost module.])
|
||||||
|
fi
|
||||||
|
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_FROST=1"
|
||||||
|
enable_module_schnorrsig=yes
|
||||||
|
fi
|
||||||
|
|
||||||
if test x"$enable_external_default_callbacks" = x"yes"; then
|
if test x"$enable_external_default_callbacks" = x"yes"; then
|
||||||
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1"
|
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1"
|
||||||
fi
|
fi
|
||||||
@ -582,6 +595,9 @@ else
|
|||||||
if test x"$set_asm" = x"arm32"; then
|
if test x"$set_asm" = x"arm32"; then
|
||||||
AC_MSG_ERROR([ARM32 assembly is experimental. Use --enable-experimental to allow.])
|
AC_MSG_ERROR([ARM32 assembly is experimental. Use --enable-experimental to allow.])
|
||||||
fi
|
fi
|
||||||
|
if test x"$enable_module_frost" = x"yes"; then
|
||||||
|
AC_MSG_ERROR([FROST module is experimental. Use --enable-experimental to allow.])
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###
|
###
|
||||||
@ -611,6 +627,7 @@ AM_CONDITIONAL([ENABLE_MODULE_ECDSA_S2C], [test x"$enable_module_ecdsa_s2c" = x"
|
|||||||
AM_CONDITIONAL([ENABLE_MODULE_ECDSA_ADAPTOR], [test x"$enable_module_ecdsa_adaptor" = x"yes"])
|
AM_CONDITIONAL([ENABLE_MODULE_ECDSA_ADAPTOR], [test x"$enable_module_ecdsa_adaptor" = x"yes"])
|
||||||
AM_CONDITIONAL([ENABLE_MODULE_BPPP], [test x"$enable_module_bppp" = x"yes"])
|
AM_CONDITIONAL([ENABLE_MODULE_BPPP], [test x"$enable_module_bppp" = x"yes"])
|
||||||
AM_CONDITIONAL([ENABLE_MODULE_SCHNORRSIG_HALFAGG], [test x"$enable_module_schnorrsig_halfagg" = x"yes"])
|
AM_CONDITIONAL([ENABLE_MODULE_SCHNORRSIG_HALFAGG], [test x"$enable_module_schnorrsig_halfagg" = x"yes"])
|
||||||
|
AM_CONDITIONAL([ENABLE_MODULE_FROST], [test x"$enable_module_frost" = x"yes"])
|
||||||
AM_CONDITIONAL([USE_REDUCED_SURJECTION_PROOF_SIZE], [test x"$use_reduced_surjection_proof_size" = x"yes"])
|
AM_CONDITIONAL([USE_REDUCED_SURJECTION_PROOF_SIZE], [test x"$use_reduced_surjection_proof_size" = x"yes"])
|
||||||
AM_CONDITIONAL([USE_EXTERNAL_ASM], [test x"$enable_external_asm" = x"yes"])
|
AM_CONDITIONAL([USE_EXTERNAL_ASM], [test x"$enable_external_asm" = x"yes"])
|
||||||
AM_CONDITIONAL([USE_ASM_ARM], [test x"$set_asm" = x"arm32"])
|
AM_CONDITIONAL([USE_ASM_ARM], [test x"$set_asm" = x"arm32"])
|
||||||
@ -651,6 +668,7 @@ echo " module ecdsa-s2c = $enable_module_ecdsa_s2c"
|
|||||||
echo " module ecdsa-adaptor = $enable_module_ecdsa_adaptor"
|
echo " module ecdsa-adaptor = $enable_module_ecdsa_adaptor"
|
||||||
echo " module bppp = $enable_module_bppp"
|
echo " module bppp = $enable_module_bppp"
|
||||||
echo " module schnorrsig-halfagg = $enable_module_schnorrsig_halfagg"
|
echo " module schnorrsig-halfagg = $enable_module_schnorrsig_halfagg"
|
||||||
|
echo " module frost = $enable_module_frost"
|
||||||
echo
|
echo
|
||||||
echo " asm = $set_asm"
|
echo " asm = $set_asm"
|
||||||
echo " ecmult window size = $set_ecmult_window"
|
echo " ecmult window size = $set_ecmult_window"
|
||||||
|
22
include/secp256k1_frost.h
Normal file
22
include/secp256k1_frost.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef SECP256K1_FROST_H
|
||||||
|
#define SECP256K1_FROST_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/** This code is currently a work in progress. It's not secure nor stable.
|
||||||
|
* IT IS EXTREMELY DANGEROUS AND RECKLESS TO USE THIS MODULE IN PRODUCTION!
|
||||||
|
*
|
||||||
|
* This module implements a variant of Flexible Round-Optimized Schnorr
|
||||||
|
* Threshold Signatures (FROST) by Chelsea Komlo and Ian Goldberg
|
||||||
|
* (https://crysp.uwaterloo.ca/software/frost/).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
2
src/modules/frost/Makefile.am.include
Normal file
2
src/modules/frost/Makefile.am.include
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
include_HEADERS += include/secp256k1_frost.h
|
||||||
|
noinst_HEADERS += src/modules/frost/main_impl.h
|
10
src/modules/frost/main_impl.h
Normal file
10
src/modules/frost/main_impl.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2021-2024 Jesse Posner *
|
||||||
|
* Distributed under the MIT software license, see the accompanying *
|
||||||
|
* file COPYING or http://www.opensource.org/licenses/mit-license.php.*
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#ifndef SECP256K1_MODULE_FROST_MAIN
|
||||||
|
#define SECP256K1_MODULE_FROST_MAIN
|
||||||
|
|
||||||
|
#endif
|
@ -908,3 +908,7 @@ static int secp256k1_ge_parse_ext(secp256k1_ge* ge, const unsigned char *in33) {
|
|||||||
#ifdef ENABLE_MODULE_SURJECTIONPROOF
|
#ifdef ENABLE_MODULE_SURJECTIONPROOF
|
||||||
# include "modules/surjection/main_impl.h"
|
# include "modules/surjection/main_impl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_MODULE_FROST
|
||||||
|
# include "modules/frost/main_impl.h"
|
||||||
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user