Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Changes

## Version 1.5.2

### Added
- taproot: add bip341_control_block_verify().

### Changed
- map: ignore duplicates in map_merkle_path_add() for consistency.

### Fixed
- build: Fix building with the Elements ABI disabled.
- tx: Fix BIP118 ANYPREVOUTANYSCRIPT sighash computation.
- psbt: Fix merkle path, witness and buffer length checks when parsing.

## Version 1.5.1

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ installed.
For non-development use, you can install wally from PyPI with `pip` as follows:

```
pip install wallycore==1.5.1
pip install wallycore==1.5.2
```

For development, you can build and install wally using:
Expand Down
2 changes: 1 addition & 1 deletion _CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.18)

project(
libwallycore
VERSION 1.5.1
VERSION 1.5.2
DESCRIPTION "A collection of useful primitives for cryptocurrency wallets"
LANGUAGES C
)
Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
AC_PREREQ([2.60])
AC_INIT([libwallycore],[1.5.1])
AC_INIT([libwallycore],[1.5.2])
AC_CONFIG_AUX_DIR([tools/build-aux])
AC_CONFIG_MACRO_DIR([tools/build-aux/m4])
AC_CONFIG_SRCDIR([src/mnemonic.h])
Expand Down
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def extract_docs(infile, outfile):
# built documents.
#
# The short X.Y version.
version = u'1.5.1'
version = u'1.5.2'
# The full version, including alpha/beta/rc tags.
release = version

Expand Down
4 changes: 2 additions & 2 deletions include/wally_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ extern "C" {
/** Library version */
#define WALLY_MAJOR_VER 1
#define WALLY_MINOR_VER 5
#define WALLY_PATCH_VER 1
#define WALLY_BUILD_VER 0x10501
#define WALLY_PATCH_VER 2
#define WALLY_BUILD_VER 0x10502

/**
* Initialize wally.
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ def _call(args, cwd=ABS_PATH):

kwargs = {
'name': 'wallycore',
'version': '1.5.1',
'version': '1.5.2',
'description': 'libwally Bitcoin library',
'long_description': 'Python bindings for the libwally Bitcoin library',
'url': 'https://github.com/ElementsProject/libwally-core',
Expand Down
4 changes: 2 additions & 2 deletions src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -199,11 +199,11 @@ libwallycore_la_INCLUDES = \

if SHARED_BUILD_ENABLED
# Increment at every ABI change (whether breaking or non-breaking)
LT_VER_CURRENT = 7
LT_VER_CURRENT = 8
# Increment at every release, but reset to 0 at every ABI change
LT_VER_REVISION = 0
# Increment at every ABI change, but reset to 0 if breaking
LT_VER_AGE = 1
LT_VER_AGE = 2
# The library filename will be "libwallycore.so.$((current-age)).$((age)).$((revision))",
# and the soname will be "libwallycore.so.$((current-age))".
# Do NOT try to make the library version-info follow the project release version number!
Expand Down
6 changes: 6 additions & 0 deletions src/ctest/psbts.h
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,12 @@ static const struct psbt_test invalid_psbts[] =
/* PSBTv2 with PSBT_IN_REQUIRED_HEIGHT_LOCKTIME greater than or equal to 500000000 */
{"cHNidP8BAgQCAAAAAQQBAQEFAQIB+wQCAAAAAAEAUgIAAAABwaolbiFLlqGCL5PeQr/ztfP/jQUZMG41FddRWl6AWxIAAAAAAP////8BGMaaOwAAAAAWABSwo68UQghBJpPKfRZoUrUtsK7wbgAAAAABAR8Yxpo7AAAAABYAFLCjrxRCCEEmk8p9FmhStS2wrvBuAQ4gCwrZIUGcHIcZc11y3HOfnqngY40f5MHu8PmUQISBX8gBDwQAAAAAARIEAGXNHQAiAgLWAfhIRqZ1X3dr4A49nej7EKzJNfuDxF+wFi1MrVq3khj2nYc+VAAAgAEAAIAAAACAAAAAACoAAAABAwgACK8vAAAAAAEEFgAUxDD2TEdW2jENvRoIVXLvKZkmJywAIgIC42+/9T3VNAcM+P05ZhRoDzV6m4Xbc0C/HPp0XSrXs0AY9p2HPlQAAIABAACAAAAAgAEAAABkAAAAAQMIi73rCwAAAAABBBYAFE3Rk6yWSlasG54cyoRU/i9HT4UTAA==", false, true},

/* PSBT (short bytes) */
{"cHNidP8BAPaccp32A/ZwcwD2/wAAAAAAAAAAAAAD9nBzAPb/AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAABAAAAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAAAAgAAAAAAAAAAAAAQAAAQAAAAEAAAABAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhISEhISEhASEhISEhXQqxjo6OEXD/t///AAAAYAAAAAAAAAAAAAA7ISEhISEhISEhIXBzAAAAABAREREREREREREAAAAAABER7u7u7gYGBgYGBvsG7gA=", false, true},

/* PSBT (too many witnesses) */
{"cHNidP8BAHBzYnT/AQBjAC8AAC0CA/79/fn9FBQUFAAAEAAAAAAlJSUBJSQlJSX//wAAAAAAAAAAAD0AAAcA+JL/////WgAAAAAAAQAAAAAAAAAAAAAAOgAKCgkKCgo0MHNic2JwdPtQAAD3AAAACAAAAAAAAAAAAHBzYnT/EABjAAABAAAAAAgICAgICAgICAgICAgJhISEhISEAAAAAAAAuwAAAExMPAAAAAoKISEhISEhDiEhISEhISEhISohISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFwc2J0/wEIdP8BAGcAAAACAAkJTLIAAAAAAAAAAAAAAD0AAAcA+JL/////AAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAALgAAAAEAAAAAAAAAAAABBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAD0oAP/7AA==", false, true},

/* PSET Version 0 - not supported anymore */
{"cHNldP8BAOYCAAAAAAEJoA5k8iAABF66mJyk85LBsCUTVVfErOwxmexTjCBEyQAAAAAA/f///wMBXOe5Y9N/jy1Ryvu6koqqniILi7xmBXFJnANiijhRuM4BAAAAAO5rFFgAF6kUpruHAKCJvLhrCf5VkrhUvQ4+bDKHAVznuWPTf48tUcr7upKKqp4iC4u8ZgVxSZwDYoo4UbjOAQAAAAA7msoAABepFII2rTwCO4NdVWyoBFVzHVM/c1IBhwFc57lj03+PLVHK+7qSiqqeIguLvGYFcUmcA2KKOFG4zgEAAAAAAAATqAAAAAAAAAABAUMBXOe5Y9N/jy1Ryvu6koqqniILi7xmBXFJnANiijhRuM4BAAAAASoF8gAAF6kUIUgXxch89mjFY+aFBdmAk9d8GcmHAQQWABTs8/AAycufhZ2FR4uYndwqd1C7ogv8CGVsZW1lbnRzAAgA8gUqAQAAAAv8CGVsZW1lbnRzAiBc57lj03+PLVHK+7qSiqqeIguLvGYFcUmcA2KKOFG4zgABABYAFMFIn/H6YCLLR2ukTXG9evUf5T5VC/wIZWxlbWVudHMGIQMYlbtO8ZBg4wdFP1vS+d59msC7iEjmr/VATyVestonAwABABYAFJpBlksv6mEJcXOPlyskNv1O3yn+C/wIZWxlbWVudHMGIQLkIFPXDMnWVGXBPhDwpi5zMF/WmosNkQLltvC445AA2QAA", true, true},

Expand Down
8 changes: 8 additions & 0 deletions src/data/psbt.json
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,14 @@
"comment": "PSBTv2 with PSBT_IN_REQUIRED_HEIGHT_LOCKTIME greater than or equal to 500000000",
"psbt": "cHNidP8BAgQCAAAAAQQBAQEFAQIB+wQCAAAAAAEAUgIAAAABwaolbiFLlqGCL5PeQr/ztfP/jQUZMG41FddRWl6AWxIAAAAAAP////8BGMaaOwAAAAAWABSwo68UQghBJpPKfRZoUrUtsK7wbgAAAAABAR8Yxpo7AAAAABYAFLCjrxRCCEEmk8p9FmhStS2wrvBuAQ4gCwrZIUGcHIcZc11y3HOfnqngY40f5MHu8PmUQISBX8gBDwQAAAAAARIEAGXNHQAiAgLWAfhIRqZ1X3dr4A49nej7EKzJNfuDxF+wFi1MrVq3khj2nYc+VAAAgAEAAIAAAACAAAAAACoAAAABAwgACK8vAAAAAAEEFgAUxDD2TEdW2jENvRoIVXLvKZkmJywAIgIC42+/9T3VNAcM+P05ZhRoDzV6m4Xbc0C/HPp0XSrXs0AY9p2HPlQAAIABAACAAAAAgAEAAABkAAAAAQMIi73rCwAAAAABBBYAFE3Rk6yWSlasG54cyoRU/i9HT4UTAA=="
},
{
"comment": "PSBT (short bytes)",
"psbt": "cHNidP8BAPaccp32A/ZwcwD2/wAAAAAAAAAAAAAD9nBzAPb/AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAABAAAAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAAAAgAAAAAAAAAAAAAQAAAQAAAAEAAAABAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhISEhISEhASEhISEhXQqxjo6OEXD/t///AAAAYAAAAAAAAAAAAAA7ISEhISEhISEhIXBzAAAAABAREREREREREREAAAAAABER7u7u7gYGBgYGBvsG7gA="
},
{
"comment": "PSBT (too many witnesses)",
"psbt": "cHNidP8BAHBzYnT/AQBjAC8AAC0CA/79/fn9FBQUFAAAEAAAAAAlJSUBJSQlJSX//wAAAAAAAAAAAD0AAAcA+JL/////WgAAAAAAAQAAAAAAAAAAAAAAOgAKCgkKCgo0MHNic2JwdPtQAAD3AAAACAAAAAAAAAAAAHBzYnT/EABjAAABAAAAAAgICAgICAgICAgICAgJhISEhISEAAAAAAAAuwAAAExMPAAAAAoKISEhISEhDiEhISEhISEhISohISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFwc2J0/wEIdP8BAGcAAAACAAkJTLIAAAAAAAAAAAAAAD0AAAcA+JL/////AAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAALgAAAAEAAAAAAAAAAAABBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAD0oAP/7AA=="
},
{
"comment": "PSET Version 0 - not supported anymore",
"psbt": "cHNldP8BAOYCAAAAAAEJoA5k8iAABF66mJyk85LBsCUTVVfErOwxmexTjCBEyQAAAAAA/f///wMBXOe5Y9N/jy1Ryvu6koqqniILi7xmBXFJnANiijhRuM4BAAAAAO5rFFgAF6kUpruHAKCJvLhrCf5VkrhUvQ4+bDKHAVznuWPTf48tUcr7upKKqp4iC4u8ZgVxSZwDYoo4UbjOAQAAAAA7msoAABepFII2rTwCO4NdVWyoBFVzHVM/c1IBhwFc57lj03+PLVHK+7qSiqqeIguLvGYFcUmcA2KKOFG4zgEAAAAAAAATqAAAAAAAAAABAUMBXOe5Y9N/jy1Ryvu6koqqniILi7xmBXFJnANiijhRuM4BAAAAASoF8gAAF6kUIUgXxch89mjFY+aFBdmAk9d8GcmHAQQWABTs8/AAycufhZ2FR4uYndwqd1C7ogv8CGVsZW1lbnRzAAgA8gUqAQAAAAv8CGVsZW1lbnRzAiBc57lj03+PLVHK+7qSiqqeIguLvGYFcUmcA2KKOFG4zgABABYAFMFIn/H6YCLLR2ukTXG9evUf5T5VC/wIZWxlbWVudHMGIQMYlbtO8ZBg4wdFP1vS+d59msC7iEjmr/VATyVestonAwABABYAFJpBlksv6mEJcXOPlyskNv1O3yn+C/wIZWxlbWVudHMGIQLkIFPXDMnWVGXBPhDwpi5zMF/WmosNkQLltvC445AA2QAA",
Expand Down
4 changes: 4 additions & 0 deletions src/pullpush.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,10 @@ int pull_witness(const unsigned char **cursor, size_t *max,
val_len = *max;
}
num_witnesses = pull_varint(&val, &val_len);
if (num_witnesses > val_len) {
/* Not enough bytes remaining for num_witnesses empty witnesses */
return WALLY_EINVAL;
}
ret = wally_tx_witness_stack_init_alloc(num_witnesses, witness_out);

for (i = 0; ret == WALLY_OK && i < num_witnesses; ++i) {
Expand Down
3 changes: 2 additions & 1 deletion src/transaction.c
Original file line number Diff line number Diff line change
Expand Up @@ -2235,7 +2235,8 @@ static int analyze_tx(const unsigned char *bytes, size_t bytes_len,

#define ensure_n(n) if ((n) > (size_t)(end - p)) return WALLY_EINVAL

#define ensure_varint(dst) ensure_n(varint_length_from_bytes(p)); \
#define ensure_varint(dst) ensure_n(sizeof(uint8_t)); \
ensure_n(varint_length_from_bytes(p)); \
p += varint_from_bytes(p, (dst))

#define ensure_varbuff(dst) ensure_varint((dst)); \
Expand Down
4 changes: 2 additions & 2 deletions src/wasm_package/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/wasm_package/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "wallycore",
"version": "1.5.1",
"version": "1.5.2",
"description": "JavaScript bindings for libwally",
"main": "src/index.js",
"type": "module",
Expand Down
4 changes: 2 additions & 2 deletions src/wasm_package/src/const.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ export const WALLY_ADDRESS_VERSION_WIF_TESTNET = 0xEF; /** Wallet Import Format
export const WALLY_BIP32_CHAIN_CODE_LEN = 32;
export const WALLY_BIP32_TWEAK_SUM_LEN = 32;
export const WALLY_BTC_MAX = 21000000;
export const WALLY_BUILD_VER = 0x10501;
export const WALLY_BUILD_VER = 0x10502;
export const WALLY_CA_PREFIX_LIQUID = 0x0c; /** Liquid v1 confidential address prefix */
export const WALLY_CA_PREFIX_LIQUID_REGTEST = 0x04; /** Liquid v1 confidential address prefix for regtest */
export const WALLY_CA_PREFIX_LIQUID_TESTNET = 0x17; /** Liquid v1 confidential address prefix for testnet */
Expand Down Expand Up @@ -153,7 +153,7 @@ export const WALLY_NETWORK_LIQUID_TESTNET = 0x05; /** Liquid v1 testnet */
export const WALLY_NETWORK_NONE = 0x00; /** Used for miniscript parsing only */
export const WALLY_NO_CODESEPARATOR = 0xffffffff; /* No BIP342 code separator position */
export const WALLY_OK = 0; /** Success */
export const WALLY_PATCH_VER = 1;
export const WALLY_PATCH_VER = 2;
export const WALLY_PSBT_COMBINE_SIGS = 0x1; /* Combine the signatures from a signature-only PSBT */
export const WALLY_PSBT_EXTRACT_FINAL = 0x0; /* Extract a final transaction; fail if any inputs aren't finalized */
export const WALLY_PSBT_EXTRACT_NON_FINAL = 0x1; /* Extract without any final scriptsig and witness */
Expand Down
Loading