From 008c803d07b8ffef38d7834e7f761283fd9ac7d3 Mon Sep 17 00:00:00 2001 From: julian Date: Fri, 20 Sep 2024 09:44:23 -0600 Subject: [PATCH] Update dart bindings --- example/lib/frost_sample_run.dart | 2 + example/pubspec.lock | 24 ++++++------ ffigen.yaml | 2 +- lib/frostdart.dart | 9 +++++ lib/frostdart_bindings_generated.dart | 53 +++++++++++++++++++++------ src/serai | 2 +- 6 files changed, 66 insertions(+), 26 deletions(-) diff --git a/example/lib/frost_sample_run.dart b/example/lib/frost_sample_run.dart index c1693d4..b377f27 100644 --- a/example/lib/frost_sample_run.dart +++ b/example/lib/frost_sample_run.dart @@ -36,11 +36,13 @@ abstract class FrostSampleRunner { change: false, index: 0, ), + secure: false, ); debugPrint("Address: $address"); final encodedConfig = newSignConfig( + thresholdKeysWrapperPointer: deserializedKeysAlice, network: network, outputs: [ Output( diff --git a/example/pubspec.lock b/example/pubspec.lock index 85bd2a3..53ef29d 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -94,18 +94,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.4" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: @@ -134,18 +134,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.15.0" path: dependency: transitive description: @@ -211,10 +211,10 @@ packages: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.2" vector_math: dependency: transitive description: @@ -227,10 +227,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.1" + version: "14.2.5" sdks: dart: ">=3.3.0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/ffigen.yaml b/ffigen.yaml index 8b88b22..c10b755 100644 --- a/ffigen.yaml +++ b/ffigen.yaml @@ -3,7 +3,7 @@ name: FrostdartBindings description: | Bindings for `src/serai/hrf/header.h`. - Regenerate bindings with `flutter pub run ffigen --config ffigen.yaml`. + Regenerate bindings with `dart run ffigen --config ffigen.yaml`. output: 'lib/frostdart_bindings_generated.dart' headers: entry-points: diff --git a/lib/frostdart.dart b/lib/frostdart.dart index a61e932..fc7a2d2 100644 --- a/lib/frostdart.dart +++ b/lib/frostdart.dart @@ -333,11 +333,13 @@ int signInputs({ } Output signInput({ + required ffi.Pointer thresholdKeysWrapperPointer, required String signConfig, required int network, required int index, }) { final signConfigPointer = decodeSignConfig( + thresholdKeysWrapperPointer: thresholdKeysWrapperPointer, network: network, encodedSignConfig: signConfig, ); @@ -393,6 +395,7 @@ String addressForKeys({ required int network, required ffi.Pointer keys, required AddressDerivationData addressDerivationData, + required bool secure, }) { final result = _bindings.address_for_keys( network, @@ -400,6 +403,7 @@ String addressForKeys({ addressDerivationData.account, addressDerivationData.index, addressDerivationData.change, + secure, ); if (result.err != SUCCESS) { throw FrostdartException(errorCode: result.err); @@ -450,6 +454,7 @@ int signFeePerWeight({ } String newSignConfig({ + required ffi.Pointer thresholdKeysWrapperPointer, required int network, required List outputs, required List paymentAddresses, @@ -507,6 +512,7 @@ String newSignConfig({ stringViewPointer.ref.len = change.length; final result = _bindings.new_sign_config( + thresholdKeysWrapperPointer, network, outputsPointer, outputs.length, @@ -537,6 +543,7 @@ String newSignConfig({ } ffi.Pointer decodeSignConfig({ + required ffi.Pointer thresholdKeysWrapperPointer, required int network, required String encodedSignConfig, }) { @@ -549,6 +556,7 @@ ffi.Pointer decodeSignConfig({ stringViewPointer.ref.len = encodedSignConfig.length; final result = _bindings.decode_sign_config( + thresholdKeysWrapperPointer, network, stringViewPointer.ref, ); @@ -569,6 +577,7 @@ ffi.Pointer attemptSign({ required int network, }) { final signConfigPointer = decodeSignConfig( + thresholdKeysWrapperPointer: thresholdKeysWrapperPointer, network: network, encodedSignConfig: signConfig, ); diff --git a/lib/frostdart_bindings_generated.dart b/lib/frostdart_bindings_generated.dart index 709f795..83aff46 100644 --- a/lib/frostdart_bindings_generated.dart +++ b/lib/frostdart_bindings_generated.dart @@ -366,6 +366,7 @@ class FrostdartBindings { int account, int address, bool change, + bool secure, ) { return _address_for_keys( network, @@ -373,6 +374,7 @@ class FrostdartBindings { account, address, change, + secure, ); } @@ -383,25 +385,35 @@ class FrostdartBindings { ffi.Pointer, ffi.Uint32, ffi.Uint32, + ffi.Bool, ffi.Bool)>>('address_for_keys'); late final _address_for_keys = _address_for_keysPtr.asFunction< CResult_OwnedString Function( - int, ffi.Pointer, int, int, bool)>(); + int, ffi.Pointer, int, int, bool, bool)>(); OwnedString script_pubkey_for_keys( ffi.Pointer keys, + int account, + int address, + bool change, + bool secure, ) { return _script_pubkey_for_keys( keys, + account, + address, + change, + secure, ); } late final _script_pubkey_for_keysPtr = _lookup< ffi.NativeFunction< - OwnedString Function( - ffi.Pointer)>>('script_pubkey_for_keys'); - late final _script_pubkey_for_keys = _script_pubkey_for_keysPtr - .asFunction)>(); + OwnedString Function(ffi.Pointer, ffi.Uint32, + ffi.Uint32, ffi.Bool, ffi.Bool)>>('script_pubkey_for_keys'); + late final _script_pubkey_for_keys = _script_pubkey_for_keysPtr.asFunction< + OwnedString Function( + ffi.Pointer, int, int, bool, bool)>(); ffi.Pointer output_hash( ffi.Pointer self, @@ -587,6 +599,7 @@ class FrostdartBindings { .asFunction)>(); CResult_SignConfigRes new_sign_config( + ffi.Pointer keys, int network, ffi.Pointer outputs, int outputs_len, @@ -597,6 +610,7 @@ class FrostdartBindings { int fee_per_weight, ) { return _new_sign_config( + keys, network, outputs, outputs_len, @@ -611,6 +625,7 @@ class FrostdartBindings { late final _new_sign_configPtr = _lookup< ffi.NativeFunction< CResult_SignConfigRes Function( + ffi.Pointer, ffi.Int32, ffi.Pointer, ffi.UintPtr, @@ -620,25 +635,36 @@ class FrostdartBindings { StringView, ffi.Uint64)>>('new_sign_config'); late final _new_sign_config = _new_sign_configPtr.asFunction< - CResult_SignConfigRes Function(int, ffi.Pointer, int, int, - ffi.Pointer, ffi.Pointer, StringView, int)>(); + CResult_SignConfigRes Function( + ffi.Pointer, + int, + ffi.Pointer, + int, + int, + ffi.Pointer, + ffi.Pointer, + StringView, + int)>(); CResult_SignConfig decode_sign_config( + ffi.Pointer keys, int network, StringView encoded, ) { return _decode_sign_config( + keys, network, encoded, ); } late final _decode_sign_configPtr = _lookup< - ffi - .NativeFunction>( - 'decode_sign_config'); - late final _decode_sign_config = _decode_sign_configPtr - .asFunction(); + ffi.NativeFunction< + CResult_SignConfig Function(ffi.Pointer, + ffi.Int32, StringView)>>('decode_sign_config'); + late final _decode_sign_config = _decode_sign_configPtr.asFunction< + CResult_SignConfig Function( + ffi.Pointer, int, StringView)>(); CResult_AttemptSignRes attempt_sign( ffi.Pointer keys, @@ -1086,6 +1112,9 @@ final class PortableOutput extends ffi.Struct { @ffi.Bool() external bool change; + + @ffi.Bool() + external bool secure; } final class CResult_SignConfig extends ffi.Struct { diff --git a/src/serai b/src/serai index 389dfd9..e9c8d3f 160000 --- a/src/serai +++ b/src/serai @@ -1 +1 @@ -Subproject commit 389dfd9ae4deb295527dc4624a858e05013b19d4 +Subproject commit e9c8d3f824c86f08ee55573973356aa317c9b38e