From a1517a67f5e9fe36c7d4336e11416ad946ffa82a Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 24 Jul 2023 11:13:33 -0400 Subject: [PATCH] Renames Persona to KeyPair and Utils to CryptoUtils --- .../amethyst/LocalPreferences.kt | 8 +- .../vitorpamplona/amethyst/model/Account.kt | 204 +++++++++--------- .../com/vitorpamplona/amethyst/model/Hex.kt | 8 +- .../service/{Utils.kt => CryptoUtils.kt} | 2 +- .../service/{Persona.kt => KeyPair.kt} | 10 +- .../amethyst/service/model/AudioTrackEvent.kt | 6 +- .../service/model/BookmarkListEvent.kt | 6 +- .../service/model/ChannelCreateEvent.kt | 6 +- .../service/model/ChannelHideMessageEvent.kt | 6 +- .../service/model/ChannelMessageEvent.kt | 6 +- .../service/model/ChannelMetadataEvent.kt | 6 +- .../service/model/ChannelMuteUserEvent.kt | 6 +- .../service/model/ClassifiedsEvent.kt | 6 +- .../service/model/CommunityDefinitionEvent.kt | 6 +- .../model/CommunityPostApprovalEvent.kt | 6 +- .../service/model/ContactListEvent.kt | 6 +- .../amethyst/service/model/DeletionEvent.kt | 6 +- .../amethyst/service/model/EmojiPackEvent.kt | 6 +- .../service/model/EmojiPackSelectionEvent.kt | 6 +- .../amethyst/service/model/Event.kt | 6 +- .../amethyst/service/model/FileHeaderEvent.kt | 6 +- .../service/model/FileStorageEvent.kt | 6 +- .../service/model/FileStorageHeaderEvent.kt | 6 +- .../service/model/GeneralListEvent.kt | 12 +- .../service/model/GenericRepostEvent.kt | 6 +- .../service/model/HTTPAuthorizationEvent.kt | 6 +- .../amethyst/service/model/HighlightEvent.kt | 6 +- .../model/LiveActivitiesChatMessageEvent.kt | 6 +- .../service/model/LiveActivitiesEvent.kt | 6 +- .../service/model/LnZapPaymentRequestEvent.kt | 12 +- .../model/LnZapPaymentResponseEvent.kt | 6 +- .../service/model/LnZapRequestEvent.kt | 27 ++- .../service/model/LongTextNoteEvent.kt | 6 +- .../amethyst/service/model/MetadataEvent.kt | 6 +- .../amethyst/service/model/MuteListEvent.kt | 12 +- .../amethyst/service/model/NNSEvent.kt | 6 +- .../amethyst/service/model/PeopleListEvent.kt | 6 +- .../amethyst/service/model/PinListEvent.kt | 6 +- .../amethyst/service/model/PollNoteEvent.kt | 6 +- .../amethyst/service/model/PrivateDmEvent.kt | 12 +- .../amethyst/service/model/ReactionEvent.kt | 10 +- .../service/model/RecommendRelayEvent.kt | 6 +- .../amethyst/service/model/RelayAuthEvent.kt | 6 +- .../amethyst/service/model/RelaySetEvent.kt | 6 +- .../amethyst/service/model/ReportEvent.kt | 10 +- .../amethyst/service/model/RepostEvent.kt | 6 +- .../amethyst/service/model/TextNoteEvent.kt | 6 +- .../ui/dal/BookmarkPrivateFeedFilter.kt | 2 +- .../ui/dal/HiddenAccountsFeedFilter.kt | 2 +- .../ui/screen/AccountStateViewModel.kt | 14 +- .../ui/screen/loggedIn/AccountBackupDialog.kt | 2 +- 51 files changed, 278 insertions(+), 279 deletions(-) rename app/src/main/java/com/vitorpamplona/amethyst/service/{Utils.kt => CryptoUtils.kt} (99%) rename app/src/main/java/com/vitorpamplona/amethyst/service/{Persona.kt => KeyPair.kt} (74%) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt b/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt index defd27809..e86695edf 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt @@ -16,7 +16,7 @@ import com.vitorpamplona.amethyst.model.hexToByteArray import com.vitorpamplona.amethyst.model.parseConnectivityType import com.vitorpamplona.amethyst.model.toHexKey import com.vitorpamplona.amethyst.service.HttpClient -import com.vitorpamplona.amethyst.service.Persona +import com.vitorpamplona.amethyst.service.KeyPair import com.vitorpamplona.amethyst.service.model.ContactListEvent import com.vitorpamplona.amethyst.service.model.Event import com.vitorpamplona.amethyst.service.model.Event.Companion.getRefinedEvent @@ -211,8 +211,8 @@ object LocalPreferences { fun saveToEncryptedStorage(account: Account) { val prefs = encryptedPreferences(account.userProfile().pubkeyNpub()) prefs.edit().apply { - account.loggedIn.privKey?.let { putString(PrefKeys.NOSTR_PRIVKEY, it.toHexKey()) } - account.loggedIn.pubKey.let { putString(PrefKeys.NOSTR_PUBKEY, it.toHexKey()) } + account.keyPair.privKey?.let { putString(PrefKeys.NOSTR_PRIVKEY, it.toHexKey()) } + account.keyPair.pubKey.let { putString(PrefKeys.NOSTR_PUBKEY, it.toHexKey()) } putStringSet(PrefKeys.FOLLOWING_CHANNELS, account.followingChannels) putStringSet(PrefKeys.FOLLOWING_COMMUNITIES, account.followingCommunities) putStringSet(PrefKeys.HIDDEN_USERS, account.hiddenUsers) @@ -412,7 +412,7 @@ object LocalPreferences { } val a = Account( - loggedIn = Persona(privKey = privKey?.hexToByteArray(), pubKey = pubKey.hexToByteArray()), + keyPair = KeyPair(privKey = privKey?.hexToByteArray(), pubKey = pubKey.hexToByteArray()), followingChannels = followingChannels, followingCommunities = followingCommunities, hiddenUsers = hiddenUsers, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index 960e93d4c..d3063e96a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -8,10 +8,10 @@ import androidx.core.os.ConfigurationCompat import androidx.lifecycle.LiveData import androidx.lifecycle.distinctUntilChanged import com.vitorpamplona.amethyst.OptOutFromFilters +import com.vitorpamplona.amethyst.service.CryptoUtils import com.vitorpamplona.amethyst.service.FileHeader +import com.vitorpamplona.amethyst.service.KeyPair import com.vitorpamplona.amethyst.service.NostrLnZapPaymentResponseDataSource -import com.vitorpamplona.amethyst.service.Persona -import com.vitorpamplona.amethyst.service.Utils import com.vitorpamplona.amethyst.service.model.* import com.vitorpamplona.amethyst.service.relays.Client import com.vitorpamplona.amethyst.service.relays.Constants @@ -53,7 +53,7 @@ val KIND3_FOLLOWS = " All Follows " @OptIn(DelicateCoroutinesApi::class) @Stable class Account( - val loggedIn: Persona, + val keyPair: KeyPair, var followingChannels: Set = DefaultChannels, // deprecated var followingCommunities: Set = setOf(), // deprecated @@ -99,7 +99,7 @@ class Account( ) val liveHiddenUsers: LiveData = live.combineWith(getBlockListNote().live().metadata) { localLive, liveMuteListEvent -> - val liveBlockedUsers = (liveMuteListEvent?.note?.event as? PeopleListEvent)?.publicAndPrivateUsers(loggedIn.privKey) + val liveBlockedUsers = (liveMuteListEvent?.note?.event as? PeopleListEvent)?.publicAndPrivateUsers(keyPair.privKey) LiveHiddenUsers( hiddenUsers = liveBlockedUsers ?: persistentSetOf(), spammers = localLive?.account?.transientHiddenUsers ?: persistentSetOf(), @@ -146,14 +146,14 @@ class Account( fun userProfile(): User { return userProfileCache ?: run { - val myUser: User = LocalCache.getOrCreateUser(loggedIn.pubKey.toHexKey()) + val myUser: User = LocalCache.getOrCreateUser(keyPair.pubKey.toHexKey()) userProfileCache = myUser myUser } } fun isWriteable(): Boolean { - return loggedIn.privKey != null + return keyPair.privKey != null } fun sendNewRelayList(relays: Map) { @@ -165,7 +165,7 @@ class Account( val event = ContactListEvent.updateRelayList( earlierVersion = contactList, relayUse = relays, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) Client.send(event) @@ -177,7 +177,7 @@ class Account( followCommunities = listOf(), followEvents = DefaultChannels.toList(), relayUse = relays, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) // Keep this local to avoid erasing a good contact list. @@ -189,8 +189,8 @@ class Account( fun sendNewUserMetadata(toString: String, identities: List) { if (!isWriteable()) return - loggedIn.privKey?.let { - val event = MetadataEvent.create(toString, identities, loggedIn.privKey!!) + keyPair.privKey?.let { + val event = MetadataEvent.create(toString, identities, keyPair.privKey!!) Client.send(event) LocalCache.consume(event) } @@ -224,7 +224,7 @@ class Account( val emojiUrl = EmojiUrl.decode(reaction) if (emojiUrl != null) { note.event?.let { - val event = ReactionEvent.create(emojiUrl, it, loggedIn.privKey!!) + val event = ReactionEvent.create(emojiUrl, it, keyPair.privKey!!) Client.send(event) LocalCache.consume(event) } @@ -234,7 +234,7 @@ class Account( } note.event?.let { - val event = ReactionEvent.create(reaction, it, loggedIn.privKey!!) + val event = ReactionEvent.create(reaction, it, keyPair.privKey!!) Client.send(event) LocalCache.consume(event) } @@ -248,7 +248,7 @@ class Account( event, userProfile().latestContactList?.relays()?.keys?.ifEmpty { null } ?: localRelays.map { it.url }.toSet(), - loggedIn.privKey!!, + keyPair.privKey!!, pollOption, message, zapType @@ -262,18 +262,18 @@ class Account( } fun isNIP47Author(pubkeyHex: String?): Boolean { - val privKey = zapPaymentRequest?.secret?.hexToByteArray() ?: loggedIn.privKey + val privKey = zapPaymentRequest?.secret?.hexToByteArray() ?: keyPair.privKey if (privKey == null) return false - val pubKey = Utils.pubkeyCreate(privKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privKey).toHexKey() return (pubKey == pubkeyHex) } fun decryptZapPaymentResponseEvent(zapResponseEvent: LnZapPaymentResponseEvent): Response? { val myNip47 = zapPaymentRequest ?: return null - val privKey = myNip47.secret?.hexToByteArray() ?: loggedIn.privKey + val privKey = myNip47.secret?.hexToByteArray() ?: keyPair.privKey val pubKey = myNip47.pubKeyHex.hexToByteArray() if (privKey == null) return null @@ -286,7 +286,7 @@ class Account( } fun calculateZappedAmount(zappedNote: Note?): BigDecimal { - val privKey = zapPaymentRequest?.secret?.hexToByteArray() ?: loggedIn.privKey + val privKey = zapPaymentRequest?.secret?.hexToByteArray() ?: keyPair.privKey val pubKey = zapPaymentRequest?.pubKeyHex?.hexToByteArray() return zappedNote?.zappedAmount(privKey, pubKey) ?: BigDecimal.ZERO } @@ -295,13 +295,13 @@ class Account( if (!isWriteable()) return zapPaymentRequest?.let { nip47 -> - val event = LnZapPaymentRequestEvent.create(bolt11, nip47.pubKeyHex, nip47.secret?.hexToByteArray() ?: loggedIn.privKey!!) + val event = LnZapPaymentRequestEvent.create(bolt11, nip47.pubKeyHex, nip47.secret?.hexToByteArray() ?: keyPair.privKey!!) val wcListener = NostrLnZapPaymentResponseDataSource( fromServiceHex = nip47.pubKeyHex, toUserHex = event.pubKey, replyingToHex = event.id, - authSigningKey = nip47.secret?.hexToByteArray() ?: loggedIn.privKey!! + authSigningKey = nip47.secret?.hexToByteArray() ?: keyPair.privKey!! ) wcListener.start() @@ -329,7 +329,7 @@ class Account( return LnZapRequestEvent.create( userPubKeyHex, userProfile().latestContactList?.relays()?.keys?.ifEmpty { null } ?: localRelays.map { it.url }.toSet(), - loggedIn.privKey!!, + keyPair.privKey!!, message, zapType ) @@ -344,13 +344,13 @@ class Account( } note.event?.let { - val event = ReactionEvent.createWarning(it, loggedIn.privKey!!) + val event = ReactionEvent.createWarning(it, keyPair.privKey!!) Client.send(event) LocalCache.consume(event) } note.event?.let { - val event = ReportEvent.create(it, type, loggedIn.privKey!!, content = content) + val event = ReportEvent.create(it, type, keyPair.privKey!!, content = content) Client.send(event) LocalCache.consume(event, null) } @@ -364,7 +364,7 @@ class Account( return } - val event = ReportEvent.create(user.pubkeyHex, type, loggedIn.privKey!!) + val event = ReportEvent.create(user.pubkeyHex, type, keyPair.privKey!!) Client.send(event) LocalCache.consume(event, null) } @@ -379,7 +379,7 @@ class Account( val myNotes = notes.filter { it.author == userProfile() }.map { it.idHex } if (myNotes.isNotEmpty()) { - val event = DeletionEvent.create(myNotes, loggedIn.privKey!!) + val event = DeletionEvent.create(myNotes, keyPair.privKey!!) Client.send(event) LocalCache.consume(event) } @@ -388,7 +388,7 @@ class Account( fun createHTTPAuthorization(url: String, method: String, body: String? = null): HTTPAuthorizationEvent? { if (!isWriteable()) return null - return HTTPAuthorizationEvent.create(url, method, body, loggedIn.privKey!!) + return HTTPAuthorizationEvent.create(url, method, body, keyPair.privKey!!) } fun boost(note: Note) { @@ -401,11 +401,11 @@ class Account( note.event?.let { if (it.kind() == 1) { - val event = RepostEvent.create(it, loggedIn.privKey!!) + val event = RepostEvent.create(it, keyPair.privKey!!) Client.send(event) LocalCache.consume(event) } else { - val event = GenericRepostEvent.create(it, loggedIn.privKey!!) + val event = GenericRepostEvent.create(it, keyPair.privKey!!) Client.send(event) LocalCache.consume(event) } @@ -426,7 +426,7 @@ class Account( if (followingCommunities.isNotEmpty()) { followingCommunities.forEach { ATag.parse(it, null)?.let { - returningContactList = ContactListEvent.followAddressableEvent(returningContactList, it, loggedIn.privKey!!) + returningContactList = ContactListEvent.followAddressableEvent(returningContactList, it, keyPair.privKey!!) } } followingCommunities = emptySet() @@ -434,7 +434,7 @@ class Account( if (followingChannels.isNotEmpty()) { followingChannels.forEach { - returningContactList = ContactListEvent.followEvent(returningContactList, it, loggedIn.privKey!!) + returningContactList = ContactListEvent.followEvent(returningContactList, it, keyPair.privKey!!) } followingChannels = emptySet() } @@ -448,7 +448,7 @@ class Account( val contactList = migrateCommunitiesAndChannelsIfNeeded(userProfile().latestContactList) val event = if (contactList != null) { - ContactListEvent.followUser(contactList, user.pubkeyHex, loggedIn.privKey!!) + ContactListEvent.followUser(contactList, user.pubkeyHex, keyPair.privKey!!) } else { ContactListEvent.createFromScratch( followUsers = listOf(Contact(user.pubkeyHex, null)), @@ -456,7 +456,7 @@ class Account( followCommunities = emptyList(), followEvents = DefaultChannels.toList(), relayUse = Constants.defaultRelays.associate { it.url to ContactListEvent.ReadWrite(it.read, it.write) }, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) } @@ -470,7 +470,7 @@ class Account( val contactList = migrateCommunitiesAndChannelsIfNeeded(userProfile().latestContactList) val event = if (contactList != null) { - ContactListEvent.followEvent(contactList, channel.idHex, loggedIn.privKey!!) + ContactListEvent.followEvent(contactList, channel.idHex, keyPair.privKey!!) } else { ContactListEvent.createFromScratch( followUsers = emptyList(), @@ -478,7 +478,7 @@ class Account( followCommunities = emptyList(), followEvents = DefaultChannels.toList().plus(channel.idHex), relayUse = Constants.defaultRelays.associate { it.url to ContactListEvent.ReadWrite(it.read, it.write) }, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) } @@ -492,7 +492,7 @@ class Account( val contactList = migrateCommunitiesAndChannelsIfNeeded(userProfile().latestContactList) val event = if (contactList != null) { - ContactListEvent.followAddressableEvent(contactList, community.address, loggedIn.privKey!!) + ContactListEvent.followAddressableEvent(contactList, community.address, keyPair.privKey!!) } else { val relays = Constants.defaultRelays.associate { it.url to ContactListEvent.ReadWrite(it.read, it.write) } ContactListEvent.createFromScratch( @@ -501,7 +501,7 @@ class Account( followCommunities = listOf(community.address), followEvents = DefaultChannels.toList(), relayUse = relays, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) } @@ -518,7 +518,7 @@ class Account( ContactListEvent.followHashtag( contactList, tag, - loggedIn.privKey!! + keyPair.privKey!! ) } else { ContactListEvent.createFromScratch( @@ -527,7 +527,7 @@ class Account( followCommunities = emptyList(), followEvents = DefaultChannels.toList(), relayUse = Constants.defaultRelays.associate { it.url to ContactListEvent.ReadWrite(it.read, it.write) }, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) } @@ -544,7 +544,7 @@ class Account( val event = ContactListEvent.unfollowUser( contactList, user.pubkeyHex, - loggedIn.privKey!! + keyPair.privKey!! ) Client.send(event) @@ -561,7 +561,7 @@ class Account( val event = ContactListEvent.unfollowHashtag( contactList, tag, - loggedIn.privKey!! + keyPair.privKey!! ) Client.send(event) @@ -578,7 +578,7 @@ class Account( val event = ContactListEvent.unfollowEvent( contactList, channel.idHex, - loggedIn.privKey!! + keyPair.privKey!! ) Client.send(event) @@ -595,7 +595,7 @@ class Account( val event = ContactListEvent.unfollowAddressableEvent( contactList, community.address, - loggedIn.privKey!! + keyPair.privKey!! ) Client.send(event) @@ -609,7 +609,7 @@ class Account( val data = FileStorageEvent.create( mimeType = headerInfo.mimeType ?: "", data = byteArray, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) val signedEvent = FileStorageHeaderEvent.create( @@ -621,7 +621,7 @@ class Account( blurhash = headerInfo.blurHash, description = headerInfo.description, sensitiveContent = headerInfo.sensitiveContent, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) return Pair(data, signedEvent) @@ -651,7 +651,7 @@ class Account( blurhash = headerInfo.blurHash, description = headerInfo.description, sensitiveContent = headerInfo.sensitiveContent, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) Client.send(signedEvent, relayList = relayList) @@ -691,7 +691,7 @@ class Account( replyingTo = replyingTo, root = root, directMentions = directMentions, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) Client.send(signedEvent, relayList = relayList) @@ -723,7 +723,7 @@ class Account( replyTos = repliesToHex, mentions = mentionsHex, addresses = addresses, - privateKey = loggedIn.privKey!!, + privateKey = keyPair.privKey!!, pollOptions = pollOptions, valueMaximum = valueMaximum, valueMinimum = valueMinimum, @@ -753,7 +753,7 @@ class Account( zapReceiver = zapReceiver, markAsSensitive = wantsToMarkAsSensitive, zapRaiserAmount = zapRaiserAmount, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) Client.send(signedEvent) LocalCache.consume(signedEvent, null) @@ -774,7 +774,7 @@ class Account( zapReceiver = zapReceiver, markAsSensitive = wantsToMarkAsSensitive, zapRaiserAmount = zapRaiserAmount, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) Client.send(signedEvent) LocalCache.consume(signedEvent, null) @@ -795,7 +795,7 @@ class Account( zapReceiver = zapReceiver, markAsSensitive = wantsToMarkAsSensitive, zapRaiserAmount = zapRaiserAmount, - privateKey = loggedIn.privKey!!, + privateKey = keyPair.privKey!!, advertiseNip18 = false ) Client.send(signedEvent) @@ -813,7 +813,7 @@ class Account( val event = ChannelCreateEvent.create( channelInfo = metadata, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) Client.send(event) @@ -834,7 +834,7 @@ class Account( val event = EmojiPackSelectionEvent.create( noteEvent.taggedAddresses().filter { it != emojiListEvent.address() }, - loggedIn.privKey!! + keyPair.privKey!! ) Client.send(event) @@ -849,7 +849,7 @@ class Account( val event = if (usersEmojiList.event == null) { EmojiPackSelectionEvent.create( listOf(emojiListEvent.address()), - loggedIn.privKey!! + keyPair.privKey!! ) } else { val noteEvent = usersEmojiList.event @@ -861,7 +861,7 @@ class Account( EmojiPackSelectionEvent.create( noteEvent.taggedAddresses().plus(emojiListEvent.address()), - loggedIn.privKey!! + keyPair.privKey!! ) } @@ -881,11 +881,11 @@ class Account( bookmarks?.taggedUsers() ?: emptyList(), bookmarks?.taggedAddresses() ?: emptyList(), - bookmarks?.privateTaggedEvents(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedUsers(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedAddresses(privKey = loggedIn.privKey!!)?.plus(note.address) ?: listOf(note.address), + bookmarks?.privateTaggedEvents(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedUsers(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedAddresses(privKey = keyPair.privKey!!)?.plus(note.address) ?: listOf(note.address), - loggedIn.privKey!! + keyPair.privKey!! ) } else { BookmarkListEvent.create( @@ -894,11 +894,11 @@ class Account( bookmarks?.taggedUsers() ?: emptyList(), bookmarks?.taggedAddresses() ?: emptyList(), - bookmarks?.privateTaggedEvents(privKey = loggedIn.privKey!!)?.plus(note.idHex) ?: listOf(note.idHex), - bookmarks?.privateTaggedUsers(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedAddresses(privKey = loggedIn.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedEvents(privKey = keyPair.privKey!!)?.plus(note.idHex) ?: listOf(note.idHex), + bookmarks?.privateTaggedUsers(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedAddresses(privKey = keyPair.privKey!!) ?: emptyList(), - loggedIn.privKey!! + keyPair.privKey!! ) } @@ -918,11 +918,11 @@ class Account( bookmarks?.taggedUsers() ?: emptyList(), bookmarks?.taggedAddresses()?.plus(note.address) ?: listOf(note.address), - bookmarks?.privateTaggedEvents(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedUsers(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedAddresses(privKey = loggedIn.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedEvents(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedUsers(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedAddresses(privKey = keyPair.privKey!!) ?: emptyList(), - loggedIn.privKey!! + keyPair.privKey!! ) } else { BookmarkListEvent.create( @@ -931,11 +931,11 @@ class Account( bookmarks?.taggedUsers() ?: emptyList(), bookmarks?.taggedAddresses() ?: emptyList(), - bookmarks?.privateTaggedEvents(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedUsers(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedAddresses(privKey = loggedIn.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedEvents(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedUsers(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedAddresses(privKey = keyPair.privKey!!) ?: emptyList(), - loggedIn.privKey!! + keyPair.privKey!! ) } @@ -955,11 +955,11 @@ class Account( bookmarks?.taggedUsers() ?: emptyList(), bookmarks?.taggedAddresses() ?: emptyList(), - bookmarks?.privateTaggedEvents(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedUsers(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedAddresses(privKey = loggedIn.privKey!!)?.minus(note.address) ?: listOf(), + bookmarks?.privateTaggedEvents(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedUsers(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedAddresses(privKey = keyPair.privKey!!)?.minus(note.address) ?: listOf(), - loggedIn.privKey!! + keyPair.privKey!! ) } else { BookmarkListEvent.create( @@ -968,11 +968,11 @@ class Account( bookmarks?.taggedUsers() ?: emptyList(), bookmarks?.taggedAddresses() ?: emptyList(), - bookmarks?.privateTaggedEvents(privKey = loggedIn.privKey!!)?.minus(note.idHex) ?: listOf(), - bookmarks?.privateTaggedUsers(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedAddresses(privKey = loggedIn.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedEvents(privKey = keyPair.privKey!!)?.minus(note.idHex) ?: listOf(), + bookmarks?.privateTaggedUsers(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedAddresses(privKey = keyPair.privKey!!) ?: emptyList(), - loggedIn.privKey!! + keyPair.privKey!! ) } @@ -983,7 +983,7 @@ class Account( fun createAuthEvent(relay: Relay, challenge: String): RelayAuthEvent? { if (!isWriteable()) return null - return RelayAuthEvent.create(relay.url, challenge, loggedIn.privKey!!) + return RelayAuthEvent.create(relay.url, challenge, keyPair.privKey!!) } fun removePublicBookmark(note: Note) { @@ -998,11 +998,11 @@ class Account( bookmarks?.taggedUsers() ?: emptyList(), bookmarks?.taggedAddresses()?.minus(note.address), - bookmarks?.privateTaggedEvents(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedUsers(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedAddresses(privKey = loggedIn.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedEvents(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedUsers(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedAddresses(privKey = keyPair.privKey!!) ?: emptyList(), - loggedIn.privKey!! + keyPair.privKey!! ) } else { BookmarkListEvent.create( @@ -1011,11 +1011,11 @@ class Account( bookmarks?.taggedUsers() ?: emptyList(), bookmarks?.taggedAddresses() ?: emptyList(), - bookmarks?.privateTaggedEvents(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedUsers(privKey = loggedIn.privKey!!) ?: emptyList(), - bookmarks?.privateTaggedAddresses(privKey = loggedIn.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedEvents(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedUsers(privKey = keyPair.privKey!!) ?: emptyList(), + bookmarks?.privateTaggedAddresses(privKey = keyPair.privKey!!) ?: emptyList(), - loggedIn.privKey!! + keyPair.privKey!! ) } @@ -1027,10 +1027,10 @@ class Account( if (!isWriteable()) return false if (note is AddressableNote) { - return userProfile().latestBookmarkList?.privateTaggedAddresses(loggedIn.privKey!!) + return userProfile().latestBookmarkList?.privateTaggedAddresses(keyPair.privKey!!) ?.contains(note.address) == true } else { - return userProfile().latestBookmarkList?.privateTaggedEvents(loggedIn.privKey!!) + return userProfile().latestBookmarkList?.privateTaggedEvents(keyPair.privKey!!) ?.contains(note.idHex) == true } } @@ -1060,7 +1060,7 @@ class Account( var returningList: PeopleListEvent = latestList if (hiddenUsers.isNotEmpty()) { - returningList = PeopleListEvent.addUsers(returningList, hiddenUsers.toList(), true, loggedIn.privKey!!) + returningList = PeopleListEvent.addUsers(returningList, hiddenUsers.toList(), true, keyPair.privKey!!) hiddenUsers = emptySet() } @@ -1075,14 +1075,14 @@ class Account( earlierVersion = blockList, pubKeyHex = pubkeyHex, isPrivate = true, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) } else { PeopleListEvent.createListWithUser( name = PeopleListEvent.blockList, pubKeyHex = pubkeyHex, isPrivate = true, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) } @@ -1101,7 +1101,7 @@ class Account( earlierVersion = blockList, pubKeyHex = pubkeyHex, isPrivate = true, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) Client.send(event) @@ -1171,7 +1171,7 @@ class Account( if (listName == GLOBAL_FOLLOWS) return null if (listName == KIND3_FOLLOWS) return userProfile().cachedFollowingKeySet() - val privKey = loggedIn.privKey + val privKey = keyPair.privKey return if (listName != null) { val aTag = ATag(PeopleListEvent.kind, userProfile().pubkeyHex, listName, null).toTag() @@ -1195,7 +1195,7 @@ class Account( if (listName == GLOBAL_FOLLOWS) return null if (listName == KIND3_FOLLOWS) return userProfile().cachedFollowingTagSet() - val privKey = loggedIn.privKey + val privKey = keyPair.privKey return if (listName != null) { val aTag = ATag(PeopleListEvent.kind, userProfile().pubkeyHex, listName, null).toTag() @@ -1219,7 +1219,7 @@ class Account( if (listName == GLOBAL_FOLLOWS) return null if (listName == KIND3_FOLLOWS) return userProfile().cachedFollowingCommunitiesSet() - val privKey = loggedIn.privKey + val privKey = keyPair.privKey return if (listName != null) { val aTag = ATag(PeopleListEvent.kind, userProfile().pubkeyHex, listName, null).toTag() @@ -1256,7 +1256,7 @@ class Account( val event = ChannelMetadataEvent.create( newChannelInfo = metadata, originalChannelIdHex = channel.idHex, - privateKey = loggedIn.privKey!! + privateKey = keyPair.privKey!! ) Client.send(event) @@ -1267,9 +1267,9 @@ class Account( fun decryptContent(note: Note): String? { val event = note.event - return if (event is PrivateDmEvent && loggedIn.privKey != null) { - event.plainContent(loggedIn.privKey!!, event.talkingWith(userProfile().pubkeyHex).hexToByteArray()) - } else if (event is LnZapRequestEvent && loggedIn.privKey != null) { + return if (event is PrivateDmEvent && keyPair.privKey != null) { + event.plainContent(keyPair.privKey!!, event.talkingWith(userProfile().pubkeyHex).hexToByteArray()) + } else if (event is LnZapRequestEvent && keyPair.privKey != null) { decryptZapContentAuthor(note)?.content() } else { event?.content() @@ -1278,7 +1278,7 @@ class Account( fun decryptZapContentAuthor(note: Note): Event? { val event = note.event - val loggedInPrivateKey = loggedIn.privKey + val loggedInPrivateKey = keyPair.privKey return if (event is LnZapRequestEvent && loggedInPrivateKey != null && event.isPrivateZap()) { val recipientPK = event.zappedAuthor().firstOrNull() @@ -1311,7 +1311,7 @@ class Account( try { if (altPrivateKeyToUse != null && altPubkeyToUse != null) { - val altPubKeyFromPrivate = Utils.pubkeyCreate(altPrivateKeyToUse).toHexKey() + val altPubKeyFromPrivate = CryptoUtils.pubkeyCreate(altPrivateKeyToUse).toHexKey() if (altPubKeyFromPrivate == event.pubKey) { val result = event.getPrivateZapEvent(altPrivateKeyToUse, altPubkeyToUse) @@ -1413,7 +1413,7 @@ class Account( fun isHidden(userHex: String): Boolean { val blockList = getBlockList() - return (blockList?.publicAndPrivateUsers(loggedIn.privKey)?.contains(userHex) ?: false) || userHex in transientHiddenUsers + return (blockList?.publicAndPrivateUsers(keyPair.privKey)?.contains(userHex) ?: false) || userHex in transientHiddenUsers } fun followingKeySet(): Set { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Hex.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Hex.kt index 35bcec42a..0e96daa80 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Hex.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Hex.kt @@ -1,7 +1,7 @@ package com.vitorpamplona.amethyst.model import com.vitorpamplona.amethyst.service.Bech32 -import com.vitorpamplona.amethyst.service.Persona +import com.vitorpamplona.amethyst.service.KeyPair import com.vitorpamplona.amethyst.service.bechToBytes import com.vitorpamplona.amethyst.service.nip19.Nip19 import com.vitorpamplona.amethyst.service.toNpub @@ -41,7 +41,7 @@ fun decodePublicKey(key: String): ByteArray { val pubKeyParsed = parsed?.hex?.hexToByteArray() return if (key.startsWith("nsec")) { - Persona(privKey = key.bechToBytes()).pubKey + KeyPair(privKey = key.bechToBytes()).pubKey } else if (pubKeyParsed != null) { pubKeyParsed } else { @@ -55,7 +55,7 @@ fun decodePublicKeyAsHexOrNull(key: String): HexKey? { val pubKeyParsed = parsed?.hex if (key.startsWith("nsec")) { - Persona(privKey = key.bechToBytes()).pubKey.toHexKey() + KeyPair(privKey = key.bechToBytes()).pubKey.toHexKey() } else if (pubKeyParsed != null) { pubKeyParsed } else { @@ -86,7 +86,7 @@ fun parseDirtyWordForKey(mightBeAKey: String): DirtyKeyInfo? { if (key.startsWith("nsec1", true)) { // Converts to npub - val pubkey = Nip19.uriToRoute(Persona(privKey = keyB32.bechToBytes()).pubKey.toNpub()) ?: return null + val pubkey = Nip19.uriToRoute(KeyPair(privKey = keyB32.bechToBytes()).pubKey.toNpub()) ?: return null return DirtyKeyInfo(pubkey, restOfWord) } else if (key.startsWith("npub1", true)) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/Utils.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/CryptoUtils.kt similarity index 99% rename from app/src/main/java/com/vitorpamplona/amethyst/service/Utils.kt rename to app/src/main/java/com/vitorpamplona/amethyst/service/CryptoUtils.kt index 0409cddd4..0f96362ec 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/Utils.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/CryptoUtils.kt @@ -9,7 +9,7 @@ import javax.crypto.Cipher import javax.crypto.spec.IvParameterSpec import javax.crypto.spec.SecretKeySpec -object Utils { +object CryptoUtils { private val sha256: MessageDigest = MessageDigest.getInstance("SHA-256") /** diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/Persona.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/KeyPair.kt similarity index 74% rename from app/src/main/java/com/vitorpamplona/amethyst/service/Persona.kt rename to app/src/main/java/com/vitorpamplona/amethyst/service/KeyPair.kt index 64dbb376f..ae1eaab99 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/Persona.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/KeyPair.kt @@ -2,7 +2,7 @@ package com.vitorpamplona.amethyst.service import com.vitorpamplona.amethyst.model.toHexKey -class Persona( +class KeyPair( privKey: ByteArray? = null, pubKey: ByteArray? = null ) { @@ -13,8 +13,8 @@ class Persona( if (privKey == null) { if (pubKey == null) { // create new, random keys - this.privKey = Utils.privkeyCreate() - this.pubKey = Utils.pubkeyCreate(this.privKey) + this.privKey = CryptoUtils.privkeyCreate() + this.pubKey = CryptoUtils.pubkeyCreate(this.privKey) } else { // this is a read-only account check(pubKey.size == 32) @@ -24,11 +24,11 @@ class Persona( } else { // as private key is provided, ignore the public key and set keys according to private key this.privKey = privKey - this.pubKey = Utils.pubkeyCreate(privKey) + this.pubKey = CryptoUtils.pubkeyCreate(privKey) } } override fun toString(): String { - return "Persona(privateKey=${privKey?.toHexKey()}, publicKey=${pubKey.toHexKey()}" + return "KeyPair(privateKey=${privKey?.toHexKey()}, publicKey=${pubKey.toHexKey()}" } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/AudioTrackEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/AudioTrackEvent.kt index b0046f00c..6ccf125d0 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/AudioTrackEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/AudioTrackEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class AudioTrackEvent( @@ -52,9 +52,9 @@ class AudioTrackEvent( subject?.let { listOf(SUBJECT, it) } ) - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, "") - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return AudioTrackEvent(id.toHexKey(), pubKey, createdAt, tags, "", sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/BookmarkListEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/BookmarkListEvent.kt index 9544e3d3a..012b918fc 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/BookmarkListEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/BookmarkListEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class BookmarkListEvent( @@ -32,7 +32,7 @@ class BookmarkListEvent( privateKey: ByteArray, createdAt: Long = TimeUtils.now() ): BookmarkListEvent { - val pubKey = Utils.pubkeyCreate(privateKey) + val pubKey = CryptoUtils.pubkeyCreate(privateKey) val content = createPrivateTags(privEvents, privUsers, privAddresses, privateKey, pubKey) val tags = mutableListOf>() @@ -49,7 +49,7 @@ class BookmarkListEvent( } val id = generateId(pubKey.toHexKey(), createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return BookmarkListEvent(id.toHexKey(), pubKey.toHexKey(), createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelCreateEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelCreateEvent.kt index b09fe5195..f35523a69 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelCreateEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelCreateEvent.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class ChannelCreateEvent( @@ -38,10 +38,10 @@ class ChannelCreateEvent( "" } - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = emptyList>() val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ChannelCreateEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelHideMessageEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelHideMessageEvent.kt index e23e0049a..27c322373 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelHideMessageEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelHideMessageEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class ChannelHideMessageEvent( @@ -27,14 +27,14 @@ class ChannelHideMessageEvent( const val kind = 43 fun create(reason: String, messagesToHide: List?, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): ChannelHideMessageEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = messagesToHide?.map { listOf("e", it) } ?: emptyList() val id = generateId(pubKey, createdAt, kind, tags, reason) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ChannelHideMessageEvent(id.toHexKey(), pubKey, createdAt, tags, reason, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMessageEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMessageEvent.kt index 44b799fb3..ca0f22295 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMessageEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMessageEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class ChannelMessageEvent( @@ -39,7 +39,7 @@ class ChannelMessageEvent( zapRaiserAmount: Long? ): ChannelMessageEvent { val content = message - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf( listOf("e", channel, "", "root") ) @@ -60,7 +60,7 @@ class ChannelMessageEvent( } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ChannelMessageEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMetadataEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMetadataEvent.kt index cde0be5ae..a7091b074 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMetadataEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMetadataEvent.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class ChannelMetadataEvent( @@ -37,10 +37,10 @@ class ChannelMetadataEvent( "" } - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = listOf(listOf("e", originalChannelIdHex, "", "root")) val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ChannelMetadataEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMuteUserEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMuteUserEvent.kt index 7fcf187be..97c1c074d 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMuteUserEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ChannelMuteUserEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class ChannelMuteUserEvent( @@ -28,14 +28,14 @@ class ChannelMuteUserEvent( fun create(reason: String, usersToMute: List?, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): ChannelMuteUserEvent { val content = reason - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = usersToMute?.map { listOf("p", it) } ?: emptyList() val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ChannelMuteUserEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ClassifiedsEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ClassifiedsEvent.kt index 6b9c8643d..3506d409c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ClassifiedsEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ClassifiedsEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class ClassifiedsEvent( @@ -66,9 +66,9 @@ class ClassifiedsEvent( publishedAt?.let { tags.add(listOf("publishedAt", it.toString())) } title?.let { tags.add(listOf("title", it)) } - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, "") - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ClassifiedsEvent(id.toHexKey(), pubKey, createdAt, tags, "", sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/CommunityDefinitionEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/CommunityDefinitionEvent.kt index 227ac2c7a..e03cf2cad 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/CommunityDefinitionEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/CommunityDefinitionEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class CommunityDefinitionEvent( @@ -33,9 +33,9 @@ class CommunityDefinitionEvent( createdAt: Long = TimeUtils.now() ): CommunityDefinitionEvent { val tags = mutableListOf>() - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, "") - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return CommunityDefinitionEvent(id.toHexKey(), pubKey, createdAt, tags, "", sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/CommunityPostApprovalEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/CommunityPostApprovalEvent.kt index 9bc6b7270..dc22071d7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/CommunityPostApprovalEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/CommunityPostApprovalEvent.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import com.vitorpamplona.amethyst.service.relays.Client @Immutable @@ -53,10 +53,10 @@ class CommunityPostApprovalEvent( val replyToAuthor = listOf("p", approvedPost.pubKey()) val kind = listOf("k", "${approvedPost.kind()}") - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags: List> = listOf(communities, replyToPost, replyToAuthor, kind) val id = generateId(pubKey, createdAt, GenericRepostEvent.kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return GenericRepostEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ContactListEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ContactListEvent.kt index 096a0bfc6..b05724700 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ContactListEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ContactListEvent.kt @@ -8,7 +8,7 @@ import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.decodePublicKey import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable data class Contact(val pubKeyHex: String, val relayUri: String?) @@ -224,9 +224,9 @@ class ContactListEvent( } fun create(content: String, tags: List>, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): ContactListEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ContactListEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/DeletionEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/DeletionEvent.kt index 41d7d5b98..2bbf3fce9 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/DeletionEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/DeletionEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class DeletionEvent( @@ -22,10 +22,10 @@ class DeletionEvent( fun create(deleteEvents: List, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): DeletionEvent { val content = "" - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = deleteEvents.map { listOf("e", it) } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return DeletionEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/EmojiPackEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/EmojiPackEvent.kt index 2a2ad5127..f07b40e19 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/EmojiPackEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/EmojiPackEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class EmojiPackEvent( @@ -25,13 +25,13 @@ class EmojiPackEvent( createdAt: Long = TimeUtils.now() ): EmojiPackEvent { val content = "" - val pubKey = Utils.pubkeyCreate(privateKey) + val pubKey = CryptoUtils.pubkeyCreate(privateKey) val tags = mutableListOf>() tags.add(listOf("d", name)) val id = generateId(pubKey.toHexKey(), createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return EmojiPackEvent(id.toHexKey(), pubKey.toHexKey(), createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/EmojiPackSelectionEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/EmojiPackSelectionEvent.kt index 9b7271547..b56d095b0 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/EmojiPackSelectionEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/EmojiPackSelectionEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class EmojiPackSelectionEvent( @@ -28,7 +28,7 @@ class EmojiPackSelectionEvent( createdAt: Long = TimeUtils.now() ): EmojiPackSelectionEvent { val msg = "" - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf>() listOfEmojiPacks?.forEach { @@ -36,7 +36,7 @@ class EmojiPackSelectionEvent( } val id = generateId(pubKey, createdAt, kind, tags, msg) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return EmojiPackSelectionEvent(id.toHexKey(), pubKey, createdAt, tags, msg, sig.toHexKey()) } } 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 36a1ce321..f86581914 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 @@ -7,7 +7,7 @@ import com.google.gson.annotations.SerializedName import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import com.vitorpamplona.amethyst.service.nip19.Nip19 import fr.acinq.secp256k1.Hex import fr.acinq.secp256k1.Secp256k1 @@ -340,9 +340,9 @@ open class Event( } fun create(privateKey: ByteArray, kind: Int, tags: List> = emptyList(), content: String = "", createdAt: Long = TimeUtils.now()): Event { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = Companion.generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey).toHexKey() + val sig = CryptoUtils.sign(id, privateKey).toHexKey() return Event(id.toHexKey(), pubKey, createdAt, kind, tags, content, sig) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileHeaderEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileHeaderEvent.kt index ecf9aef7d..7b9c7b301 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileHeaderEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileHeaderEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class FileHeaderEvent( @@ -74,9 +74,9 @@ class FileHeaderEvent( ) val content = description ?: "" - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return FileHeaderEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileStorageEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileStorageEvent.kt index ee996595e..8d8f580d7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileStorageEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileStorageEvent.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import java.util.Base64 @Immutable @@ -51,9 +51,9 @@ class FileStorageEvent( ) val content = encode(data) - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return FileStorageEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileStorageHeaderEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileStorageHeaderEvent.kt index d647fa2ee..6193849b3 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileStorageHeaderEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/FileStorageHeaderEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class FileStorageHeaderEvent( @@ -74,9 +74,9 @@ class FileStorageHeaderEvent( ) val content = description ?: "" - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return FileStorageHeaderEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/GeneralListEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/GeneralListEvent.kt index a41fcf076..ee8ace2fb 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/GeneralListEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/GeneralListEvent.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Immutable import com.google.gson.reflect.TypeToken import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.hexToByteArray -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable abstract class GeneralListEvent( @@ -28,9 +28,9 @@ abstract class GeneralListEvent( if (content.isBlank()) return null return try { - val sharedSecret = Utils.getSharedSecret(privKey, pubKey.hexToByteArray()) + val sharedSecret = CryptoUtils.getSharedSecret(privKey, pubKey.hexToByteArray()) - return Utils.decrypt(content, sharedSecret) + return CryptoUtils.decrypt(content, sharedSecret) } catch (e: Exception) { Log.w("GeneralList", "Error decrypting the message ${e.message} for ${dTag()}") null @@ -90,7 +90,7 @@ abstract class GeneralListEvent( } val msg = gson.toJson(privTags) - return Utils.encrypt( + return CryptoUtils.encrypt( msg, privateKey, pubKey @@ -101,10 +101,10 @@ abstract class GeneralListEvent( privateTags: List>? = null, privateKey: ByteArray ): String { - return Utils.encrypt( + return CryptoUtils.encrypt( msg = gson.toJson(privateTags), privateKey = privateKey, - pubKey = Utils.pubkeyCreate(privateKey) + pubKey = CryptoUtils.pubkeyCreate(privateKey) ) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/GenericRepostEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/GenericRepostEvent.kt index 39c5786e1..2a52d4399 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/GenericRepostEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/GenericRepostEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import com.vitorpamplona.amethyst.service.relays.Client @Immutable @@ -35,7 +35,7 @@ class GenericRepostEvent( val replyToPost = listOf("e", boostedPost.id()) val replyToAuthor = listOf("p", boostedPost.pubKey()) - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() var tags: List> = listOf(replyToPost, replyToAuthor) if (boostedPost is AddressableEvent) { @@ -45,7 +45,7 @@ class GenericRepostEvent( tags = tags + listOf(listOf("k", "${boostedPost.kind()}")) val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return GenericRepostEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/HTTPAuthorizationEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/HTTPAuthorizationEvent.kt index bfda59c88..8334b668d 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/HTTPAuthorizationEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/HTTPAuthorizationEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import java.security.MessageDigest @Immutable @@ -40,9 +40,9 @@ class HTTPAuthorizationEvent( listOf("payload", hash) ) - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, "") - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return HTTPAuthorizationEvent(id.toHexKey(), pubKey, createdAt, tags, "", sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/HighlightEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/HighlightEvent.kt index 679445e4c..cf0e386ba 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/HighlightEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/HighlightEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class HighlightEvent( @@ -30,10 +30,10 @@ class HighlightEvent( privateKey: ByteArray, createdAt: Long = TimeUtils.now() ): PollNoteEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf>() val id = generateId(pubKey, createdAt, kind, tags, msg) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return PollNoteEvent(id.toHexKey(), pubKey, createdAt, tags, msg, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LiveActivitiesChatMessageEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LiveActivitiesChatMessageEvent.kt index 835eb10af..dd925bb47 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LiveActivitiesChatMessageEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LiveActivitiesChatMessageEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class LiveActivitiesChatMessageEvent( @@ -54,7 +54,7 @@ class LiveActivitiesChatMessageEvent( zapRaiserAmount: Long? ): LiveActivitiesChatMessageEvent { val content = message - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf( listOf("a", activity.toTag(), "", "root") ) @@ -75,7 +75,7 @@ class LiveActivitiesChatMessageEvent( } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return LiveActivitiesChatMessageEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LiveActivitiesEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LiveActivitiesEvent.kt index 4f2e00038..ef9cfa0b7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LiveActivitiesEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LiveActivitiesEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class LiveActivitiesEvent( @@ -51,9 +51,9 @@ class LiveActivitiesEvent( createdAt: Long = TimeUtils.now() ): LiveActivitiesEvent { val tags = mutableListOf>() - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, "") - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return LiveActivitiesEvent(id.toHexKey(), pubKey, createdAt, tags, "", sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapPaymentRequestEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapPaymentRequestEvent.kt index ad75af13b..067f8e6bc 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapPaymentRequestEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapPaymentRequestEvent.kt @@ -10,7 +10,7 @@ import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.hexToByteArray import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import java.lang.reflect.Type @Immutable @@ -35,9 +35,9 @@ class LnZapPaymentRequestEvent( } return try { - val sharedSecret = Utils.getSharedSecret(privKey, pubkey) + val sharedSecret = CryptoUtils.getSharedSecret(privKey, pubkey) - val jsonText = Utils.decrypt(content, sharedSecret) + val jsonText = CryptoUtils.decrypt(content, sharedSecret) val payInvoiceMethod = gson.fromJson(jsonText, Request::class.java) @@ -59,10 +59,10 @@ class LnZapPaymentRequestEvent( privateKey: ByteArray, createdAt: Long = TimeUtils.now() ): LnZapPaymentRequestEvent { - val pubKey = Utils.pubkeyCreate(privateKey) + val pubKey = CryptoUtils.pubkeyCreate(privateKey) val serializedRequest = gson.toJson(PayInvoiceMethod.create(lnInvoice)) - val content = Utils.encrypt( + val content = CryptoUtils.encrypt( serializedRequest, privateKey, walletServicePubkey.hexToByteArray() @@ -72,7 +72,7 @@ class LnZapPaymentRequestEvent( tags.add(listOf("p", walletServicePubkey)) val id = generateId(pubKey.toHexKey(), createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return LnZapPaymentRequestEvent(id.toHexKey(), pubKey.toHexKey(), createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapPaymentResponseEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapPaymentResponseEvent.kt index fde765d0e..7fdcf7674 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapPaymentResponseEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LnZapPaymentResponseEvent.kt @@ -8,7 +8,7 @@ import com.google.gson.JsonElement import com.google.gson.JsonParseException import com.google.gson.annotations.SerializedName import com.vitorpamplona.amethyst.model.HexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import java.lang.reflect.Type @Immutable @@ -30,9 +30,9 @@ class LnZapPaymentResponseEvent( private fun decrypt(privKey: ByteArray, pubKey: ByteArray): String? { return try { - val sharedSecret = Utils.getSharedSecret(privKey, pubKey) + val sharedSecret = CryptoUtils.getSharedSecret(privKey, pubKey) - val retVal = Utils.decrypt(content, sharedSecret) + val retVal = CryptoUtils.decrypt(content, sharedSecret) if (retVal.startsWith(PrivateDmEvent.nip18Advertisement)) { retVal.substring(16) 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 a12cfa9cf..289dda413 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 @@ -3,11 +3,10 @@ package com.vitorpamplona.amethyst.service.model import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.* import com.vitorpamplona.amethyst.service.Bech32 -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import java.nio.charset.Charset import java.security.MessageDigest import java.security.SecureRandom -import java.util.* import javax.crypto.BadPaddingException import javax.crypto.Cipher import javax.crypto.spec.IvParameterSpec @@ -68,7 +67,7 @@ class LnZapRequestEvent( ): LnZapRequestEvent { var content = message var privkey = privateKey - var pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + var pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() var tags = listOf( listOf("e", originalNote.id()), listOf("p", originalNote.pubKey()), @@ -82,8 +81,8 @@ class LnZapRequestEvent( } if (zapType == LnZapEvent.ZapType.ANONYMOUS) { tags = tags + listOf(listOf("anon", "")) - privkey = Utils.privkeyCreate() - pubKey = Utils.pubkeyCreate(privkey).toHexKey() + privkey = CryptoUtils.privkeyCreate() + pubKey = CryptoUtils.pubkeyCreate(privkey).toHexKey() } else if (zapType == LnZapEvent.ZapType.PRIVATE) { var encryptionPrivateKey = createEncryptionPrivateKey(privateKey.toHexKey(), originalNote.id(), createdAt) var noteJson = (create(privkey, 9733, listOf(tags[0], tags[1]), message)).toJson() @@ -91,10 +90,10 @@ class LnZapRequestEvent( tags = tags + listOf(listOf("anon", encryptedContent)) content = "" // make sure public content is empty, as the content is encrypted privkey = encryptionPrivateKey // sign event with generated privkey - pubKey = Utils.pubkeyCreate(encryptionPrivateKey).toHexKey() // updated event with according pubkey + pubKey = CryptoUtils.pubkeyCreate(encryptionPrivateKey).toHexKey() // updated event with according pubkey } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privkey) + val sig = CryptoUtils.sign(id, privkey) return LnZapRequestEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } @@ -108,14 +107,14 @@ class LnZapRequestEvent( ): LnZapRequestEvent { var content = message var privkey = privateKey - var pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + var pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() var tags = listOf( listOf("p", userHex), listOf("relays") + relays ) if (zapType == LnZapEvent.ZapType.ANONYMOUS) { - privkey = Utils.privkeyCreate() - pubKey = Utils.pubkeyCreate(privkey).toHexKey() + privkey = CryptoUtils.privkeyCreate() + pubKey = CryptoUtils.pubkeyCreate(privkey).toHexKey() tags = tags + listOf(listOf("anon", "")) } else if (zapType == LnZapEvent.ZapType.PRIVATE) { var encryptionPrivateKey = createEncryptionPrivateKey(privateKey.toHexKey(), userHex, createdAt) @@ -124,10 +123,10 @@ class LnZapRequestEvent( tags = tags + listOf(listOf("anon", encryptedContent)) content = "" privkey = encryptionPrivateKey - pubKey = Utils.pubkeyCreate(encryptionPrivateKey).toHexKey() + pubKey = CryptoUtils.pubkeyCreate(encryptionPrivateKey).toHexKey() } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privkey) + val sig = CryptoUtils.sign(id, privkey) return LnZapRequestEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } @@ -138,7 +137,7 @@ class LnZapRequestEvent( } private fun encryptPrivateZapMessage(msg: String, privkey: ByteArray, pubkey: ByteArray): String { - var sharedSecret = Utils.getSharedSecret(privkey, pubkey) + var sharedSecret = CryptoUtils.getSharedSecret(privkey, pubkey) val iv = ByteArray(16) SecureRandom().nextBytes(iv) @@ -157,7 +156,7 @@ class LnZapRequestEvent( } private fun decryptPrivateZapMessage(msg: String, privkey: ByteArray, pubkey: ByteArray): String { - var sharedSecret = Utils.getSharedSecret(privkey, pubkey) + var sharedSecret = CryptoUtils.getSharedSecret(privkey, pubkey) if (sharedSecret.size != 16 && sharedSecret.size != 32) { throw IllegalArgumentException("Invalid shared secret size") } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LongTextNoteEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LongTextNoteEvent.kt index b37f49555..e5bf88ded 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/LongTextNoteEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/LongTextNoteEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class LongTextNoteEvent( @@ -33,7 +33,7 @@ class LongTextNoteEvent( const val kind = 30023 fun create(msg: String, replyTos: List?, mentions: List?, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): LongTextNoteEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf>() replyTos?.forEach { tags.add(listOf("e", it)) @@ -42,7 +42,7 @@ class LongTextNoteEvent( tags.add(listOf("p", it)) } val id = generateId(pubKey, createdAt, kind, tags, msg) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return LongTextNoteEvent(id.toHexKey(), pubKey, createdAt, tags, msg, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/MetadataEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/MetadataEvent.kt index aa27cf171..8d86ec68b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/MetadataEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/MetadataEvent.kt @@ -10,7 +10,7 @@ import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.UserMetadata import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import java.io.ByteArrayInputStream @Stable @@ -172,7 +172,7 @@ class MetadataEvent( } fun create(contactMetaData: String, identities: List, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): MetadataEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf>() identities.forEach { @@ -180,7 +180,7 @@ class MetadataEvent( } val id = generateId(pubKey, createdAt, kind, tags, contactMetaData) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return MetadataEvent(id.toHexKey(), pubKey, createdAt, tags, contactMetaData, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/MuteListEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/MuteListEvent.kt index 6c5009f37..e2b870b3a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/MuteListEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/MuteListEvent.kt @@ -7,7 +7,7 @@ import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.hexToByteArray import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class MuteListEvent( @@ -23,9 +23,9 @@ class MuteListEvent( fun plainContent(privKey: ByteArray): String? { return try { - val sharedSecret = Utils.getSharedSecret(privKey, pubKey.hexToByteArray()) + val sharedSecret = CryptoUtils.getSharedSecret(privKey, pubKey.hexToByteArray()) - return Utils.decrypt(content, sharedSecret) + return CryptoUtils.decrypt(content, sharedSecret) } catch (e: Exception) { Log.w("BookmarkList", "Error decrypting the message ${e.message}") null @@ -73,7 +73,7 @@ class MuteListEvent( privateKey: ByteArray, createdAt: Long = TimeUtils.now() ): MuteListEvent { - val pubKey = Utils.pubkeyCreate(privateKey) + val pubKey = CryptoUtils.pubkeyCreate(privateKey) val privTags = mutableListOf>() privEvents?.forEach { @@ -87,7 +87,7 @@ class MuteListEvent( } val msg = gson.toJson(privTags) - val content = Utils.encrypt( + val content = CryptoUtils.encrypt( msg, privateKey, pubKey @@ -105,7 +105,7 @@ class MuteListEvent( } val id = generateId(pubKey.toHexKey(), createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return MuteListEvent(id.toHexKey(), pubKey.toHexKey(), createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/NNSEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/NNSEvent.kt index 2b36e4f43..37ed50f37 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/NNSEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/NNSEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class NNSEvent( @@ -31,9 +31,9 @@ class NNSEvent( createdAt: Long = TimeUtils.now() ): NNSEvent { val tags = mutableListOf>() - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, "") - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return NNSEvent(id.toHexKey(), pubKey, createdAt, tags, "", sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PeopleListEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PeopleListEvent.kt index 4e1e63f5e..45c4cc464 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PeopleListEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PeopleListEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import kotlinx.collections.immutable.ImmutableSet import kotlinx.collections.immutable.persistentSetOf import kotlinx.collections.immutable.toImmutableSet @@ -141,9 +141,9 @@ class PeopleListEvent( } fun create(content: String, tags: List>, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): PeopleListEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return PeopleListEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PinListEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PinListEvent.kt index 2cfafaeb7..990f51a10 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PinListEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PinListEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class PinListEvent( @@ -34,9 +34,9 @@ class PinListEvent( tags.add(listOf("pin", it)) } - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, "") - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return PinListEvent(id.toHexKey(), pubKey, createdAt, tags, "", sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PollNoteEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PollNoteEvent.kt index 562a56312..681910a0a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PollNoteEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PollNoteEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils const val POLL_OPTION = "poll_option" const val VALUE_MAXIMUM = "value_maximum" @@ -55,7 +55,7 @@ class PollNoteEvent( markAsSensitive: Boolean, zapRaiserAmount: Long? ): PollNoteEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf>() replyTos?.forEach { tags.add(listOf("e", it)) @@ -85,7 +85,7 @@ class PollNoteEvent( } val id = generateId(pubKey, createdAt, kind, tags, msg) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return PollNoteEvent(id.toHexKey(), pubKey, createdAt, tags, msg, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PrivateDmEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PrivateDmEvent.kt index ad06c8060..b3ade2392 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PrivateDmEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PrivateDmEvent.kt @@ -5,8 +5,8 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey +import com.vitorpamplona.amethyst.service.CryptoUtils import com.vitorpamplona.amethyst.service.HexValidator -import com.vitorpamplona.amethyst.service.Utils import fr.acinq.secp256k1.Hex @Immutable @@ -55,9 +55,9 @@ class PrivateDmEvent( fun plainContent(privKey: ByteArray, pubKey: ByteArray): String? { return try { - val sharedSecret = Utils.getSharedSecret(privKey, pubKey) + val sharedSecret = CryptoUtils.getSharedSecret(privKey, pubKey) - val retVal = Utils.decrypt(content, sharedSecret) + val retVal = CryptoUtils.decrypt(content, sharedSecret) if (retVal.startsWith(nip18Advertisement)) { retVal.substring(16) @@ -88,12 +88,12 @@ class PrivateDmEvent( markAsSensitive: Boolean, zapRaiserAmount: Long? ): PrivateDmEvent { - val content = Utils.encrypt( + val content = CryptoUtils.encrypt( if (advertiseNip18) { nip18Advertisement } else { "" } + msg, privateKey, recipientPubKey ) - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf>() publishedRecipientPubKey?.let { tags.add(listOf("p", publishedRecipientPubKey.toHexKey())) @@ -114,7 +114,7 @@ class PrivateDmEvent( tags.add(listOf("zapraiser", "$it")) } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return PrivateDmEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ReactionEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ReactionEvent.kt index 7c5eef499..fc380b2b1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ReactionEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ReactionEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class ReactionEvent( @@ -31,7 +31,7 @@ class ReactionEvent( } fun create(content: String, originalNote: EventInterface, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): ReactionEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() var tags = listOf(listOf("e", originalNote.id()), listOf("p", originalNote.pubKey())) if (originalNote is AddressableEvent) { @@ -39,13 +39,13 @@ class ReactionEvent( } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ReactionEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } fun create(emojiUrl: EmojiUrl, originalNote: EventInterface, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): ReactionEvent { val content = ":${emojiUrl.code}:" - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() var tags = listOf( listOf("e", originalNote.id()), @@ -58,7 +58,7 @@ class ReactionEvent( } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ReactionEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RecommendRelayEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RecommendRelayEvent.kt index 8351e6c64..fb4130ac4 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RecommendRelayEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RecommendRelayEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import java.net.URI @Immutable @@ -29,10 +29,10 @@ class RecommendRelayEvent( fun create(relay: URI, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): RecommendRelayEvent { val content = relay.toString() - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = listOf>() val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return RecommendRelayEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RelayAuthEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RelayAuthEvent.kt index 8511d3e5b..d3586c426 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RelayAuthEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RelayAuthEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class RelayAuthEvent( @@ -23,13 +23,13 @@ class RelayAuthEvent( fun create(relay: String, challenge: String, privateKey: ByteArray, createdAt: Long = TimeUtils.now()): RelayAuthEvent { val content = "" - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = listOf( listOf("relay", relay), listOf("challenge", challenge) ) val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return RelayAuthEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RelaySetEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RelaySetEvent.kt index 3c66e4cb0..b286ce57a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RelaySetEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RelaySetEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable class RelaySetEvent( @@ -35,9 +35,9 @@ class RelaySetEvent( tags.add(listOf("r", it)) } - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val id = generateId(pubKey, createdAt, kind, tags, "") - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return RelaySetEvent(id.toHexKey(), pubKey, createdAt, tags, "", sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ReportEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ReportEvent.kt index 56475359c..d7931e8ba 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/ReportEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/ReportEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils @Immutable data class ReportedKey(val key: String, val reportType: ReportEvent.ReportType) @@ -63,7 +63,7 @@ class ReportEvent( val reportPostTag = listOf("e", reportedPost.id(), type.name.lowercase()) val reportAuthorTag = listOf("p", reportedPost.pubKey(), type.name.lowercase()) - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() var tags: List> = listOf(reportPostTag, reportAuthorTag) if (reportedPost is AddressableEvent) { @@ -71,7 +71,7 @@ class ReportEvent( } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ReportEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } @@ -80,10 +80,10 @@ class ReportEvent( val reportAuthorTag = listOf("p", reportedUser, type.name.lowercase()) - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags: List> = listOf(reportAuthorTag) val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return ReportEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RepostEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RepostEvent.kt index a6529b905..28484c33f 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RepostEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RepostEvent.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Immutable import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import com.vitorpamplona.amethyst.service.relays.Client @Immutable @@ -35,7 +35,7 @@ class RepostEvent( val replyToPost = listOf("e", boostedPost.id()) val replyToAuthor = listOf("p", boostedPost.pubKey()) - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() var tags: List> = listOf(replyToPost, replyToAuthor) if (boostedPost is AddressableEvent) { @@ -43,7 +43,7 @@ class RepostEvent( } val id = generateId(pubKey, createdAt, kind, tags, content) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return RepostEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/TextNoteEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/TextNoteEvent.kt index 18f4fa877..9e2be3b9b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/TextNoteEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/TextNoteEvent.kt @@ -6,7 +6,7 @@ import com.linkedin.urls.detection.UrlDetectorOptions import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.TimeUtils import com.vitorpamplona.amethyst.model.toHexKey -import com.vitorpamplona.amethyst.service.Utils +import com.vitorpamplona.amethyst.service.CryptoUtils import com.vitorpamplona.amethyst.ui.screen.loggedIn.findHashtags @Immutable @@ -42,7 +42,7 @@ class TextNoteEvent( privateKey: ByteArray, createdAt: Long = TimeUtils.now() ): TextNoteEvent { - val pubKey = Utils.pubkeyCreate(privateKey).toHexKey() + val pubKey = CryptoUtils.pubkeyCreate(privateKey).toHexKey() val tags = mutableListOf>() replyTos?.forEach { if (it == replyingTo) { @@ -95,7 +95,7 @@ class TextNoteEvent( } val id = generateId(pubKey, createdAt, kind, tags, msg) - val sig = Utils.sign(id, privateKey) + val sig = CryptoUtils.sign(id, privateKey) return TextNoteEvent(id.toHexKey(), pubKey, createdAt, tags, msg, sig.toHexKey()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/BookmarkPrivateFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/BookmarkPrivateFeedFilter.kt index 8e8b12dca..1c870d18b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/BookmarkPrivateFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/BookmarkPrivateFeedFilter.kt @@ -12,7 +12,7 @@ object BookmarkPrivateFeedFilter : FeedFilter() { } override fun feed(): List { - val privKey = account.loggedIn.privKey ?: return emptyList() + val privKey = account.keyPair.privKey ?: return emptyList() val bookmarks = account.userProfile().latestBookmarkList diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HiddenAccountsFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HiddenAccountsFeedFilter.kt index 8d286a12d..43d78eb6a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HiddenAccountsFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HiddenAccountsFeedFilter.kt @@ -15,7 +15,7 @@ class HiddenAccountsFeedFilter(val account: Account) : FeedFilter() { override fun feed(): List { return account.getBlockList() - ?.publicAndPrivateUsers(account.loggedIn.privKey) + ?.publicAndPrivateUsers(account.keyPair.privKey) ?.map { LocalCache.getOrCreateUser(it) } ?: emptyList() } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt index f4b35af51..03cfa1740 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt @@ -9,7 +9,7 @@ import com.vitorpamplona.amethyst.ServiceManager import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.hexToByteArray import com.vitorpamplona.amethyst.service.HttpClient -import com.vitorpamplona.amethyst.service.Persona +import com.vitorpamplona.amethyst.service.KeyPair import com.vitorpamplona.amethyst.service.bechToBytes import com.vitorpamplona.amethyst.service.nip19.Nip19 import fr.acinq.secp256k1.Hex @@ -53,14 +53,14 @@ class AccountStateViewModel(val context: Context) : ViewModel() { val account = if (key.startsWith("nsec")) { - Account(Persona(privKey = key.bechToBytes()), proxy = proxy, proxyPort = proxyPort) + Account(KeyPair(privKey = key.bechToBytes()), proxy = proxy, proxyPort = proxyPort) } else if (pubKeyParsed != null) { - Account(Persona(pubKey = pubKeyParsed), proxy = proxy, proxyPort = proxyPort) + Account(KeyPair(pubKey = pubKeyParsed), proxy = proxy, proxyPort = proxyPort) } else if (pattern.matcher(key).matches()) { // Evaluate NIP-5 - Account(Persona(), proxy = proxy, proxyPort = proxyPort) + Account(KeyPair(), proxy = proxy, proxyPort = proxyPort) } else { - Account(Persona(Hex.decode(key)), proxy = proxy, proxyPort = proxyPort) + Account(KeyPair(Hex.decode(key)), proxy = proxy, proxyPort = proxyPort) } LocalPreferences.updatePrefsForLogin(account) @@ -75,7 +75,7 @@ class AccountStateViewModel(val context: Context) : ViewModel() { fun newKey(useProxy: Boolean, proxyPort: Int) { val proxy = HttpClient.initProxy(useProxy, "127.0.0.1", proxyPort) - val account = Account(Persona(), proxy = proxy, proxyPort = proxyPort) + val account = Account(KeyPair(), proxy = proxy, proxyPort = proxyPort) // saves to local preferences LocalPreferences.updatePrefsForLogin(account) startUI(account) @@ -83,7 +83,7 @@ class AccountStateViewModel(val context: Context) : ViewModel() { @OptIn(DelicateCoroutinesApi::class) fun startUI(account: Account) { - if (account.loggedIn.privKey != null) { + if (account.keyPair.privKey != null) { _accountContent.update { AccountState.LoggedIn(account) } } else { _accountContent.update { AccountState.LoggedInViewOnly(account) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt index 64964c384..6418db6a2 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt @@ -157,7 +157,7 @@ private fun copyNSec( account: Account, clipboardManager: ClipboardManager ) { - account.loggedIn.privKey?.let { + account.keyPair.privKey?.let { clipboardManager.setText(AnnotatedString(it.toNsec())) scope.launch { Toast.makeText(