mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 12:38:33 +00:00
Update to libsignal 0.65.4
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -130,6 +130,10 @@ object ExportOddities {
|
||||
return log(0, "Distribution list had self as a member. Removing it.")
|
||||
}
|
||||
|
||||
fun emptyQuote(sentTimestamp: Long): String {
|
||||
return log(sentTimestamp, "Quote had no text or attachments. Removing it.")
|
||||
}
|
||||
|
||||
private fun log(sentTimestamp: Long, message: String): String {
|
||||
return "[ODDITY][$sentTimestamp] $message"
|
||||
}
|
||||
|
||||
@@ -956,21 +956,28 @@ private fun BackupMessageRecord.toRemoteQuote(mediaArchiveEnabled: Boolean, atta
|
||||
}
|
||||
|
||||
val bodyRanges = this.quoteBodyRanges?.toRemoteBodyRanges(dateSent) ?: emptyList()
|
||||
val body = this.quoteBody?.takeUnless { it.isBlank() }?.let { body ->
|
||||
Text(
|
||||
body = body,
|
||||
bodyRanges = bodyRanges
|
||||
)
|
||||
}
|
||||
val attachments = if (remoteType == Quote.Type.VIEW_ONCE) {
|
||||
emptyList()
|
||||
} else {
|
||||
attachments?.toRemoteQuoteAttachments(mediaArchiveEnabled) ?: emptyList()
|
||||
}
|
||||
|
||||
if (body == null && attachments.isEmpty()) {
|
||||
Log.w(TAG, ExportOddities.emptyQuote(this.dateSent))
|
||||
return null
|
||||
}
|
||||
|
||||
return Quote(
|
||||
targetSentTimestamp = this.quoteTargetSentTimestamp.takeIf { !this.quoteMissing && it != MessageTable.QUOTE_TARGET_MISSING_ID }?.clampToValidBackupRange(),
|
||||
authorId = this.quoteAuthor,
|
||||
text = this.quoteBody?.let { body ->
|
||||
Text(
|
||||
body = body,
|
||||
bodyRanges = bodyRanges
|
||||
)
|
||||
},
|
||||
attachments = if (remoteType == Quote.Type.VIEW_ONCE) {
|
||||
emptyList()
|
||||
} else {
|
||||
attachments?.toRemoteQuoteAttachments(mediaArchiveEnabled) ?: emptyList()
|
||||
},
|
||||
text = body,
|
||||
attachments = attachments,
|
||||
type = remoteType
|
||||
)
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ class GroupArchiveExporter(private val selfAci: ServiceId.ACI, private val curso
|
||||
group = ArchiveGroup(
|
||||
masterKey = cursor.requireNonNullBlob(GroupTable.V2_MASTER_KEY).toByteString(),
|
||||
whitelisted = cursor.requireBoolean(RecipientTable.PROFILE_SHARING),
|
||||
blocked = cursor.requireBoolean(RecipientTable.BLOCKED),
|
||||
hideStory = extras?.hideStory() ?: false,
|
||||
storySendMode = showAsStoryState.toRemote(),
|
||||
snapshot = decryptedGroup.toRemote(isActive, selfAci)
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.thoughtcrime.securesms.backup.v2.importer
|
||||
|
||||
import android.content.ContentValues
|
||||
import org.signal.core.util.Base64
|
||||
import org.signal.core.util.toInt
|
||||
import org.signal.libsignal.zkgroup.groups.GroupMasterKey
|
||||
import org.signal.libsignal.zkgroup.groups.GroupSecretParams
|
||||
import org.signal.storageservice.protos.groups.AccessControl
|
||||
@@ -51,7 +52,8 @@ object GroupArchiveImporter {
|
||||
val values = ContentValues().apply {
|
||||
put(RecipientTable.GROUP_ID, groupId.toString())
|
||||
put(RecipientTable.AVATAR_COLOR, AvatarColorHash.forGroupId(groupId).serialize())
|
||||
put(RecipientTable.PROFILE_SHARING, group.whitelisted)
|
||||
put(RecipientTable.PROFILE_SHARING, group.whitelisted.toInt())
|
||||
put(RecipientTable.BLOCKED, group.blocked.toInt())
|
||||
put(RecipientTable.TYPE, RecipientTable.RecipientType.GV2.id)
|
||||
put(RecipientTable.STORAGE_SERVICE_ID, Base64.encodeWithPadding(StorageSyncHelper.generateKey()))
|
||||
if (group.hideStory) {
|
||||
|
||||
@@ -30,6 +30,7 @@ message BackupInfo {
|
||||
// For example, Chats may all be together at the beginning,
|
||||
// or may each immediately precede its first ChatItem.
|
||||
message Frame {
|
||||
// If unset, importers should skip this frame without throwing an error.
|
||||
oneof item {
|
||||
AccountData account = 1;
|
||||
Recipient recipient = 2;
|
||||
@@ -44,13 +45,13 @@ message Frame {
|
||||
|
||||
message AccountData {
|
||||
enum PhoneNumberSharingMode {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Nobody"
|
||||
EVERYBODY = 1;
|
||||
NOBODY = 2;
|
||||
}
|
||||
message UsernameLink {
|
||||
enum Color {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Blue"
|
||||
BLUE = 1;
|
||||
WHITE = 2;
|
||||
GREY = 3;
|
||||
@@ -97,6 +98,7 @@ message AccountData {
|
||||
message IAPSubscriberData {
|
||||
bytes subscriberId = 1;
|
||||
|
||||
// If unset, importers should ignore the subscriber data without throwing an error.
|
||||
oneof iapSubscriptionId {
|
||||
// Identifies an Android Play Store IAP subscription.
|
||||
string purchaseToken = 2;
|
||||
@@ -119,6 +121,7 @@ message AccountData {
|
||||
|
||||
message Recipient {
|
||||
uint64 id = 1; // generated id for reference only within this file
|
||||
// If unset, importers should skip this frame without throwing an error.
|
||||
oneof destination {
|
||||
Contact contact = 2;
|
||||
Group group = 3;
|
||||
@@ -131,9 +134,9 @@ message Recipient {
|
||||
|
||||
message Contact {
|
||||
enum IdentityState {
|
||||
DEFAULT = 0;
|
||||
DEFAULT = 0; // A valid value -- indicates unset by the user
|
||||
VERIFIED = 1;
|
||||
UNVERIFIED = 2;
|
||||
UNVERIFIED = 2; // Was once verified and is now unverified
|
||||
}
|
||||
|
||||
message Registered {}
|
||||
@@ -142,7 +145,7 @@ message Contact {
|
||||
}
|
||||
|
||||
enum Visibility {
|
||||
VISIBLE = 0;
|
||||
VISIBLE = 0; // A valid value -- the contact is not hidden
|
||||
HIDDEN = 1;
|
||||
HIDDEN_MESSAGE_REQUEST = 2;
|
||||
}
|
||||
@@ -159,6 +162,7 @@ message Contact {
|
||||
bool blocked = 5;
|
||||
Visibility visibility = 6;
|
||||
|
||||
// If unset, consider the user to be registered
|
||||
oneof registration {
|
||||
Registered registered = 7;
|
||||
NotRegistered notRegistered = 8;
|
||||
@@ -177,7 +181,7 @@ message Contact {
|
||||
|
||||
message Group {
|
||||
enum StorySendMode {
|
||||
DEFAULT = 0;
|
||||
DEFAULT = 0; // A valid value -- indicates unset by the user
|
||||
DISABLED = 1;
|
||||
ENABLED = 2;
|
||||
}
|
||||
@@ -187,6 +191,7 @@ message Group {
|
||||
bool hideStory = 3;
|
||||
StorySendMode storySendMode = 4;
|
||||
GroupSnapshot snapshot = 5;
|
||||
bool blocked = 6;
|
||||
|
||||
// These are simply plaintext copies of the groups proto from Groups.proto.
|
||||
// They should be kept completely in-sync with Groups.proto.
|
||||
@@ -210,6 +215,7 @@ message Group {
|
||||
}
|
||||
|
||||
message GroupAttributeBlob {
|
||||
// If unset, consider the field it represents to not be present
|
||||
oneof content {
|
||||
string title = 1;
|
||||
bytes avatar = 2;
|
||||
@@ -220,7 +226,7 @@ message Group {
|
||||
|
||||
message Member {
|
||||
enum Role {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Intepret as "Default"
|
||||
DEFAULT = 1;
|
||||
ADMINISTRATOR = 2;
|
||||
}
|
||||
@@ -252,7 +258,7 @@ message Group {
|
||||
|
||||
message AccessControl {
|
||||
enum AccessRequired {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Intepret as "Unsatisfiable"
|
||||
ANY = 1;
|
||||
MEMBER = 2;
|
||||
ADMINISTRATOR = 3;
|
||||
@@ -292,7 +298,7 @@ message Chat {
|
||||
*/
|
||||
message CallLink {
|
||||
enum Restrictions {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Admin Approval"
|
||||
NONE = 1;
|
||||
ADMIN_APPROVAL = 2;
|
||||
}
|
||||
@@ -306,7 +312,7 @@ message CallLink {
|
||||
|
||||
message AdHocCall {
|
||||
enum State {
|
||||
UNKNOWN_STATE = 0;
|
||||
UNKNOWN_STATE = 0; // Interpret as "Generic"
|
||||
GENERIC = 1;
|
||||
}
|
||||
|
||||
@@ -322,6 +328,7 @@ message DistributionListItem {
|
||||
// by an all-0 UUID (00000000-0000-0000-0000-000000000000).
|
||||
bytes distributionId = 1; // distribution list ids are uuids
|
||||
|
||||
// If unset, importers should skip the item entirely without showing an error.
|
||||
oneof item {
|
||||
uint64 deletionTimestamp = 2;
|
||||
DistributionList distributionList = 3;
|
||||
@@ -330,7 +337,7 @@ message DistributionListItem {
|
||||
|
||||
message DistributionList {
|
||||
enum PrivacyMode {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Only with"
|
||||
ONLY_WITH = 1;
|
||||
ALL_EXCEPT = 2;
|
||||
ALL = 3;
|
||||
@@ -365,12 +372,14 @@ message ChatItem {
|
||||
repeated ChatItem revisions = 6; // ordered from oldest to newest
|
||||
bool sms = 7;
|
||||
|
||||
// If unset, importers should skip this item without throwing an error.
|
||||
oneof directionalDetails {
|
||||
IncomingMessageDetails incoming = 8;
|
||||
OutgoingMessageDetails outgoing = 9;
|
||||
DirectionlessMessageDetails directionless = 10;
|
||||
}
|
||||
|
||||
// If unset, importers should skip this item without throwing an error.
|
||||
oneof item {
|
||||
StandardMessage standardMessage = 11;
|
||||
ContactMessage contactMessage = 12;
|
||||
@@ -419,6 +428,7 @@ message SendStatus {
|
||||
uint64 recipientId = 1;
|
||||
uint64 timestamp = 2; // the time the status was last updated -- if from a receipt, it should be the sentTime of the receipt
|
||||
|
||||
// If unset, importers should consider the status to be "pending"
|
||||
oneof deliveryStatus {
|
||||
Pending pending = 3;
|
||||
Sent sent = 4;
|
||||
@@ -455,6 +465,7 @@ message DirectStoryReplyMessage {
|
||||
FilePointer longText = 2;
|
||||
}
|
||||
|
||||
// If unset, importers should ignore the message without throwing an error.
|
||||
oneof reply {
|
||||
TextReply textReply = 1;
|
||||
string emoji = 2;
|
||||
@@ -473,7 +484,7 @@ message PaymentNotification {
|
||||
|
||||
message FailedTransaction { // Failed payments can't be synced from the ledger
|
||||
enum FailureReason {
|
||||
GENERIC = 0;
|
||||
GENERIC = 0; // A valid value -- reason unknown
|
||||
NETWORK = 1;
|
||||
INSUFFICIENT_FUNDS = 2;
|
||||
}
|
||||
@@ -482,7 +493,7 @@ message PaymentNotification {
|
||||
|
||||
message Transaction {
|
||||
enum Status {
|
||||
INITIAL = 0;
|
||||
INITIAL = 0; // A valid value -- state unconfirmed
|
||||
SUBMITTED = 1;
|
||||
SUCCESSFUL = 2;
|
||||
}
|
||||
@@ -499,6 +510,7 @@ message PaymentNotification {
|
||||
optional bytes receipt = 7; // mobile coin blobs
|
||||
}
|
||||
|
||||
// If unset, importers should treat the transaction as successful with no metadata.
|
||||
oneof payment {
|
||||
Transaction transaction = 1;
|
||||
FailedTransaction failedTransaction = 2;
|
||||
@@ -513,7 +525,7 @@ message PaymentNotification {
|
||||
|
||||
message GiftBadge {
|
||||
enum State {
|
||||
UNOPENED = 0;
|
||||
UNOPENED = 0; // A valid state
|
||||
OPENED = 1;
|
||||
REDEEMED = 2;
|
||||
FAILED = 3;
|
||||
@@ -541,7 +553,7 @@ message ContactAttachment {
|
||||
|
||||
message Phone {
|
||||
enum Type {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Home"
|
||||
HOME = 1;
|
||||
MOBILE = 2;
|
||||
WORK = 3;
|
||||
@@ -555,7 +567,7 @@ message ContactAttachment {
|
||||
|
||||
message Email {
|
||||
enum Type {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Intepret as "Home"
|
||||
HOME = 1;
|
||||
MOBILE = 2;
|
||||
WORK = 3;
|
||||
@@ -569,7 +581,7 @@ message ContactAttachment {
|
||||
|
||||
message PostalAddress {
|
||||
enum Type {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Home"
|
||||
HOME = 1;
|
||||
WORK = 2;
|
||||
CUSTOM = 3;
|
||||
@@ -629,7 +641,7 @@ message MessageAttachment {
|
||||
// but explicitly mutually exclusive. Note the different raw values
|
||||
// (non-zero starting values are not supported in proto3.)
|
||||
enum Flag {
|
||||
NONE = 0;
|
||||
NONE = 0; // A valid value -- no flag applied
|
||||
VOICE_MESSAGE = 1;
|
||||
BORDERLESS = 2;
|
||||
GIF = 3;
|
||||
@@ -680,6 +692,7 @@ message FilePointer {
|
||||
message InvalidAttachmentLocator {
|
||||
}
|
||||
|
||||
// If unset, importers should consider it to be an InvalidAttachmentLocator without throwing an error.
|
||||
oneof locator {
|
||||
BackupLocator backupLocator = 1;
|
||||
AttachmentLocator attachmentLocator = 2;
|
||||
@@ -698,7 +711,7 @@ message FilePointer {
|
||||
|
||||
message Quote {
|
||||
enum Type {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Normal"
|
||||
NORMAL = 1;
|
||||
GIFT_BADGE = 2;
|
||||
VIEW_ONCE = 3;
|
||||
@@ -719,7 +732,7 @@ message Quote {
|
||||
|
||||
message BodyRange {
|
||||
enum Style {
|
||||
NONE = 0;
|
||||
NONE = 0; // Importers should ignore the body range without throwing an error.
|
||||
BOLD = 1;
|
||||
ITALIC = 2;
|
||||
SPOILER = 3;
|
||||
@@ -727,9 +740,12 @@ message BodyRange {
|
||||
MONOSPACE = 5;
|
||||
}
|
||||
|
||||
optional uint32 start = 1;
|
||||
optional uint32 length = 2;
|
||||
// 'start' and 'length' are measured in UTF-16 code units.
|
||||
// They may refer to offsets in a longText attachment.
|
||||
uint32 start = 1;
|
||||
uint32 length = 2;
|
||||
|
||||
// If unset, importers should ignore the body range without throwing an error.
|
||||
oneof associatedValue {
|
||||
bytes mentionAci = 3;
|
||||
Style style = 4;
|
||||
@@ -746,6 +762,7 @@ message Reaction {
|
||||
}
|
||||
|
||||
message ChatUpdateMessage {
|
||||
// If unset, importers should ignore the update message without throwing an error.
|
||||
oneof update {
|
||||
SimpleChatUpdate simpleUpdate = 1;
|
||||
GroupChangeChatUpdate groupChange = 2;
|
||||
@@ -761,19 +778,19 @@ message ChatUpdateMessage {
|
||||
|
||||
message IndividualCall {
|
||||
enum Type {
|
||||
UNKNOWN_TYPE = 0;
|
||||
UNKNOWN_TYPE = 0; // Interpret as "Audio call"
|
||||
AUDIO_CALL = 1;
|
||||
VIDEO_CALL = 2;
|
||||
}
|
||||
|
||||
enum Direction {
|
||||
UNKNOWN_DIRECTION = 0;
|
||||
UNKNOWN_DIRECTION = 0; // Interpret as "Incoming"
|
||||
INCOMING = 1;
|
||||
OUTGOING = 2;
|
||||
}
|
||||
|
||||
enum State {
|
||||
UNKNOWN_STATE = 0;
|
||||
UNKNOWN_STATE = 0; // Interpret as "Accepted"
|
||||
ACCEPTED = 1;
|
||||
NOT_ACCEPTED = 2;
|
||||
// An incoming call that is no longer ongoing, which we neither accepted
|
||||
@@ -794,7 +811,7 @@ message IndividualCall {
|
||||
|
||||
message GroupCall {
|
||||
enum State {
|
||||
UNKNOWN_STATE = 0;
|
||||
UNKNOWN_STATE = 0; // Interpret as "Generic"
|
||||
// A group call was started without ringing.
|
||||
GENERIC = 1;
|
||||
// We joined a group call that was started without ringing.
|
||||
@@ -825,7 +842,7 @@ message GroupCall {
|
||||
|
||||
message SimpleChatUpdate {
|
||||
enum Type {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Importers should skip the update without throwing an error.
|
||||
JOINED_SIGNAL = 1;
|
||||
IDENTITY_UPDATE = 2;
|
||||
IDENTITY_VERIFIED = 3;
|
||||
@@ -859,6 +876,7 @@ message ProfileChangeChatUpdate {
|
||||
}
|
||||
|
||||
message LearnedProfileChatUpdate {
|
||||
// If unset, importers should consider the previous name to be an empty string.
|
||||
oneof previousName {
|
||||
uint64 e164 = 1;
|
||||
string username = 2;
|
||||
@@ -875,6 +893,7 @@ message SessionSwitchoverChatUpdate {
|
||||
|
||||
message GroupChangeChatUpdate {
|
||||
message Update {
|
||||
// If unset, importers should consider it to be a GenericGroupUpdate with unset updaterAci
|
||||
oneof update {
|
||||
GenericGroupUpdate genericGroupUpdate = 1;
|
||||
GroupCreationUpdate groupCreationUpdate = 2;
|
||||
@@ -944,7 +963,7 @@ message GroupDescriptionUpdate {
|
||||
}
|
||||
|
||||
enum GroupV2AccessLevel {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Unsatisfiable"
|
||||
ANY = 1;
|
||||
MEMBER = 2;
|
||||
ADMINISTRATOR = 3;
|
||||
@@ -1134,6 +1153,7 @@ message ChatStyle {
|
||||
message CustomChatColor {
|
||||
uint64 id = 1;
|
||||
|
||||
// If unset, use the default chat color
|
||||
oneof color {
|
||||
fixed32 solid = 2; // 0xAARRGGBB
|
||||
Gradient gradient = 3;
|
||||
@@ -1144,7 +1164,7 @@ message ChatStyle {
|
||||
}
|
||||
|
||||
enum WallpaperPreset {
|
||||
UNKNOWN_WALLPAPER_PRESET = 0;
|
||||
UNKNOWN_WALLPAPER_PRESET = 0; // Interpret as the wallpaper being unset
|
||||
SOLID_BLUSH = 1;
|
||||
SOLID_COPPER = 2;
|
||||
SOLID_DUST = 3;
|
||||
@@ -1169,7 +1189,7 @@ message ChatStyle {
|
||||
}
|
||||
|
||||
enum BubbleColorPreset {
|
||||
UNKNOWN_BUBBLE_COLOR_PRESET = 0;
|
||||
UNKNOWN_BUBBLE_COLOR_PRESET = 0; // Interpret as the user's default chat bubble color
|
||||
SOLID_ULTRAMARINE = 1;
|
||||
SOLID_CRIMSON = 2;
|
||||
SOLID_VERMILION = 3;
|
||||
@@ -1194,6 +1214,7 @@ message ChatStyle {
|
||||
GRADIENT_TANGERINE = 22;
|
||||
}
|
||||
|
||||
// If unset, importers should consider there to be no wallpaper.
|
||||
oneof wallpaper {
|
||||
WallpaperPreset wallpaperPreset = 1;
|
||||
// This `FilePointer` is expected not to contain a `fileName`, `width`,
|
||||
@@ -1201,6 +1222,7 @@ message ChatStyle {
|
||||
FilePointer wallpaperPhoto = 2;
|
||||
}
|
||||
|
||||
// If unset, importers should consider it to be AutomaticBubbleColor
|
||||
oneof bubbleColor {
|
||||
// Bubble setting is automatically determined based on the wallpaper setting,
|
||||
// or `SOLID_ULTRAMARINE` for `noWallpaper`
|
||||
@@ -1216,7 +1238,7 @@ message ChatStyle {
|
||||
|
||||
message NotificationProfile {
|
||||
enum DayOfWeek {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Monday"
|
||||
MONDAY = 1;
|
||||
TUESDAY = 2;
|
||||
WEDNESDAY = 3;
|
||||
@@ -1242,7 +1264,7 @@ message NotificationProfile {
|
||||
message ChatFolder {
|
||||
// Represents the default "All chats" folder record vs all other custom folders
|
||||
enum FolderType {
|
||||
UNKNOWN = 0;
|
||||
UNKNOWN = 0; // Interpret as "Custom"
|
||||
ALL = 1;
|
||||
CUSTOM = 2;
|
||||
}
|
||||
@@ -1257,4 +1279,4 @@ message ChatFolder {
|
||||
FolderType folderType = 6;
|
||||
repeated uint64 includedRecipientIds = 7; // generated recipient id of groups, contacts, and/or note to self
|
||||
repeated uint64 excludedRecipientIds = 8; // generated recipient id of groups, contacts, and/or note to self
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ androidx-window = "1.3.0"
|
||||
glide = "4.15.1"
|
||||
gradle = "8.7.3"
|
||||
kotlin = "2.1.0"
|
||||
libsignal-client = "0.65.2"
|
||||
libsignal-client = "0.65.4"
|
||||
mp4parser = "1.9.39"
|
||||
android-gradle-plugin = "8.7.2"
|
||||
accompanist = "0.28.0"
|
||||
|
||||
@@ -6604,20 +6604,20 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="6eb4422e8a618b3b76cb2096a3619d251f9e27989dc68307a1e5414c3710f2d1" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.signal" name="libsignal-android" version="0.65.2">
|
||||
<artifact name="libsignal-android-0.65.2.aar">
|
||||
<sha256 value="faab9438ba2e62324f76dfd2c24fbaabc1fed547dd3d6e6020ad417d8f9321f3" origin="Generated by Gradle"/>
|
||||
<component group="org.signal" name="libsignal-android" version="0.65.4">
|
||||
<artifact name="libsignal-android-0.65.4.aar">
|
||||
<sha256 value="21e2d7f9477e6c790cf460d839daaa7d74fda43e1f33360efd89a52eee26b906" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="libsignal-android-0.65.2.module">
|
||||
<sha256 value="fb0c7ea259e7e6d3099b0e738cbd728be4af8cc284b5fb624bb11b4412384837" origin="Generated by Gradle"/>
|
||||
<artifact name="libsignal-android-0.65.4.module">
|
||||
<sha256 value="d86f7b3e763be0638e8d0048292834a720412a57c67eeb764ade339a8a66350d" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.signal" name="libsignal-client" version="0.65.2">
|
||||
<artifact name="libsignal-client-0.65.2.jar">
|
||||
<sha256 value="ab3f8a2f8915bf14af9b219f7690026c33071a40da4a284213ba6cfc16538d72" origin="Generated by Gradle"/>
|
||||
<component group="org.signal" name="libsignal-client" version="0.65.4">
|
||||
<artifact name="libsignal-client-0.65.4.jar">
|
||||
<sha256 value="4f57d871be39b000a9f5611feba60c305420c4c4a1ed1d224584d0d9c4325d0c" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="libsignal-client-0.65.2.module">
|
||||
<sha256 value="4b1ab575de696867241e1bbbee4224824f6c38aa835d422e591a62cdc98dd34c" origin="Generated by Gradle"/>
|
||||
<artifact name="libsignal-client-0.65.4.module">
|
||||
<sha256 value="45c7e668b5fa408d9e2c389631e72cd11741aeff375ef2c8f0e74752f6e687d2" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.signal" name="ringrtc-android" version="2.49.3">
|
||||
|
||||
Reference in New Issue
Block a user