Activating Event's check signature
This commit is contained in:
@@ -17,6 +17,7 @@ import com.vitorpamplona.amethyst.service.model.RepostEvent
|
|||||||
import com.vitorpamplona.amethyst.service.relays.Client
|
import com.vitorpamplona.amethyst.service.relays.Client
|
||||||
import com.vitorpamplona.amethyst.service.relays.Relay
|
import com.vitorpamplona.amethyst.service.relays.Relay
|
||||||
import com.vitorpamplona.amethyst.service.relays.Subscription
|
import com.vitorpamplona.amethyst.service.relays.Subscription
|
||||||
|
import com.vitorpamplona.amethyst.service.relays.hasValidSignature
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -48,6 +49,8 @@ abstract class NostrDataSource<T>(val debugName: String) {
|
|||||||
private val clientListener = object : Client.Listener() {
|
private val clientListener = object : Client.Listener() {
|
||||||
override fun onEvent(event: Event, subscriptionId: String, relay: Relay) {
|
override fun onEvent(event: Event, subscriptionId: String, relay: Relay) {
|
||||||
if (subscriptionId in subscriptions.keys) {
|
if (subscriptionId in subscriptions.keys) {
|
||||||
|
if (!event.hasValidSignature()) return
|
||||||
|
|
||||||
val key = "${debugName} ${subscriptionId} ${event.kind}"
|
val key = "${debugName} ${subscriptionId} ${event.kind}"
|
||||||
val keyValue = eventCounter.get(key)
|
val keyValue = eventCounter.get(key)
|
||||||
if (keyValue != null) {
|
if (keyValue != null) {
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.vitorpamplona.amethyst.service.relays
|
||||||
|
|
||||||
|
import fr.acinq.secp256k1.Secp256k1
|
||||||
|
import nostr.postr.events.Event
|
||||||
|
import nostr.postr.events.generateId
|
||||||
|
|
||||||
|
fun Event.hasValidSignature(): Boolean {
|
||||||
|
if (!id.contentEquals(generateId())) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (!Secp256k1.get().verifySchnorr(sig, id, pubKey)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user