mirror of
https://github.com/greenart7c3/Amber.git
synced 2026-10-05 19:08:23 +00:00
Improve JSON parsing and error handling in decryption services
- Add try-catch blocks around JSON parsing for decrypted bunker requests in `EventNotificationConsumer`. - Implement similar error handling for JSON parsing in `IntentUtils` to prevent crashes when processing malformed data. - Log parsing errors and fallback to `ClearTextEncryptedDataKind` when JSON conversion fails.
This commit is contained in:
+44
-34
@@ -464,28 +464,33 @@ class EventNotificationConsumer(private val applicationContext: Context) {
|
||||
val result = acc.nip44Decrypt(bunkerRequest.ciphertext, bunkerRequest.pubKey)
|
||||
|
||||
if (result.startsWith("{")) {
|
||||
val event = AmberEvent.fromJson(result)
|
||||
if (event.kind == SealedRumorEvent.KIND) {
|
||||
val decryptedSealData = try {
|
||||
acc.decrypt(event.content, acc.hexKey)
|
||||
} catch (_: Exception) {
|
||||
event.content
|
||||
}
|
||||
if (decryptedSealData.startsWith("{")) {
|
||||
val sealEvent = AmberEvent.fromJson(decryptedSealData)
|
||||
EventEncryptedDataKind(event, EventEncryptedDataKind(sealEvent, null, decryptedSealData), result)
|
||||
} else if (decryptedSealData.startsWith("[")) {
|
||||
try {
|
||||
val tagArray = JacksonMapper.fromJsonToTagArray(decryptedSealData)
|
||||
EventEncryptedDataKind(event, TagArrayEncryptedDataKind(tagArray, decryptedSealData), decryptedSealData)
|
||||
try {
|
||||
val event = AmberEvent.fromJson(result)
|
||||
if (event.kind == SealedRumorEvent.KIND) {
|
||||
val decryptedSealData = try {
|
||||
acc.decrypt(event.content, acc.hexKey)
|
||||
} catch (_: Exception) {
|
||||
event.content
|
||||
}
|
||||
if (decryptedSealData.startsWith("{")) {
|
||||
val sealEvent = AmberEvent.fromJson(decryptedSealData)
|
||||
EventEncryptedDataKind(event, EventEncryptedDataKind(sealEvent, null, decryptedSealData), result)
|
||||
} else if (decryptedSealData.startsWith("[")) {
|
||||
try {
|
||||
val tagArray = JacksonMapper.fromJsonToTagArray(decryptedSealData)
|
||||
EventEncryptedDataKind(event, TagArrayEncryptedDataKind(tagArray, decryptedSealData), decryptedSealData)
|
||||
} catch (_: Exception) {
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
EventEncryptedDataKind(event, null, result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, null, result)
|
||||
} catch (e: Exception) {
|
||||
Log.e("IntentUtils", "Error parsing JSON: ${e.message}")
|
||||
ClearTextEncryptedDataKind(bunkerRequest.ciphertext, result)
|
||||
}
|
||||
} else if (result.startsWith("[")) {
|
||||
try {
|
||||
@@ -542,28 +547,33 @@ class EventNotificationConsumer(private val applicationContext: Context) {
|
||||
val result = acc.nip04Decrypt(bunkerRequest.ciphertext, bunkerRequest.pubKey)
|
||||
|
||||
if (result.startsWith("{")) {
|
||||
val event = AmberEvent.fromJson(result)
|
||||
if (event.kind == SealedRumorEvent.KIND) {
|
||||
val decryptedSealData = try {
|
||||
acc.decrypt(event.content, acc.hexKey)
|
||||
} catch (_: Exception) {
|
||||
event.content
|
||||
}
|
||||
if (decryptedSealData.startsWith("{")) {
|
||||
val sealEvent = AmberEvent.fromJson(decryptedSealData)
|
||||
EventEncryptedDataKind(event, EventEncryptedDataKind(sealEvent, null, decryptedSealData), result)
|
||||
} else if (decryptedSealData.startsWith("[")) {
|
||||
try {
|
||||
val tagArray = JacksonMapper.fromJsonToTagArray(decryptedSealData)
|
||||
EventEncryptedDataKind(event, TagArrayEncryptedDataKind(tagArray, decryptedSealData), decryptedSealData)
|
||||
try {
|
||||
val event = AmberEvent.fromJson(result)
|
||||
if (event.kind == SealedRumorEvent.KIND) {
|
||||
val decryptedSealData = try {
|
||||
acc.decrypt(event.content, acc.hexKey)
|
||||
} catch (_: Exception) {
|
||||
event.content
|
||||
}
|
||||
if (decryptedSealData.startsWith("{")) {
|
||||
val sealEvent = AmberEvent.fromJson(decryptedSealData)
|
||||
EventEncryptedDataKind(event, EventEncryptedDataKind(sealEvent, null, decryptedSealData), result)
|
||||
} else if (decryptedSealData.startsWith("[")) {
|
||||
try {
|
||||
val tagArray = JacksonMapper.fromJsonToTagArray(decryptedSealData)
|
||||
EventEncryptedDataKind(event, TagArrayEncryptedDataKind(tagArray, decryptedSealData), decryptedSealData)
|
||||
} catch (_: Exception) {
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
EventEncryptedDataKind(event, null, result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, null, result)
|
||||
} catch (e: Exception) {
|
||||
Log.e("IntentUtils", "Error parsing JSON: ${e.message}")
|
||||
ClearTextEncryptedDataKind(bunkerRequest.ciphertext, result)
|
||||
}
|
||||
} else if (result.startsWith("[")) {
|
||||
try {
|
||||
|
||||
@@ -511,29 +511,34 @@ object IntentUtils {
|
||||
}
|
||||
} else {
|
||||
if (result.startsWith("{")) {
|
||||
val event = AmberEvent.fromJson(result)
|
||||
if (event.kind == SealedRumorEvent.KIND) {
|
||||
val decryptedSealData = try {
|
||||
account.decrypt(event.content, account.hexKey)
|
||||
} catch (_: Exception) {
|
||||
event.content
|
||||
}
|
||||
if (decryptedSealData.startsWith("{")) {
|
||||
val sealEvent = AmberEvent.fromJson(decryptedSealData)
|
||||
EventEncryptedDataKind(event, EventEncryptedDataKind(sealEvent, null, decryptedSealData), result)
|
||||
} else if (decryptedSealData.startsWith("[")) {
|
||||
try {
|
||||
val tagArray = JacksonMapper.fromJsonToTagArray(decryptedSealData)
|
||||
EventEncryptedDataKind(event, TagArrayEncryptedDataKind(tagArray, decryptedSealData), decryptedSealData)
|
||||
} catch (e: Exception) {
|
||||
Log.e("IntentUtils", "Error parsing TagArray: ${e.message}")
|
||||
try {
|
||||
val event = AmberEvent.fromJson(result)
|
||||
if (event.kind == SealedRumorEvent.KIND) {
|
||||
val decryptedSealData = try {
|
||||
account.decrypt(event.content, account.hexKey)
|
||||
} catch (_: Exception) {
|
||||
event.content
|
||||
}
|
||||
if (decryptedSealData.startsWith("{")) {
|
||||
val sealEvent = AmberEvent.fromJson(decryptedSealData)
|
||||
EventEncryptedDataKind(event, EventEncryptedDataKind(sealEvent, null, decryptedSealData), result)
|
||||
} else if (decryptedSealData.startsWith("[")) {
|
||||
try {
|
||||
val tagArray = JacksonMapper.fromJsonToTagArray(decryptedSealData)
|
||||
EventEncryptedDataKind(event, TagArrayEncryptedDataKind(tagArray, decryptedSealData), decryptedSealData)
|
||||
} catch (e: Exception) {
|
||||
Log.e("IntentUtils", "Error parsing TagArray: ${e.message}")
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, ClearTextEncryptedDataKind(event.content, decryptedSealData), result)
|
||||
EventEncryptedDataKind(event, null, result)
|
||||
}
|
||||
} else {
|
||||
EventEncryptedDataKind(event, null, result)
|
||||
} catch (e: Exception) {
|
||||
Log.e("IntentUtils", "Error parsing JSON: ${e.message}")
|
||||
ClearTextEncryptedDataKind(data, result)
|
||||
}
|
||||
} else if (result.startsWith("[")) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user