mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-25 16:45:20 +00:00
clean code and fix signature to null
This commit is contained in:
@@ -286,66 +286,3 @@ class EncryptionService(private val context: Context) {
|
|||||||
Log.d(TAG, "🔌 EncryptionService shut down")
|
Log.d(TAG, "🔌 EncryptionService shut down")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Message padding utilities - exact same as iOS version
|
|
||||||
*/
|
|
||||||
object MessagePadding {
|
|
||||||
// Standard block sizes for padding
|
|
||||||
private val blockSizes = listOf(256, 512, 1024, 2048)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add PKCS#7-style padding to reach target size
|
|
||||||
*/
|
|
||||||
fun pad(data: ByteArray, targetSize: Int): ByteArray {
|
|
||||||
if (data.size >= targetSize) return data
|
|
||||||
|
|
||||||
val paddingNeeded = targetSize - data.size
|
|
||||||
|
|
||||||
// PKCS#7 only supports padding up to 255 bytes
|
|
||||||
if (paddingNeeded > 255) return data
|
|
||||||
|
|
||||||
val padded = ByteArray(targetSize)
|
|
||||||
System.arraycopy(data, 0, padded, 0, data.size)
|
|
||||||
|
|
||||||
// Fill with random bytes except the last byte
|
|
||||||
val random = SecureRandom()
|
|
||||||
random.nextBytes(padded.sliceArray(data.size until targetSize - 1))
|
|
||||||
|
|
||||||
// Last byte indicates padding length (PKCS#7)
|
|
||||||
padded[targetSize - 1] = paddingNeeded.toByte()
|
|
||||||
|
|
||||||
return padded
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove padding from data
|
|
||||||
*/
|
|
||||||
fun unpad(data: ByteArray): ByteArray {
|
|
||||||
if (data.isEmpty()) return data
|
|
||||||
|
|
||||||
// Last byte tells us how much padding to remove
|
|
||||||
val paddingLength = (data.last().toInt() and 0xFF)
|
|
||||||
if (paddingLength <= 0 || paddingLength > data.size) return data
|
|
||||||
|
|
||||||
return data.sliceArray(0 until (data.size - paddingLength))
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Find optimal block size for data
|
|
||||||
*/
|
|
||||||
fun optimalBlockSize(dataSize: Int): Int {
|
|
||||||
// Account for encryption overhead (~16 bytes for AES-GCM tag)
|
|
||||||
val totalSize = dataSize + 16
|
|
||||||
|
|
||||||
// Find smallest block that fits
|
|
||||||
for (blockSize in blockSizes) {
|
|
||||||
if (totalSize <= blockSize) {
|
|
||||||
return blockSize
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// For very large messages, just use the original size
|
|
||||||
return dataSize
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.bitchat.android.mesh
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.bitchat.android.crypto.EncryptionService
|
import com.bitchat.android.crypto.EncryptionService
|
||||||
import com.bitchat.android.crypto.MessagePadding
|
import com.bitchat.android.protocol.MessagePadding
|
||||||
import com.bitchat.android.model.BitchatMessage
|
import com.bitchat.android.model.BitchatMessage
|
||||||
import com.bitchat.android.model.RoutedPacket
|
import com.bitchat.android.model.RoutedPacket
|
||||||
import com.bitchat.android.model.DeliveryAck
|
import com.bitchat.android.model.DeliveryAck
|
||||||
@@ -14,6 +14,7 @@ import com.bitchat.android.protocol.SpecialRecipients
|
|||||||
import com.bitchat.android.util.toHexString
|
import com.bitchat.android.util.toHexString
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import kotlin.math.sign
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -437,8 +438,8 @@ class BluetoothMeshService(private val context: Context) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
message.toBinaryPayload()?.let { messageData ->
|
message.toBinaryPayload()?.let { messageData ->
|
||||||
// Sign the message
|
// Sign the message: TODO: NOT SIGNED
|
||||||
val signature = securityManager.signPacket(messageData)
|
// val signature = securityManager.signPacket(messageData)
|
||||||
|
|
||||||
val packet = BitchatPacket(
|
val packet = BitchatPacket(
|
||||||
version = 1u,
|
version = 1u,
|
||||||
@@ -447,7 +448,7 @@ class BluetoothMeshService(private val context: Context) {
|
|||||||
recipientID = SpecialRecipients.BROADCAST,
|
recipientID = SpecialRecipients.BROADCAST,
|
||||||
timestamp = System.currentTimeMillis().toULong(),
|
timestamp = System.currentTimeMillis().toULong(),
|
||||||
payload = messageData,
|
payload = messageData,
|
||||||
signature = signature,
|
signature = null,
|
||||||
ttl = MAX_TTL
|
ttl = MAX_TTL
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.bitchat.android.mesh
|
package com.bitchat.android.mesh
|
||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.bitchat.android.crypto.MessagePadding
|
|
||||||
import com.bitchat.android.model.BitchatMessage
|
import com.bitchat.android.model.BitchatMessage
|
||||||
import com.bitchat.android.model.DeliveryAck
|
import com.bitchat.android.model.DeliveryAck
|
||||||
import com.bitchat.android.model.ReadReceipt
|
import com.bitchat.android.model.ReadReceipt
|
||||||
|
|||||||
Reference in New Issue
Block a user