Commit Graph

4848 Commits

Author SHA1 Message Date
Andreas Schildbach
73690baa71 .gitlab-ci.yml: add our reference build 2023-09-21 20:36:39 +02:00
Sean Gilligan
64b5e02a5c graalvm.yml: add JDK 21 to the matrix
This also requires updating to the latest Gradle GraalVM Plugin,
which requires Gradle 7.4 or later.

Recent Gradle GraalVM Plugins don't require the `javaLauncher` setting (which
we had hardcoded to use JDK 17) so that setting is removed.
2023-09-21 19:38:43 +02:00
Sean Gilligan
1952d1cc7f graalvm.yml: remove unneeded declaration of native-image component
This is not needed with GraalVM 17 and will cause an error with GraalVM 21.
2023-09-21 19:33:53 +02:00
Andreas Schildbach
bb95ea18d1 build.Containerfile: update reference build to use JDK 17
Also updates the container to Debian Bookworm, because we need
its specific (patched for JDK 17) Gradle version.

Note this change makes the JavaDoc build artifact reproducible.
2023-09-21 19:12:45 +02:00
Andreas Schildbach
b6b29a659b build.Containerfile: reproducible reference build via containerization
Currently, buildah, Podman and Docker are supported.

The goals of the reference build are:

- Make our release process more transparent
- Improve reproducibility by shielding our build from the hosts
  environment
- Reduce the trust necessary for running our build by shielding
  the hosts environment from possible side effects of our build

Note both the signing and the uploading of release artifacts are out
of scope for the reference build.
2023-09-21 11:46:34 +02:00
Sean Gilligan
56658e44de build.gradle: normalize file/directory permissions within JARs
This aims to make our build reprodicible.
2023-09-19 14:00:38 +02:00
Andreas Schildbach
f41b495610 build.gradle: strip timestamps from JavaDoc HTMLs
This aims to make our build reprodicible.
2023-09-16 22:09:51 +02:00
Andreas Schildbach
7605fa9535 build.gradle: strip timestamps from JARs
This aims to make our build reprodicible.
2023-09-16 22:08:45 +02:00
Andreas Schildbach
b8d2521c12 README: add JDK 21 to list of tested builds 2023-09-16 13:50:41 +02:00
Sean Gilligan
81b78292e2 PeerGroup, FilterMerger: deprecate setting false-positive rate
In the bitcoinj code itself, the false-positive rate is never changed
after constructing a `PeerGroup` or a `FilterMerger`.

* Deprecate methods for setting Bloom Filter FP rate in both methods
* Add constructor params to `PeerGroup` so they can be set at construction
  time, if non-default values are needed
2023-09-16 11:42:24 +02:00
Sean Gilligan
5955eee4c8 Wallet: replace Interables.concat() with Stream.concat() in getWatchedOutputs()
This simplifies the code and removes a Guava dependency.
2023-09-16 11:31:32 +02:00
Sean Gilligan
68e61d9507 Wallet: refactor getWatchedOutputs() to use streams
1. Get a spliterator from the concatenated iterator
2. Use streams instead of nested loops
3. Extract `isWatchedScriptPubKey()` helper function
2023-09-16 11:28:56 +02:00
Sean Gilligan
bce4475aaf replace Guava Bytes.concat() with own ByteUtils.concat() 2023-09-16 11:22:11 +02:00
Sean Gilligan
daa4da8d9f remove use of Guava @VisibleForTesting on all package-private members
From now on we will only use this annotation on `public` or `protected` members.
2023-09-16 11:13:22 +02:00
Sean Gilligan
57b3649e55 PBKDF2SHA512: replace unneeded check for max dkLen with comment
Since the check for `dkLen > (2^32 - 1) * H_LEN` is effectively a no-op,
replace it with a comment.
2023-09-16 09:07:50 +02:00
Sean Gilligan
b4f7deaba5 PBKDF2SHA512: calculate l with integer math 2023-09-14 22:46:25 +02:00
Sean Gilligan
5a11957eb3 PBKDF2SHA512: declare/catch specific exceptions
Make it more clear which exceptions are thrown by `F` and caught by
the `try` in `derive()`.
2023-09-14 22:39:58 +02:00
Sean Gilligan
ee23c2d6ff PBKDF2SHA512: don't allow negative count or dkLen 2023-09-14 22:37:09 +02:00
Sean Gilligan
140deb0669 PBKDF2SHA512: move dkLen check out of try/catch
It throws an exception so doesn't need an if/else
and it also doesn't need to be in the try.
2023-09-14 22:34:12 +02:00
Sean Gilligan
4e039df446 PBKDF2SHA512: make hLen a constant 2023-09-14 18:25:31 +02:00
Sean Gilligan
c830107bce PBKDF2SHA512: set hLen to correct value of 64
This is a bugfix to the API, but since `MnemonicCode` always
passes `dkLen` of 64 and the `System.arraycopy()` on line 66 truncates
`baos.toByteArray()` to `dkLen` length, the call to `derive()` works
correctly for our use-case.
2023-09-14 18:21:53 +02:00
Andreas Schildbach
4b987cb172 PBKDF2SHA512: remove comment about SHA-1 test vectors
They won't pass against our SHA-512 based code, and we have
our tests now.
2023-09-14 17:07:23 +02:00
Andreas Schildbach
040e2f4b3e PBKDF2SHA512Test: tests for PBKDF2SHA512.derive() 2023-09-14 08:17:53 +02:00
Sean Gilligan
b90af12aea PBKDF2SHA512: update URLs in JavaDoc
The IETF `https:` URLs are what the previous `http:` URLs redirect to.
The Cryptofreak URL is the same but with `https:`.
2023-09-12 22:18:19 +02:00
Sean Gilligan
f7d2b38aae PBKDF2SHA512: properly format JavaDoc 2023-09-12 22:16:48 +02:00
Sean Gilligan
bce7bc195f WalletTool: eliminate reassignment of feePerVkb 2023-09-12 21:51:31 +02:00
Sean Gilligan
983febfad0 WalletTool: eliminate reassignment of coinSelector 2023-09-12 21:49:40 +02:00
Sean Gilligan
e186ef9c84 WalletTool: simplify coinSelector lambdas 2023-09-12 21:47:20 +02:00
Sean Gilligan
853aeebd81 WalletTool: use CoinSelector.fromPredicate()
Simplify creation of CoinSelectors by using `CoinSelector.fromPredicate()`.
2023-09-12 21:44:32 +02:00
Sean Gilligan
7af3124f65 FilteringCoinSelector: use stream in select()
Note: this also prevents mutation of the candidate list which isn't
a problem as used within bitcoinj, but could be a problem if used
externally.
2023-09-12 19:01:41 +02:00
Sean Gilligan
0597c3383f CoinSelector: mark as functional interface
The `@FunctionalInterface` annotation doesn't change behavior of `CoinSelector`
in any way. It just declares our intention that it be used as a functional
interface and will generate compiler errors if someone changes the code so that
it is no longer a SAM type.
2023-09-12 18:46:18 +02:00
Sean Gilligan
bd52545fb7 DefaultCoinSelector: use List.sort() instead of Collections.sort() 2023-09-12 18:36:24 +02:00
Sean Gilligan
2be7ee33f8 DefaultCoinSelector: extract compareByDepth() comparator 2023-09-12 18:34:24 +02:00
Sean Gilligan
9eaff37897 FilteringCoinSelector: make immutable
This is an API-breaking change because it requires a list of
`TransactionOutPoint` to be passed to the constructor and remove the
`excludesOutputsSpentBy(tx)` method.

`Wallet` is updated to use the new constructor.
2023-09-12 18:30:30 +02:00
Sean Gilligan
82feb7b831 CoinSelection: add defensive copy in constructor 2023-09-12 18:22:34 +02:00
Sean Gilligan
e8491bbd88 KeyTimeCoinSelector: use a stream in select()
Note that this removes the warning about exceeding the limit.
2023-09-12 18:19:14 +02:00
Sean Gilligan
339e0d0450 KeyTimeCoinSelector: factor out method isKeyBeforeCutoff() 2023-09-12 18:12:56 +02:00
Sean Gilligan
0c7e1aec3b KeyTimeCoinSelector: use Wallet.getConfidence(parent) in isConfirmed()
Also make `Wallet.getConfidence(parent)` package-private.
2023-09-12 18:09:06 +02:00
Sean Gilligan
bbe7f088ca KeyTimeCoinSelector: check for parent is non-null in isConfirmed() 2023-09-12 18:05:07 +02:00
Sean Gilligan
af7c903df7 GuiUtils: use UI_ANIMATION_TIME consistently, deprecate UI_ANIMATION_TIME_MSEC 2023-09-12 18:01:40 +02:00
Sean Gilligan
b83c0b96e6 WalletApplication: remove unreachable default case in suffixFromNetwork() 2023-09-12 17:59:43 +02:00
Sean Gilligan
b5d3c07612 WalletApplication: use switch expression in suffixFromNetwork() 2023-09-12 17:56:45 +02:00
Sean Gilligan
6fc1087aba wallettemplate: mark fields as final
This commit fixes every IntelliJ warning about fields being final for
the wallettemplate module.
2023-09-12 17:54:46 +02:00
Sean Gilligan
7a1135246c EasingInterpolator: remove redundant default clause from switch expression 2023-09-12 17:52:04 +02:00
Sean Gilligan
7a30041578 EasingInterpolator: use switch expression 2023-09-12 17:43:31 +02:00
Sean Gilligan
9e9d3afd6a WTUtils: fix warning about raw generic 2023-09-12 17:40:33 +02:00
Sean Gilligan
110da96911 Wallet: use getAbsoluteFile() when checking if parent directory exists
This fixes a NPE when using wallet-tool to create a new wallet on a path
without directory, e.g. `wallet-tool create --wallet=test.wallet`.
2023-09-07 17:44:04 +02:00
Sean Gilligan
8aa808f7d4 build.gradle: update JavaFX to 20.0.2 2023-09-07 11:06:14 +02:00
Sean Gilligan
96d0022d09 build.gradle: update javafxplugin to 0.1.0 2023-09-07 11:04:03 +02:00
Andreas Schildbach
929088cde8 Sha256Hash: add back accessor getReversedBytes() as deprecated 2023-09-07 10:55:34 +02:00