Skip to content

Instantly share code, notes, and snippets.

@ivaniskandar
Created June 7, 2020 05:57
Show Gist options
  • Save ivaniskandar/351423d270b36ff11ee9e6a4d3a38d1e to your computer and use it in GitHub Desktop.
Save ivaniskandar/351423d270b36ff11ee9e6a4d3a38d1e to your computer and use it in GitHub Desktop.
get signature
// https://stackoverflow.com/a/53407183
fun Context.getApplicationSignature(packageName: String): List<String> {
val signatureList: List<String>
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
// New signature
val sig = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES).signingInfo
signatureList = if (sig.hasMultipleSigners()) {
// Send all with apkContentsSigners
sig.apkContentsSigners.map {
val digest = MessageDigest.getInstance("SHA")
digest.update(it.toByteArray())
digest.digest().toHexString()
}
} else {
// Send one with signingCertificateHistory
sig.signingCertificateHistory.map {
val digest = MessageDigest.getInstance("SHA")
digest.update(it.toByteArray())
digest.digest().toHexString()
}
}
} else {
val sig = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES).signatures
signatureList = sig.map {
val digest = MessageDigest.getInstance("SHA")
digest.update(it.toByteArray())
digest.digest().toHexString()
}
}
return signatureList
} catch (e: Exception) {
// Handle error
}
return emptyList()
}
fun ByteArray.toHexString() = joinToString("") { "%02x".format(it).toUpperCase(Locale.ROOT) }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment