Skip to content

Commit 951db53

Browse files
Merge pull request #228 from klever-io/develop
fix avail signed extension
2 parents ee01c2b + 2394ce0 commit 951db53

12 files changed

Lines changed: 128 additions & 28 deletions

File tree

Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ homepage = "https://klever.org/"
4747
license = "Apache-2.0"
4848
repository = "https://github.com/kleverio/kos-rs"
4949
rust-version = "1.74.0"
50-
version = "0.2.36"
50+
version = "0.2.37"
5151

5252
[workspace.dependencies]
5353
bech32 = "0.9.1"
@@ -88,7 +88,7 @@ serde_json = "1.0"
8888
thiserror = "1.0"
8989
kos-mobile = { version = "0.1.0", path = "./packages/kos-mobile", default-features = false }
9090
ecies = { version = "0.2.7", default-features = false, features = ["pure"] }
91-
kos = { version = "0.2.36", path = "./packages/kos", default-features = false, features = ["not-ksafe"] }
91+
kos = { version = "0.2.37", path = "./packages/kos", default-features = false, features = ["not-ksafe"] }
9292

9393
# lightning
9494
lwk_common = "0.9.0"

Makefile

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.PHONY: all fmt clippy check webpack webpack-npm grcov
1+
.PHONY: all fmt clippy check webpack webpack-npm grcov build-go build-go-mac build-go-musl
22

33
UNAME := $(shell uname)
44

@@ -46,11 +46,24 @@ build-ios:
4646
build-go:
4747
cargo install uniffi-bindgen-go --git https://github.com/NordSecurity/uniffi-bindgen-go --tag v0.4.0+v0.28.3 && \
4848
cargo build --release --package kos-mobile && uniffi-bindgen-go --library target/release/libkos_mobile.a --out-dir ./packages/kos-go
49+
mkdir -p ./packages/kos-go/kos_mobile/lib/linux-amd64/ && \
50+
cp target/release/libkos_mobile.so ./packages/kos-go/kos_mobile/lib/linux-amd64/ || \
51+
(echo "Error: Failed to copy libkos_mobile.so"; exit 1)
52+
53+
build-go-mac:
54+
cargo install uniffi-bindgen-go --git https://github.com/NordSecurity/uniffi-bindgen-go --tag v0.4.0+v0.28.3 && \
55+
cargo build --release --package kos-mobile && uniffi-bindgen-go --library target/release/libkos_mobile.a --out-dir ./packages/kos-go
56+
mkdir -p ./packages/kos-go/kos_mobile/lib/darwin-aarch64/ && \
57+
cp target/release/libkos_mobile.dylib ./packages/kos-go/kos_mobile/lib/darwin-aarch64/ || \
58+
(echo "Error: Failed to copy libkos_mobile.dylib"; exit 1)
4959

5060
build-go-musl:
5161
cargo install uniffi-bindgen-go --git https://github.com/NordSecurity/uniffi-bindgen-go --tag v0.4.0+v0.28.3 && \
5262
cargo build --profile min-size --target x86_64-unknown-linux-musl --package kos-mobile && \
5363
uniffi-bindgen-go --library target/x86_64-unknown-linux-musl/min-size/libkos_mobile.a --out-dir ./packages/kos-go
64+
mkdir -p ./packages/kos-go/kos_mobile/lib/linux-musl-amd64/ && \
65+
cp target/x86_64-unknown-linux-musl/min-size/libkos_mobile.so ./packages/kos-go/kos_mobile/lib/linux-musl-amd64/ || \
66+
(echo "Error: Failed to copy libkos_mobile.so from musl build"; exit 1)
5467

5568
test-ios: build-ios
5669
cd packages/kos-mobile/ios/framework/KOSMobile && xcodebuild \

packages/kos-codec/src/chains/substrate/mod.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,20 @@ mod test {
263263
spec_version,
264264
transaction_version,
265265
app_id: Some(0),
266-
signed_extensions: None,
266+
signed_extensions: Some(
267+
[
268+
"CheckNonZeroSender".to_string(),
269+
"CheckSpecVersion".to_string(),
270+
"CheckTxVersion".to_string(),
271+
"CheckGenesis".to_string(),
272+
"CheckMortality".to_string(),
273+
"CheckNonce".to_string(),
274+
"CheckWeight".to_string(),
275+
"ChargeTransactionPayment".to_string(),
276+
"CheckAppId".to_string(),
277+
]
278+
.to_vec(),
279+
),
267280
}),
268281
};
269282

@@ -288,7 +301,7 @@ mod test {
288301

289302
let signed_tx = encode_for_broadcast(tx.clone(), acc).unwrap();
290303

291-
assert_eq!(hex::encode(signed_tx.raw_data), "2d02840066933bd1f37070ef87bd1198af3dacceb095237f803f3d32b173e6b425ed79723045022100d38f71947b2cf543589450dd80e31d14012a45776b5990a549ad54073045022100d38f71947b2cf543589450dd80e31d14012a45776b5990a549ad54b50120000603004e0edd04c47b1adc3b21dcd8671a5d90a1c2eb75fb60d293a9086f2626dbcd5904");
304+
assert_eq!(hex::encode(signed_tx.raw_data), "3102840066933bd1f37070ef87bd1198af3dacceb095237f803f3d32b173e6b425ed79723045022100d38f71947b2cf543589450dd80e31d14012a45776b5990a549ad54073045022100d38f71947b2cf543589450dd80e31d14012a45776b5990a549ad54b5012000000603004e0edd04c47b1adc3b21dcd8671a5d90a1c2eb75fb60d293a9086f2626dbcd5904");
292305
assert_eq!(
293306
hex::encode(signed_tx.signature),
294307
"3045022100d38f71947b2cf543589450dd80e31d14012a45776b5990a549ad54073045022100d38f71947b2cf543589450dd80e31d14012a45776b5990a549ad54"

packages/kos-codec/src/chains/substrate/models.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,13 @@ impl ExtrinsicPayload {
5252
}
5353
}
5454

55-
let has_app_id = parse_signed_extensions(&self.signed_extensions, "AppId");
55+
let has_app_id = parse_signed_extensions(&self.signed_extensions, "CheckAppId");
5656
if let Ok(true) = has_app_id {
5757
if let Some(app_id) = self.app_id {
5858
encoded.extend(Compact(app_id).encode());
5959
}
6060
}
6161

62-
// Use the app_id if it is set for AVAIL transactions, otherwise use the mode
63-
if let Some(app_id) = self.app_id {
64-
encoded.extend(Compact(app_id).encode());
65-
}
66-
6762
if let Some(mode) = self.mode {
6863
encoded.extend(mode.encode());
6964
}
@@ -111,7 +106,7 @@ impl ExtrinsicPayload {
111106
}
112107
}
113108

114-
let has_app_id = parse_signed_extensions(&self.signed_extensions, "AppId");
109+
let has_app_id = parse_signed_extensions(&self.signed_extensions, "CheckAppId");
115110
if let Ok(true) = has_app_id {
116111
if let Some(app_id) = self.app_id {
117112
encoded.extend(Compact(app_id).encode());

packages/kos-go/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ test-linux-amd64:
9898

9999
.PHONY: test-darwin-arm64
100100
test-darwin-arm64:
101+
install_name_tool -id @rpath/libkos_mobile.dylib kos_mobile/lib/darwin-aarch64/libkos_mobile.dylib
102+
otool -D kos_mobile/lib/darwin-aarch64/libkos_mobile.dylib
101103
DYLD_LIBRARY_PATH=$(PWD)/kos_mobile/lib/darwin-aarch64 \
102104
CGO_ENABLED=1 \
103105
GOOS=darwin \
@@ -152,5 +154,4 @@ help:
152154
@echo " build-darwin-arm64 - Build for macOS ARM64"
153155
@echo " test-linux-amd64 - Test Linux AMD64"
154156
@echo " test-linux-musl - Test Linux with musl"
155-
@echo " test-darwin-amd64 - Test macOS AMD64"
156157
@echo " test-darwin-arm64 - Test macOS ARM64"

packages/kos-go/demo/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@ module github.com/klever-io/kos-rs/packages/kos-go/demo
33
go 1.24.7
44

55
require github.com/klever-io/kos-rs/packages/kos-go v0.2.36
6+
7+
replace github.com/klever-io/kos-rs/packages/kos-go => ../

packages/kos-go/demo/go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +0,0 @@
1-
github.com/klever-io/kos-rs/packages/kos-go v0.2.36 h1:m17sM3KzasFHPA4Aa9DYm9e3ES8owhAU1sYfWmA1RVw=
2-
github.com/klever-io/kos-rs/packages/kos-go v0.2.36/go.mod h1:ekYnxLsNZh51RGO8/X4WrhDWbUGmW0uUM7NxqE1P5sQ=

packages/kos-go/kos_mobile/kos_mobile.go

Lines changed: 85 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ func uniffiCheckChecksums() {
708708
checksum := rustCall(func(_uniffiStatus *C.RustCallStatus) C.uint16_t {
709709
return C.uniffi_kos_mobile_checksum_func_new_substrate_transaction_options()
710710
})
711-
if checksum != 59821 {
711+
if checksum != 29579 {
712712
// If this happens try cleaning and rebuilding your project
713713
panic("kos_mobile: uniffi_kos_mobile_checksum_func_new_substrate_transaction_options: UniFFI API checksum mismatch")
714714
}
@@ -1702,25 +1702,27 @@ type TransactionChainOptionsSubstrate struct {
17021702
Era []byte
17031703
Nonce uint32
17041704
Tip uint64
1705-
AssetId *uint32
1705+
AssetId *string
17061706
BlockHash []byte
17071707
GenesisHash []byte
17081708
SpecVersion uint32
17091709
TransactionVersion uint32
17101710
AppId *uint32
1711+
SignedExtensions *[]string
17111712
}
17121713

17131714
func (e TransactionChainOptionsSubstrate) Destroy() {
17141715
FfiDestroyerBytes{}.Destroy(e.Call)
17151716
FfiDestroyerBytes{}.Destroy(e.Era)
17161717
FfiDestroyerUint32{}.Destroy(e.Nonce)
17171718
FfiDestroyerUint64{}.Destroy(e.Tip)
1718-
FfiDestroyerOptionalUint32{}.Destroy(e.AssetId)
1719+
FfiDestroyerOptionalString{}.Destroy(e.AssetId)
17191720
FfiDestroyerBytes{}.Destroy(e.BlockHash)
17201721
FfiDestroyerBytes{}.Destroy(e.GenesisHash)
17211722
FfiDestroyerUint32{}.Destroy(e.SpecVersion)
17221723
FfiDestroyerUint32{}.Destroy(e.TransactionVersion)
17231724
FfiDestroyerOptionalUint32{}.Destroy(e.AppId)
1725+
FfiDestroyerOptionalSequenceString{}.Destroy(e.SignedExtensions)
17241726
}
17251727

17261728
type TransactionChainOptionsCosmos struct {
@@ -1762,12 +1764,13 @@ func (FfiConverterTransactionChainOptions) Read(reader io.Reader) TransactionCha
17621764
FfiConverterBytesINSTANCE.Read(reader),
17631765
FfiConverterUint32INSTANCE.Read(reader),
17641766
FfiConverterUint64INSTANCE.Read(reader),
1765-
FfiConverterOptionalUint32INSTANCE.Read(reader),
1767+
FfiConverterOptionalStringINSTANCE.Read(reader),
17661768
FfiConverterBytesINSTANCE.Read(reader),
17671769
FfiConverterBytesINSTANCE.Read(reader),
17681770
FfiConverterUint32INSTANCE.Read(reader),
17691771
FfiConverterUint32INSTANCE.Read(reader),
17701772
FfiConverterOptionalUint32INSTANCE.Read(reader),
1773+
FfiConverterOptionalSequenceStringINSTANCE.Read(reader),
17711774
}
17721775
case 4:
17731776
return TransactionChainOptionsCosmos{
@@ -1794,12 +1797,13 @@ func (FfiConverterTransactionChainOptions) Write(writer io.Writer, value Transac
17941797
FfiConverterBytesINSTANCE.Write(writer, variant_value.Era)
17951798
FfiConverterUint32INSTANCE.Write(writer, variant_value.Nonce)
17961799
FfiConverterUint64INSTANCE.Write(writer, variant_value.Tip)
1797-
FfiConverterOptionalUint32INSTANCE.Write(writer, variant_value.AssetId)
1800+
FfiConverterOptionalStringINSTANCE.Write(writer, variant_value.AssetId)
17981801
FfiConverterBytesINSTANCE.Write(writer, variant_value.BlockHash)
17991802
FfiConverterBytesINSTANCE.Write(writer, variant_value.GenesisHash)
18001803
FfiConverterUint32INSTANCE.Write(writer, variant_value.SpecVersion)
18011804
FfiConverterUint32INSTANCE.Write(writer, variant_value.TransactionVersion)
18021805
FfiConverterOptionalUint32INSTANCE.Write(writer, variant_value.AppId)
1806+
FfiConverterOptionalSequenceStringINSTANCE.Write(writer, variant_value.SignedExtensions)
18031807
case TransactionChainOptionsCosmos:
18041808
writeInt32(writer, 4)
18051809
FfiConverterStringINSTANCE.Write(writer, variant_value.ChainId)
@@ -1919,6 +1923,43 @@ func (_ FfiDestroyerOptionalUint32) Destroy(value *uint32) {
19191923
}
19201924
}
19211925

1926+
type FfiConverterOptionalString struct{}
1927+
1928+
var FfiConverterOptionalStringINSTANCE = FfiConverterOptionalString{}
1929+
1930+
func (c FfiConverterOptionalString) Lift(rb RustBufferI) *string {
1931+
return LiftFromRustBuffer[*string](c, rb)
1932+
}
1933+
1934+
func (_ FfiConverterOptionalString) Read(reader io.Reader) *string {
1935+
if readInt8(reader) == 0 {
1936+
return nil
1937+
}
1938+
temp := FfiConverterStringINSTANCE.Read(reader)
1939+
return &temp
1940+
}
1941+
1942+
func (c FfiConverterOptionalString) Lower(value *string) C.RustBuffer {
1943+
return LowerIntoRustBuffer[*string](c, value)
1944+
}
1945+
1946+
func (_ FfiConverterOptionalString) Write(writer io.Writer, value *string) {
1947+
if value == nil {
1948+
writeInt8(writer, 0)
1949+
} else {
1950+
writeInt8(writer, 1)
1951+
FfiConverterStringINSTANCE.Write(writer, *value)
1952+
}
1953+
}
1954+
1955+
type FfiDestroyerOptionalString struct{}
1956+
1957+
func (_ FfiDestroyerOptionalString) Destroy(value *string) {
1958+
if value != nil {
1959+
FfiDestroyerString{}.Destroy(*value)
1960+
}
1961+
}
1962+
19221963
type FfiConverterOptionalWalletOptions struct{}
19231964

19241965
var FfiConverterOptionalWalletOptionsINSTANCE = FfiConverterOptionalWalletOptions{}
@@ -2030,6 +2071,43 @@ func (_ FfiDestroyerOptionalWalletChainOptions) Destroy(value *WalletChainOption
20302071
}
20312072
}
20322073

2074+
type FfiConverterOptionalSequenceString struct{}
2075+
2076+
var FfiConverterOptionalSequenceStringINSTANCE = FfiConverterOptionalSequenceString{}
2077+
2078+
func (c FfiConverterOptionalSequenceString) Lift(rb RustBufferI) *[]string {
2079+
return LiftFromRustBuffer[*[]string](c, rb)
2080+
}
2081+
2082+
func (_ FfiConverterOptionalSequenceString) Read(reader io.Reader) *[]string {
2083+
if readInt8(reader) == 0 {
2084+
return nil
2085+
}
2086+
temp := FfiConverterSequenceStringINSTANCE.Read(reader)
2087+
return &temp
2088+
}
2089+
2090+
func (c FfiConverterOptionalSequenceString) Lower(value *[]string) C.RustBuffer {
2091+
return LowerIntoRustBuffer[*[]string](c, value)
2092+
}
2093+
2094+
func (_ FfiConverterOptionalSequenceString) Write(writer io.Writer, value *[]string) {
2095+
if value == nil {
2096+
writeInt8(writer, 0)
2097+
} else {
2098+
writeInt8(writer, 1)
2099+
FfiConverterSequenceStringINSTANCE.Write(writer, *value)
2100+
}
2101+
}
2102+
2103+
type FfiDestroyerOptionalSequenceString struct{}
2104+
2105+
func (_ FfiDestroyerOptionalSequenceString) Destroy(value *[]string) {
2106+
if value != nil {
2107+
FfiDestroyerSequenceString{}.Destroy(*value)
2108+
}
2109+
}
2110+
20332111
type FfiConverterSequenceUint32 struct{}
20342112

20352113
var FfiConverterSequenceUint32INSTANCE = FfiConverterSequenceUint32{}
@@ -2642,10 +2720,10 @@ func NewIcpWalletOptions(useLegacyPath bool, keyType string) WalletOptions {
26422720
}))
26432721
}
26442722

2645-
func NewSubstrateTransactionOptions(call string, era string, nonce uint32, tip uint64, assetId *uint32, blockHash string, genesisHash string, specVersion uint32, transactionVersion uint32, appId *uint32) TransactionChainOptions {
2723+
func NewSubstrateTransactionOptions(call string, era string, nonce uint32, tip uint64, assetId *string, blockHash string, genesisHash string, specVersion uint32, transactionVersion uint32, appId *uint32, signedExtensions *[]string) TransactionChainOptions {
26462724
return FfiConverterTransactionChainOptionsINSTANCE.Lift(rustCall(func(_uniffiStatus *C.RustCallStatus) RustBufferI {
26472725
return GoRustBuffer{
2648-
inner: C.uniffi_kos_mobile_fn_func_new_substrate_transaction_options(FfiConverterStringINSTANCE.Lower(call), FfiConverterStringINSTANCE.Lower(era), FfiConverterUint32INSTANCE.Lower(nonce), FfiConverterUint64INSTANCE.Lower(tip), FfiConverterOptionalUint32INSTANCE.Lower(assetId), FfiConverterStringINSTANCE.Lower(blockHash), FfiConverterStringINSTANCE.Lower(genesisHash), FfiConverterUint32INSTANCE.Lower(specVersion), FfiConverterUint32INSTANCE.Lower(transactionVersion), FfiConverterOptionalUint32INSTANCE.Lower(appId), _uniffiStatus),
2726+
inner: C.uniffi_kos_mobile_fn_func_new_substrate_transaction_options(FfiConverterStringINSTANCE.Lower(call), FfiConverterStringINSTANCE.Lower(era), FfiConverterUint32INSTANCE.Lower(nonce), FfiConverterUint64INSTANCE.Lower(tip), FfiConverterOptionalStringINSTANCE.Lower(assetId), FfiConverterStringINSTANCE.Lower(blockHash), FfiConverterStringINSTANCE.Lower(genesisHash), FfiConverterUint32INSTANCE.Lower(specVersion), FfiConverterUint32INSTANCE.Lower(transactionVersion), FfiConverterOptionalUint32INSTANCE.Lower(appId), FfiConverterOptionalSequenceStringINSTANCE.Lower(signedExtensions), _uniffiStatus),
26492727
}
26502728
}))
26512729
}

packages/kos-go/kos_mobile/kos_mobile.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ RustBuffer uniffi_kos_mobile_fn_func_new_icp_wallet_options(int8_t use_legacy_pa
582582
#endif
583583
#ifndef UNIFFI_FFIDEF_UNIFFI_KOS_MOBILE_FN_FUNC_NEW_SUBSTRATE_TRANSACTION_OPTIONS
584584
#define UNIFFI_FFIDEF_UNIFFI_KOS_MOBILE_FN_FUNC_NEW_SUBSTRATE_TRANSACTION_OPTIONS
585-
RustBuffer uniffi_kos_mobile_fn_func_new_substrate_transaction_options(RustBuffer call, RustBuffer era, uint32_t nonce, uint64_t tip, RustBuffer asset_id, RustBuffer block_hash, RustBuffer genesis_hash, uint32_t spec_version, uint32_t transaction_version, RustBuffer app_id, RustCallStatus *out_status
585+
RustBuffer uniffi_kos_mobile_fn_func_new_substrate_transaction_options(RustBuffer call, RustBuffer era, uint32_t nonce, uint64_t tip, RustBuffer asset_id, RustBuffer block_hash, RustBuffer genesis_hash, uint32_t spec_version, uint32_t transaction_version, RustBuffer app_id, RustBuffer signed_extensions, RustCallStatus *out_status
586586
);
587587
#endif
588588
#ifndef UNIFFI_FFIDEF_UNIFFI_KOS_MOBILE_FN_FUNC_NEW_WALLET_OPTIONS

0 commit comments

Comments
 (0)