fix: Steam starts on ROMs that refuse the Android ID read

This commit is contained in:
maxjivi05 committed 2026-10-23 15:50:16 -04:00
1 parent 2d59f03e7b
commit b6ca673d6e
2 files changed
+31 -7

No files matched your search

@@ -301,15 +301,18 @@ class LinuxNetworkLinkComponent(
}
}
private fun seededMac(): String {
val id = Settings.Secure.getString(appContext.contentResolver, Settings.Secure.ANDROID_ID) ?: "bannerlator"
val bytes = java.security.MessageDigest.getInstance("SHA-1").digest(id.toByteArray())
val b0 = (bytes[0].toInt() and 0xfc) or 0x02
return listOf(b0, bytes[1].toInt(), bytes[2].toInt(), bytes[3].toInt(), bytes[4].toInt(), bytes[5].toInt())
.joinToString(":") { "%02x".format(it and 0xff) }
}
private fun seededMac(): String =
seededMac { Settings.Secure.getString(appContext.contentResolver, Settings.Secure.ANDROID_ID) }
companion object {
internal fun seededMac(readId: () -> String?): String {
val id = runCatching(readId).getOrNull() ?: "bannerlator"
val bytes = java.security.MessageDigest.getInstance("SHA-1").digest(id.toByteArray())
val b0 = (bytes[0].toInt() and 0xfc) or 0x02
return listOf(b0, bytes[1].toInt(), bytes[2].toInt(), bytes[3].toInt(), bytes[4].toInt(), bytes[5].toInt())
.joinToString(":") { "%02x".format(it and 0xff) }
}
private const val TAG = "LinuxNetworkLink"
private const val LINK_FILE = "etc/droiddeck-net"
private const val LINK_INDEX = 2
@@ -0,0 +1,21 @@
package com.droiddeck.launcher.runtime
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotEquals
import org.junit.Test
class SeededMacTest {
@Test
fun theAndroidIdSeedsAStableLocalMac() {
val mac = LinuxNetworkLinkComponent.seededMac { "0123456789abcdef" }
assertEquals(mac, LinuxNetworkLinkComponent.seededMac { "0123456789abcdef" })
assertNotEquals(mac, LinuxNetworkLinkComponent.seededMac { null })
assertEquals(0x02, mac.substringBefore(':').toInt(16) and 0x03)
}
@Test
fun aRomThatThrowsOnTheAndroidIdReadFallsBackToTheDefaultSeed() {
val mac = LinuxNetworkLinkComponent.seededMac { throw IllegalArgumentException("Illegal char: - at offset 8") }
assertEquals(LinuxNetworkLinkComponent.seededMac { null }, mac)
}
}