diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 604ff6338..bd673fb1e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -1018,7 +1018,14 @@ object LocalCache { fun consume(event: Event, relay: Relay?) { checkNotInMainThread() - if (!event.hasValidSignature()) return + if (!event.hasValidSignature()) { + try { + event.checkSignature() + } catch (e: Exception) { + Log.w("Event failed retest ${event.kind}", e.message ?: "") + } + return + } try { when (event) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/Event.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/Event.kt index 68e206631..c3681b737 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/Event.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/Event.kt @@ -138,7 +138,7 @@ open class Event( .replace("\\u2028", "\u2028") .replace("\\u2029", "\u2029") - return sha256.digest(rawEventJson.toByteArray()).toHexKey() + return MessageDigest.getInstance("SHA-256").digest(rawEventJson.toByteArray()).toHexKey() } private class EventDeserializer : JsonDeserializer { @@ -212,7 +212,6 @@ open class Event( companion object { private val secp256k1 = Secp256k1.get() - val sha256: MessageDigest = MessageDigest.getInstance("SHA-256") val gson: Gson = GsonBuilder() .disableHtmlEscaping() .registerTypeAdapter(Event::class.java, EventSerializer()) @@ -283,7 +282,7 @@ open class Event( .replace("\\u2028", "\u2028") .replace("\\u2029", "\u2029") - return sha256.digest(rawEventJson.toByteArray()) + return MessageDigest.getInstance("SHA-256").digest(rawEventJson.toByteArray()) } fun create(privateKey: ByteArray, kind: Int, tags: List> = emptyList(), content: String = "", createdAt: Long = Date().time / 1000): Event { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapRequestEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapRequestEvent.kt index aa60dcb6f..bdb77b3d4 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapRequestEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapRequestEvent.kt @@ -5,6 +5,7 @@ import com.vitorpamplona.amethyst.model.* import nostr.postr.Bech32 import nostr.postr.Utils import java.nio.charset.Charset +import java.security.MessageDigest import java.security.SecureRandom import java.util.* import javax.crypto.BadPaddingException @@ -133,7 +134,7 @@ class LnZapRequestEvent( fun createEncryptionPrivateKey(privkey: String, id: String, createdAt: Long): ByteArray { var str = privkey + id + createdAt.toString() var strbyte = str.toByteArray(Charset.forName("utf-8")) - return sha256.digest(strbyte) + return MessageDigest.getInstance("SHA-256").digest(strbyte) } private fun encryptPrivateZapMessage(msg: String, privkey: ByteArray, pubkey: ByteArray): String { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/Robohash.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/Robohash.kt index eae25438e..298fa68b1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/Robohash.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/Robohash.kt @@ -22,8 +22,6 @@ private fun toHex(color: Color): String { return String.format("#%06X", rgb) } -private val sha256: MessageDigest = MessageDigest.getInstance("SHA-256") - private fun byteMod10(byte: Byte): Int { val ub = byte.toUByte().toInt() return ub % 10 @@ -34,7 +32,7 @@ private fun bytesToRGB(b1: Byte, b2: Byte, b3: Byte): Color { } private fun svgString(msg: String): String { - val hash = sha256.digest(msg.toByteArray()) + val hash = MessageDigest.getInstance("SHA-256").digest(msg.toByteArray()) val hashHex = hash.joinToString(separator = "") { b -> "%02x".format(b) } val bgColor = bytesToRGB(hash[0], hash[1], hash[2]) val fgColor = bytesToRGB(hash[3], hash[4], hash[5])