-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add BIP352 silentpayments
module
#1519
base: master
Are you sure you want to change the base?
Changes from 1 commit
1c74941
9d6769f
7229d49
94c6e1f
5c546e2
566b5b8
5ce0db1
5b9714f
f42e0dd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -188,6 +188,10 @@ AC_ARG_ENABLE(module_ellswift, | |
AS_HELP_STRING([--enable-module-ellswift],[enable ElligatorSwift module [default=yes]]), [], | ||
[SECP_SET_DEFAULT([enable_module_ellswift], [yes], [yes])]) | ||
|
||
AC_ARG_ENABLE(module_silentpayments, | ||
AS_HELP_STRING([--enable-module-silentpayments],[enable Silent Payments module [default=no]]), [], | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 1c74941: can we just break the convention and make it There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Haha no :) |
||
[SECP_SET_DEFAULT([enable_module_silentpayments], [no], [yes])]) | ||
|
||
AC_ARG_ENABLE(external_default_callbacks, | ||
AS_HELP_STRING([--enable-external-default-callbacks],[enable external default callback functions [default=no]]), [], | ||
[SECP_SET_DEFAULT([enable_external_default_callbacks], [no], [no])]) | ||
|
@@ -394,6 +398,10 @@ SECP_CFLAGS="$SECP_CFLAGS $WERROR_CFLAGS" | |
|
||
# Processing must be done in a reverse topological sorting of the dependency graph | ||
# (dependent module first). | ||
if test x"$enable_module_silentpayments" = x"yes"; then | ||
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_SILENTPAYMENTS=1" | ||
fi | ||
|
||
if test x"$enable_module_ellswift" = x"yes"; then | ||
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DENABLE_MODULE_ELLSWIFT=1" | ||
fi | ||
|
@@ -450,6 +458,7 @@ AM_CONDITIONAL([ENABLE_MODULE_RECOVERY], [test x"$enable_module_recovery" = x"ye | |
AM_CONDITIONAL([ENABLE_MODULE_EXTRAKEYS], [test x"$enable_module_extrakeys" = x"yes"]) | ||
AM_CONDITIONAL([ENABLE_MODULE_SCHNORRSIG], [test x"$enable_module_schnorrsig" = x"yes"]) | ||
AM_CONDITIONAL([ENABLE_MODULE_ELLSWIFT], [test x"$enable_module_ellswift" = x"yes"]) | ||
AM_CONDITIONAL([ENABLE_MODULE_SILENTPAYMENTS], [test x"$enable_module_silentpayments" = 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([BUILD_WINDOWS], [test "$build_windows" = "yes"]) | ||
|
@@ -472,6 +481,7 @@ echo " module recovery = $enable_module_recovery" | |
echo " module extrakeys = $enable_module_extrakeys" | ||
echo " module schnorrsig = $enable_module_schnorrsig" | ||
echo " module ellswift = $enable_module_ellswift" | ||
echo " module silentpayments = $enable_module_silentpayments" | ||
echo | ||
echo " asm = $set_asm" | ||
echo " ecmult window size = $set_ecmult_window" | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
#ifndef SECP256K1_SILENTPAYMENTS_H | ||
#define SECP256K1_SILENTPAYMENTS_H | ||
|
||
#include "secp256k1.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/* This module provides an implementation for Silent Payments, as specified in | ||
* BIP352. This particularly involves the creation of input tweak data by | ||
* summing up private or public keys and the derivation of a shared secret using | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. s/private/secret key for consistency with the rest of the lib |
||
* Elliptic Curve Diffie-Hellman. Combined are either: | ||
* - spender's private keys and recipient's public key (a * B, sender side) | ||
* - spender's public keys and recipient's private key (A * b, recipient side) | ||
* With this result, the necessary key material for ultimately creating/scanning | ||
* or spending Silent Payment outputs can be determined. | ||
* | ||
* Note that this module is _not_ a full implementation of BIP352, as it | ||
* inherently doesn't deal with higher-level concepts like addresses, output | ||
* script types or transactions. The intent is to provide a module for | ||
* abstracting away the elliptic-curve operations required for the protocol. For | ||
* any wallet software already using libsecp256k1, this API should provide all | ||
* the functions needed for a Silent Payments implementation without requiring | ||
* any further elliptic-curve operations from the wallet. | ||
*/ | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* SECP256K1_SILENTPAYMENTS_H */ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
include_HEADERS += include/secp256k1_silentpayments.h | ||
noinst_HEADERS += src/modules/silentpayments/main_impl.h |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
/*********************************************************************** | ||
* Distributed under the MIT software license, see the accompanying * | ||
* file COPYING or https://www.opensource.org/licenses/mit-license.php.* | ||
***********************************************************************/ | ||
|
||
#ifndef SECP256K1_MODULE_SILENTPAYMENTS_MAIN_H | ||
#define SECP256K1_MODULE_SILENTPAYMENTS_MAIN_H | ||
|
||
#include "../../../include/secp256k1.h" | ||
#include "../../../include/secp256k1_silentpayments.h" | ||
|
||
/* TODO: implement functions for sender side. */ | ||
|
||
/* TODO: implement functions for receiver side. */ | ||
|
||
#endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1c74941: since the next commit adds a dependency on extrakeys, and silent payments obviously depends on schnorr:
extrakeys
already checks forschnorr
, but I added it an explicit check forschnorr
because otherwise the error is confusing.Try with:
./configure --enable-module-silentpayments --disable-module-extrakeys
cmake .. -DSECP256K1_ENABLE_MODULE_SILENTPAYMENTS=ON -DSECP256K1_ENABLE_MODULE_SCHNORRSIG=OFF