Skip to content

Commit e7e8fe8

Browse files
authored
Merge pull request #26 from synonymdev/feat/expose-derive-secret
feat: expose `derive_node_secret_from_mnemonic`
2 parents 612ad05 + ae82e4d commit e7e8fe8

File tree

14 files changed

+116
-4
lines changed

14 files changed

+116
-4
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ldk-node"
3-
version = "0.7.0-rc.2"
3+
version = "0.7.0-rc.3"
44
authors = ["Elias Rohrer <dev@tnull.de>"]
55
homepage = "https://lightningdevkit.org/"
66
license = "MIT OR Apache-2.0"

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import PackageDescription
55

66
let tag = "v0.7.0-rc.2"
7-
let checksum = "02b7edc2f3fcf2b8a1c914bd1f03e8a3bf2aca2281a2314d0d03cb7547ecd11a"
7+
let checksum = "328ce1018daa21c07b7e9e2a6d63f3a8a3821619408f3edbcc78a448c102233b"
88
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"
99

1010
let package = Package(

bindings/kotlin/ldk-node-android/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ org.gradle.jvmargs=-Xmx1536m
22
android.useAndroidX=true
33
android.enableJetifier=true
44
kotlin.code.style=official
5-
libraryVersion=0.7.0-rc.2
5+
libraryVersion=0.7.0-rc.3
Binary file not shown.
Binary file not shown.
Binary file not shown.

bindings/kotlin/ldk-node-android/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.android.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1487,6 +1487,8 @@ internal typealias UniffiVTableCallbackInterfaceVssHeaderProviderUniffiByValue =
14871487

14881488

14891489

1490+
1491+
14901492

14911493

14921494

@@ -2658,6 +2660,11 @@ internal interface UniffiLib : Library {
26582660
fun uniffi_ldk_node_fn_func_default_config(
26592661
uniffiCallStatus: UniffiRustCallStatus,
26602662
): RustBufferByValue
2663+
fun uniffi_ldk_node_fn_func_derive_node_secret_from_mnemonic(
2664+
`mnemonic`: RustBufferByValue,
2665+
`passphrase`: RustBufferByValue,
2666+
uniffiCallStatus: UniffiRustCallStatus,
2667+
): RustBufferByValue
26612668
fun uniffi_ldk_node_fn_func_generate_entropy_mnemonic(
26622669
`wordCount`: RustBufferByValue,
26632670
uniffiCallStatus: UniffiRustCallStatus,
@@ -2876,6 +2883,8 @@ internal interface UniffiLib : Library {
28762883
): Unit
28772884
fun uniffi_ldk_node_checksum_func_default_config(
28782885
): Short
2886+
fun uniffi_ldk_node_checksum_func_derive_node_secret_from_mnemonic(
2887+
): Short
28792888
fun uniffi_ldk_node_checksum_func_generate_entropy_mnemonic(
28802889
): Short
28812890
fun uniffi_ldk_node_checksum_method_bolt11invoice_amount_milli_satoshis(
@@ -3268,6 +3277,9 @@ private fun uniffiCheckApiChecksums(lib: UniffiLib) {
32683277
if (lib.uniffi_ldk_node_checksum_func_default_config() != 55381.toShort()) {
32693278
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
32703279
}
3280+
if (lib.uniffi_ldk_node_checksum_func_derive_node_secret_from_mnemonic() != 15067.toShort()) {
3281+
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
3282+
}
32713283
if (lib.uniffi_ldk_node_checksum_func_generate_entropy_mnemonic() != 48014.toShort()) {
32723284
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
32733285
}
@@ -11054,6 +11066,7 @@ object FfiConverterTypeNodeError : FfiConverterRustBuffer<NodeException> {
1105411066
59 -> NodeException.TransactionAlreadyConfirmed(FfiConverterString.read(buf))
1105511067
60 -> NodeException.NoSpendableOutputs(FfiConverterString.read(buf))
1105611068
61 -> NodeException.CoinSelectionFailed(FfiConverterString.read(buf))
11069+
62 -> NodeException.InvalidMnemonic(FfiConverterString.read(buf))
1105711070
else -> throw RuntimeException("invalid error enum value, something is very wrong!!")
1105811071
}
1105911072
}
@@ -11308,6 +11321,10 @@ object FfiConverterTypeNodeError : FfiConverterRustBuffer<NodeException> {
1130811321
buf.putInt(61)
1130911322
Unit
1131011323
}
11324+
is NodeException.InvalidMnemonic -> {
11325+
buf.putInt(62)
11326+
Unit
11327+
}
1131111328
}.let { /* this makes the `when` an expression, which ensures it is exhaustive */ }
1131211329
}
1131311330
}
@@ -13772,6 +13789,17 @@ fun `defaultConfig`(): Config {
1377213789
})
1377313790
}
1377413791

13792+
@Throws(NodeException::class)
13793+
fun `deriveNodeSecretFromMnemonic`(`mnemonic`: kotlin.String, `passphrase`: kotlin.String?): List<kotlin.UByte> {
13794+
return FfiConverterSequenceUByte.lift(uniffiRustCallWithError(NodeExceptionErrorHandler) { uniffiRustCallStatus ->
13795+
UniffiLib.INSTANCE.uniffi_ldk_node_fn_func_derive_node_secret_from_mnemonic(
13796+
FfiConverterString.lower(`mnemonic`),
13797+
FfiConverterOptionalString.lower(`passphrase`),
13798+
uniffiRustCallStatus,
13799+
)
13800+
})
13801+
}
13802+
1377513803
fun `generateEntropyMnemonic`(`wordCount`: WordCount?): Mnemonic {
1377613804
return FfiConverterTypeMnemonic.lift(uniffiRustCall { uniffiRustCallStatus ->
1377713805
UniffiLib.INSTANCE.uniffi_ldk_node_fn_func_generate_entropy_mnemonic(

bindings/kotlin/ldk-node-android/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.common.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1781,6 +1781,8 @@ sealed class NodeException(message: String): kotlin.Exception(message) {
17811781

17821782
class CoinSelectionFailed(message: String) : NodeException(message)
17831783

1784+
class InvalidMnemonic(message: String) : NodeException(message)
1785+
17841786
}
17851787

17861788

bindings/ldk_node.udl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
namespace ldk_node {
22
Mnemonic generate_entropy_mnemonic(WordCount? word_count);
33
Config default_config();
4+
[Throws=NodeError]
5+
sequence<u8> derive_node_secret_from_mnemonic(string mnemonic, string? passphrase);
46
};
57

68
dictionary Config {
@@ -380,6 +382,7 @@ enum NodeError {
380382
"TransactionAlreadyConfirmed",
381383
"NoSpendableOutputs",
382384
"CoinSelectionFailed",
385+
"InvalidMnemonic",
383386
};
384387

385388
dictionary NodeStatus {

bindings/python/src/ldk_node/ldk_node.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,8 @@ def _uniffi_check_contract_api_version(lib):
463463
def _uniffi_check_api_checksums(lib):
464464
if lib.uniffi_ldk_node_checksum_func_default_config() != 55381:
465465
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
466+
if lib.uniffi_ldk_node_checksum_func_derive_node_secret_from_mnemonic() != 15067:
467+
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
466468
if lib.uniffi_ldk_node_checksum_func_generate_entropy_mnemonic() != 48014:
467469
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
468470
if lib.uniffi_ldk_node_checksum_method_bolt11invoice_amount_milli_satoshis() != 50823:
@@ -2320,6 +2322,12 @@ class _UniffiVTableCallbackInterfaceVssHeaderProvider(ctypes.Structure):
23202322
ctypes.POINTER(_UniffiRustCallStatus),
23212323
)
23222324
_UniffiLib.uniffi_ldk_node_fn_func_default_config.restype = _UniffiRustBuffer
2325+
_UniffiLib.uniffi_ldk_node_fn_func_derive_node_secret_from_mnemonic.argtypes = (
2326+
_UniffiRustBuffer,
2327+
_UniffiRustBuffer,
2328+
ctypes.POINTER(_UniffiRustCallStatus),
2329+
)
2330+
_UniffiLib.uniffi_ldk_node_fn_func_derive_node_secret_from_mnemonic.restype = _UniffiRustBuffer
23232331
_UniffiLib.uniffi_ldk_node_fn_func_generate_entropy_mnemonic.argtypes = (
23242332
_UniffiRustBuffer,
23252333
ctypes.POINTER(_UniffiRustCallStatus),
@@ -2596,6 +2604,9 @@ class _UniffiVTableCallbackInterfaceVssHeaderProvider(ctypes.Structure):
25962604
_UniffiLib.uniffi_ldk_node_checksum_func_default_config.argtypes = (
25972605
)
25982606
_UniffiLib.uniffi_ldk_node_checksum_func_default_config.restype = ctypes.c_uint16
2607+
_UniffiLib.uniffi_ldk_node_checksum_func_derive_node_secret_from_mnemonic.argtypes = (
2608+
)
2609+
_UniffiLib.uniffi_ldk_node_checksum_func_derive_node_secret_from_mnemonic.restype = ctypes.c_uint16
25992610
_UniffiLib.uniffi_ldk_node_checksum_func_generate_entropy_mnemonic.argtypes = (
26002611
)
26012612
_UniffiLib.uniffi_ldk_node_checksum_func_generate_entropy_mnemonic.restype = ctypes.c_uint16
@@ -11996,6 +12007,11 @@ class CoinSelectionFailed(_UniffiTempNodeError):
1199612007
def __repr__(self):
1199712008
return "NodeError.CoinSelectionFailed({})".format(repr(str(self)))
1199812009
_UniffiTempNodeError.CoinSelectionFailed = CoinSelectionFailed # type: ignore
12010+
class InvalidMnemonic(_UniffiTempNodeError):
12011+
12012+
def __repr__(self):
12013+
return "NodeError.InvalidMnemonic({})".format(repr(str(self)))
12014+
_UniffiTempNodeError.InvalidMnemonic = InvalidMnemonic # type: ignore
1199912015

1200012016
NodeError = _UniffiTempNodeError # type: ignore
1200112017
del _UniffiTempNodeError
@@ -12249,6 +12265,10 @@ def read(buf):
1224912265
return NodeError.CoinSelectionFailed(
1225012266
_UniffiConverterString.read(buf),
1225112267
)
12268+
if variant == 62:
12269+
return NodeError.InvalidMnemonic(
12270+
_UniffiConverterString.read(buf),
12271+
)
1225212272
raise InternalError("Raw enum value doesn't match any cases")
1225312273

1225412274
@staticmethod
@@ -12375,6 +12395,8 @@ def check_lower(value):
1237512395
return
1237612396
if isinstance(value, NodeError.CoinSelectionFailed):
1237712397
return
12398+
if isinstance(value, NodeError.InvalidMnemonic):
12399+
return
1237812400

1237912401
@staticmethod
1238012402
def write(value, buf):
@@ -12500,6 +12522,8 @@ def write(value, buf):
1250012522
buf.write_i32(60)
1250112523
if isinstance(value, NodeError.CoinSelectionFailed):
1250212524
buf.write_i32(61)
12525+
if isinstance(value, NodeError.InvalidMnemonic):
12526+
buf.write_i32(62)
1250312527

1250412528

1250512529

@@ -15869,6 +15893,16 @@ def default_config() -> "Config":
1586915893
return _UniffiConverterTypeConfig.lift(_uniffi_rust_call(_UniffiLib.uniffi_ldk_node_fn_func_default_config,))
1587015894

1587115895

15896+
def derive_node_secret_from_mnemonic(mnemonic: "str",passphrase: "typing.Optional[str]") -> "typing.List[int]":
15897+
_UniffiConverterString.check_lower(mnemonic)
15898+
15899+
_UniffiConverterOptionalString.check_lower(passphrase)
15900+
15901+
return _UniffiConverterSequenceUInt8.lift(_uniffi_rust_call_with_error(_UniffiConverterTypeNodeError,_UniffiLib.uniffi_ldk_node_fn_func_derive_node_secret_from_mnemonic,
15902+
_UniffiConverterString.lower(mnemonic),
15903+
_UniffiConverterOptionalString.lower(passphrase)))
15904+
15905+
1587215906
def generate_entropy_mnemonic(word_count: "typing.Optional[WordCount]") -> "Mnemonic":
1587315907
_UniffiConverterOptionalTypeWordCount.check_lower(word_count)
1587415908

@@ -15939,6 +15973,7 @@ def generate_entropy_mnemonic(word_count: "typing.Optional[WordCount]") -> "Mnem
1593915973
"TxInput",
1594015974
"TxOutput",
1594115975
"default_config",
15976+
"derive_node_secret_from_mnemonic",
1594215977
"generate_entropy_mnemonic",
1594315978
"Bolt11Invoice",
1594415979
"Bolt11Payment",

0 commit comments

Comments
 (0)