Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
98af9bf
Merge pull request #82 from lightsparkdev/release/lightspark-sdk-v0.6.1
jklein24 Sep 20, 2023
5ec67b1
Merge pull request #85 from lightsparkdev/release/core-v0.5.0
jklein24 Sep 22, 2023
5f709b7
Merge pull request #87 from lightsparkdev/release/crypto-v0.5.0
jklein24 Sep 22, 2023
523494e
Merge pull request #89 from lightsparkdev/release/lightspark-sdk-v0.7.0
jklein24 Sep 22, 2023
14c8308
Merge pull request #92 from lightsparkdev/release/lightspark-sdk-v0.8.0
jklein24 Sep 28, 2023
5023e24
Merge pull request #96 from lightsparkdev/release/lightspark-sdk-v0.9.0
jklein24 Oct 19, 2023
b7c515d
Merge pull request #98 from lightsparkdev/release/wallet-sdk-v0.3.0
jklein24 Oct 19, 2023
28a7662
Merge pull request #103 from lightsparkdev/release/lightspark-sdk-v0.…
jklein24 Oct 31, 2023
84cce77
Merge pull request #108 from lightsparkdev/release/lightspark-sdk-v0.…
jklein24 Nov 8, 2023
97bf8e2
Merge pull request #111 from lightsparkdev/release/lightspark-sdk-v0.…
jklein24 Nov 9, 2023
a64259f
Merge pull request #118 from lightsparkdev/release/lightspark-sdk-v0.…
jklein24 Nov 28, 2023
2f93ced
Merge pull request #129 from lightsparkdev/release/lightspark-sdk-v0.…
jklein24 Jan 2, 2024
f765db9
Merge pull request #144 from lightsparkdev/release/crypto-v0.6.0
shreyav Jan 29, 2024
558d65e
Merge pull request #146 from lightsparkdev/release/core-v0.6.0
shreyav Jan 29, 2024
d74177b
Merge pull request #148 from lightsparkdev/release/lightspark-sdk-v0.…
shreyav Jan 29, 2024
6c785a8
integrate uma v1
shreyav Feb 28, 2024
ad1f588
remove jar
shreyav Feb 28, 2024
4bf95cb
Update to the new LUD-21 spec for currency exchange
jklein24 Mar 3, 2024
ff851b0
Merge pull request #158 from lightsparkdev/feat/newLUD21
jklein24 Mar 4, 2024
0799385
Use certs for validation in demo vasp (#159)
shreyav Mar 6, 2024
6de599e
Add improved non-UMA LNURL compatibility
jklein24 Mar 7, 2024
5682a09
ktlint
jklein24 Mar 7, 2024
dbc4fcc
Merge pull request #160 from lightsparkdev/feat/lnurlcompat
jklein24 Mar 8, 2024
031ca21
Use certificate chain in demo vasp (#161)
shreyav Mar 12, 2024
e413642
Add backward compatibility to demo vasp (#162)
shreyav Mar 21, 2024
8173e1e
Minor compatibility fixes
jklein24 Mar 22, 2024
d885e68
Fix minor currency conversion issue for sats
jklein24 Mar 28, 2024
af4f712
Unifying the sending vasp demo api surface
jklein24 Mar 29, 2024
23b4e30
Update to the published version
jklein24 Apr 2, 2024
1075929
Remove the snapshot repo
jklein24 Apr 2, 2024
c67bc38
Also remove maven local
jklein24 Apr 2, 2024
7cafc13
ktlint
jklein24 Apr 3, 2024
92ed40f
Update demo vasp to use post-tx callback utils and verify signature (…
shreyav Apr 4, 2024
1db28a4
Merge pull request #157 from lightsparkdev/feat/uma1.0
jklein24 Apr 4, 2024
f57dde4
Update vasps to be compatible with non-uma lnurl (#168)
shreyav Apr 10, 2024
63a53e8
Add cert env vars to README
shreyav Apr 18, 2024
4b9a83c
Allow optional receiving currency code for lnurl (#170)
shreyav May 7, 2024
64e7e5e
Bump uma version (#171)
shreyav May 7, 2024
ba193a7
Merge branch 'main' into merge/main
jklein24 Jul 9, 2024
9904b3e
Load signing key
jklein24 Jul 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import com.vanniktech.maven.publish.MavenPublishBaseExtension
import com.vanniktech.maven.publish.SonatypeHost
import java.net.URL
import org.jetbrains.dokka.gradle.DokkaMultiModuleTask
import org.jetbrains.dokka.gradle.DokkaTaskPartial
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import java.net.URL

buildscript {
dependencies {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.lightspark.sdk.crypto

import com.lightspark.sdk.crypto.internal.toByteArray

@OptIn(ExperimentalUnsignedTypes::class)
object Secp256k1 {
fun signEcdsa(message: ByteArray, privateKey: ByteArray): ByteArray {
return com.lightspark.sdk.crypto.internal.signEcdsa(
Expand Down
4 changes: 2 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ ktlint = "11.3.1"
ktor = "2.3.7"
lightsparkCore = "0.6.0"
lightsparkCrypto = "0.6.0"
uma = "0.8.1"
uma = "1.1.1"
mavenPublish = "0.25.2"
mockitoCore = "5.5.0"
taskTree = "2.1.1"
Expand Down Expand Up @@ -115,7 +115,7 @@ mlkit-barcode-scanning = { module = "com.google.mlkit:barcode-scanning", version
lightspark-composeqrcode = { module = "com.lightspark:compose-qr-code", version.ref = "qrCode" }
lightspark-core = { module = "com.lightspark:lightspark-core", version.ref = "lightsparkCore" }
lightspark-crypto = { module = "com.lightspark:lightspark-crypto", version.ref = "lightsparkCrypto" }
uma = { module = "me.uma:uma-sdk", version.ref = "uma" }
uma = { module = "me.uma:uma-sdk-jvm", version.ref = "uma" }

retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
retrofit-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" }
Expand Down
1 change: 0 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url = uri("https://repo.repsy.io/mvn/chrynan/public") }
}
}

Expand Down
3 changes: 3 additions & 0 deletions umaserverdemo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ An example UMA VASP server implementation using kotlin.
## Running the server

Configuration parameters (API keys, etc.) and information on how to set them can be found in `UmaConfig.kt`.
For instructions on how to generate the necessary certificates and keys, see [UMA documentation](https://docs.uma.me/uma-standard/keys-authentication-encryption).
To run locally on your machine, from the kotlin-sdk directory, run:

```bash
Expand All @@ -28,8 +29,10 @@ docker run -p 8080:8080 \
-e LIGHTSPARK_API_TOKEN_CLIENT_SECRET=$LIGHTSPARK_API_TOKEN_CLIENT_SECRET \
-e LIGHTSPARK_UMA_NODE_ID=$LIGHTSPARK_UMA_NODE_ID \
-e LIGHTSPARK_UMA_RECEIVER_USER=$LIGHTSPARK_UMA_RECEIVER_USER \
-e LIGHTSPARK_UMA_ENCRYPTION_CERT_CHAIN=$LIGHTSPARK_UMA_ENCRYPTION_CERT_CHAIN \
-e LIGHTSPARK_UMA_ENCRYPTION_PUBKEY=$LIGHTSPARK_UMA_ENCRYPTION_PUBKEY \
-e LIGHTSPARK_UMA_ENCRYPTION_PRIVKEY=$LIGHTSPARK_UMA_ENCRYPTION_PRIVKEY \
-e LIGHTSPARK_UMA_SIGNING_CERT_CHAIN=$LIGHTSPARK_UMA_SIGNING_CERT_CHAIN \
-e LIGHTSPARK_UMA_SIGNING_PUBKEY=$LIGHTSPARK_UMA_SIGNING_PUBKEY \
-e LIGHTSPARK_UMA_SIGNING_PRIVKEY=$LIGHTSPARK_UMA_SIGNING_PRIVKEY \
uma-linux-amd64
Expand Down
6 changes: 6 additions & 0 deletions umaserverdemo/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,9 @@ dependencies {
testImplementation("io.ktor:ktor-server-tests-jvm")
testImplementation(libs.kotlin.test.junit)
}

configurations.all {
resolutionStrategy {
cacheChangingModulesFor(0, "seconds")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ package com.lightspark
import com.lightspark.sdk.ClientConfig
import com.lightspark.sdk.LightsparkCoroutinesClient
import com.lightspark.sdk.auth.AccountApiTokenAuthProvider
import me.uma.UmaInvoiceCreator
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.future.future
import me.uma.UmaInvoiceCreator

class LightsparkClientUmaInvoiceCreator(
private val client: LightsparkCoroutinesClient,
Expand Down
6 changes: 3 additions & 3 deletions umaserverdemo/src/main/kotlin/com/lightspark/PubKeyHandler.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ suspend fun handlePubKeyRequest(call: ApplicationCall, config: UmaConfig): Strin
val twoWeeksFromNowMs = System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 14

val response = PubKeyResponse(
signingPubKey = config.umaSigningPubKey,
encryptionPubKey = config.umaEncryptionPubKey,
expirationTimestamp = twoWeeksFromNowMs / 1000,
signingCertChain = config.umaSigningCertChain,
encryptionCertChain = config.umaEncryptionCertChain,
expirationTs = twoWeeksFromNowMs / 1000,
)

call.respond(response)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.lightspark

import me.uma.protocol.Currency
import me.uma.protocol.createCurrency

// In real life, this would come from some actual exchange rate API.
private const val MSATS_PER_USD_CENT = 22883.56

fun getSatsCurrency(senderVersion: String): Currency {
return createCurrency(
code = "SAT",
name = "Satoshis",
symbol = "SAT",
millisatoshiPerUnit = 1000.0,
minSendable = 1,
maxSendable = 100_000_000, // 1 BTC
decimals = 0,
senderUmaVersion = senderVersion,
)
}

fun getReceivingCurrencies(senderUmaVersion: String): List<Currency> {
val satsCurrency = getSatsCurrency(senderUmaVersion)
return listOf(
createCurrency(
code = "USD",
name = "US Dollar",
symbol = "$",
millisatoshiPerUnit = MSATS_PER_USD_CENT,
minSendable = 1,
maxSendable = 1_000_000,
decimals = 2,
senderUmaVersion = senderUmaVersion,
),
satsCurrency,
)
}
8 changes: 7 additions & 1 deletion umaserverdemo/src/main/kotlin/com/lightspark/UmaConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ data class UmaConfig(
val apiClientID: String,
val apiClientSecret: String,
val nodeID: String,
val username: String,
val oskNodePassword: String?,
val remoteSigningNodeKeyHex: String?,
val username: String,
val userID: String,
val umaEncryptionCertChain: String,
val umaEncryptionPubKeyHex: String,
val umaEncryptionPrivKeyHex: String,
val umaSigningCertChain: String,
val umaSigningPubKeyHex: String,
val umaSigningPrivKeyHex: String,
val clientBaseURL: String?,
Expand Down Expand Up @@ -46,10 +48,14 @@ data class UmaConfig(
?: error("LIGHTSPARK_UMA_RECEIVER_USER not set"),
// Static UUID so that callback URLs are always the same.
userID = "4b41ae03-01b8-4974-8d26-26a35d28851b",
umaEncryptionCertChain = System.getenv("LIGHTSPARK_UMA_ENCRYPTION_CERT_CHAIN")
?: error("LIGHTSPARK_UMA_ENCRYPTION_CERT_CHAIN not set"),
umaEncryptionPubKeyHex = System.getenv("LIGHTSPARK_UMA_ENCRYPTION_PUBKEY")
?: error("LIGHTSPARK_UMA_ENCRYPTION_PUBKEY not set"),
umaEncryptionPrivKeyHex = System.getenv("LIGHTSPARK_UMA_ENCRYPTION_PRIVKEY")
?: error("LIGHTSPARK_UMA_ENCRYPTION_PRIVKEY not set"),
umaSigningCertChain = System.getenv("LIGHTSPARK_UMA_SIGNING_CERT_CHAIN")
?: error("LIGHTSPARK_UMA_SIGNING_CERT_CHAIN not set"),
umaSigningPubKeyHex = System.getenv("LIGHTSPARK_UMA_SIGNING_PUBKEY")
?: error("LIGHTSPARK_UMA_SIGNING_PUBKEY not set"),
umaSigningPrivKeyHex = System.getenv("LIGHTSPARK_UMA_SIGNING_PRIVKEY")
Expand Down
Loading