mirror of
https://github.com/aljazceru/breez-sdk-liquid.git
synced 2026-01-17 21:14:22 +01:00
Add sign_message and check_message (#443)
* Add sign and check message methods * Use lightning message_signing module to verify the message signature * Use hash engine
This commit is contained in:
@@ -135,6 +135,72 @@ fun asBuyBitcoinRequestList(arr: ReadableArray): List<BuyBitcoinRequest> {
|
||||
return list
|
||||
}
|
||||
|
||||
fun asCheckMessageRequest(checkMessageRequest: ReadableMap): CheckMessageRequest? {
|
||||
if (!validateMandatoryFields(
|
||||
checkMessageRequest,
|
||||
arrayOf(
|
||||
"message",
|
||||
"pubkey",
|
||||
"signature",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val message = checkMessageRequest.getString("message")!!
|
||||
val pubkey = checkMessageRequest.getString("pubkey")!!
|
||||
val signature = checkMessageRequest.getString("signature")!!
|
||||
return CheckMessageRequest(message, pubkey, signature)
|
||||
}
|
||||
|
||||
fun readableMapOf(checkMessageRequest: CheckMessageRequest): ReadableMap =
|
||||
readableMapOf(
|
||||
"message" to checkMessageRequest.message,
|
||||
"pubkey" to checkMessageRequest.pubkey,
|
||||
"signature" to checkMessageRequest.signature,
|
||||
)
|
||||
|
||||
fun asCheckMessageRequestList(arr: ReadableArray): List<CheckMessageRequest> {
|
||||
val list = ArrayList<CheckMessageRequest>()
|
||||
for (value in arr.toArrayList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asCheckMessageRequest(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asCheckMessageResponse(checkMessageResponse: ReadableMap): CheckMessageResponse? {
|
||||
if (!validateMandatoryFields(
|
||||
checkMessageResponse,
|
||||
arrayOf(
|
||||
"isValid",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val isValid = checkMessageResponse.getBoolean("isValid")
|
||||
return CheckMessageResponse(isValid)
|
||||
}
|
||||
|
||||
fun readableMapOf(checkMessageResponse: CheckMessageResponse): ReadableMap =
|
||||
readableMapOf(
|
||||
"isValid" to checkMessageResponse.isValid,
|
||||
)
|
||||
|
||||
fun asCheckMessageResponseList(arr: ReadableArray): List<CheckMessageResponse> {
|
||||
val list = ArrayList<CheckMessageResponse>()
|
||||
for (value in arr.toArrayList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asCheckMessageResponse(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asConfig(config: ReadableMap): Config? {
|
||||
if (!validateMandatoryFields(
|
||||
config,
|
||||
@@ -1979,6 +2045,66 @@ fun asSendPaymentResponseList(arr: ReadableArray): List<SendPaymentResponse> {
|
||||
return list
|
||||
}
|
||||
|
||||
fun asSignMessageRequest(signMessageRequest: ReadableMap): SignMessageRequest? {
|
||||
if (!validateMandatoryFields(
|
||||
signMessageRequest,
|
||||
arrayOf(
|
||||
"message",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val message = signMessageRequest.getString("message")!!
|
||||
return SignMessageRequest(message)
|
||||
}
|
||||
|
||||
fun readableMapOf(signMessageRequest: SignMessageRequest): ReadableMap =
|
||||
readableMapOf(
|
||||
"message" to signMessageRequest.message,
|
||||
)
|
||||
|
||||
fun asSignMessageRequestList(arr: ReadableArray): List<SignMessageRequest> {
|
||||
val list = ArrayList<SignMessageRequest>()
|
||||
for (value in arr.toArrayList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asSignMessageRequest(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asSignMessageResponse(signMessageResponse: ReadableMap): SignMessageResponse? {
|
||||
if (!validateMandatoryFields(
|
||||
signMessageResponse,
|
||||
arrayOf(
|
||||
"signature",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val signature = signMessageResponse.getString("signature")!!
|
||||
return SignMessageResponse(signature)
|
||||
}
|
||||
|
||||
fun readableMapOf(signMessageResponse: SignMessageResponse): ReadableMap =
|
||||
readableMapOf(
|
||||
"signature" to signMessageResponse.signature,
|
||||
)
|
||||
|
||||
fun asSignMessageResponseList(arr: ReadableArray): List<SignMessageResponse> {
|
||||
val list = ArrayList<SignMessageResponse>()
|
||||
for (value in arr.toArrayList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asSignMessageResponse(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asSymbol(symbol: ReadableMap): Symbol? {
|
||||
if (!validateMandatoryFields(
|
||||
symbol,
|
||||
|
||||
@@ -186,6 +186,40 @@ class BreezSDKLiquidModule(
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun signMessage(
|
||||
req: ReadableMap,
|
||||
promise: Promise,
|
||||
) {
|
||||
executor.execute {
|
||||
try {
|
||||
val signMessageRequest =
|
||||
asSignMessageRequest(req) ?: run { throw SdkException.Generic(errMissingMandatoryField("req", "SignMessageRequest")) }
|
||||
val res = getBindingLiquidSdk().signMessage(signMessageRequest)
|
||||
promise.resolve(readableMapOf(res))
|
||||
} catch (e: Exception) {
|
||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun checkMessage(
|
||||
req: ReadableMap,
|
||||
promise: Promise,
|
||||
) {
|
||||
executor.execute {
|
||||
try {
|
||||
val checkMessageRequest =
|
||||
asCheckMessageRequest(req) ?: run { throw SdkException.Generic(errMissingMandatoryField("req", "CheckMessageRequest")) }
|
||||
val res = getBindingLiquidSdk().checkMessage(checkMessageRequest)
|
||||
promise.resolve(readableMapOf(res))
|
||||
} catch (e: Exception) {
|
||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun prepareSendPayment(
|
||||
req: ReadableMap,
|
||||
|
||||
Reference in New Issue
Block a user