getsentry / getsentry/sentry-java

Report app's signature as part of app context

Đang mở
#2,825 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Android Errors Improvement
Ngôn ngữ chính
Kotlin
Star
1.4k
Fork
478
Merge trung bình
2 ngày 23 giờ
Pull request đã merge (30 ngày)
67

Mô tả

### Description

This can be used to understand if strange errors are thrown from reverse-engineered apps or if it's your own app.
This can be sensitive, maybe it should be hidden behind a flag.
If possible, that applies to Apple apps as well.

```
@Suppress("DEPRECATION")
fun Context.getPackageInfoCompat(): PackageInfo =
if (VERSION.SDK_INT >= VERSION_CODES.P) {
packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES)
} else {
packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
}

@Suppress("DEPRECATION")
fun Context.getApkSignaturesCompat(): Array =
if (VERSION.SDK_INT >= VERSION_CODES.P) {
getPackageInfoCompat().signingInfo.apkContentsSigners
} else {
getPackageInfoCompat().signatures
}

fun bytesToHex(bytes: ByteArray): String {
val builder = StringBuilder()
bytes.forEachIndexed { index, byte ->
builder.append("%02x".format(Locale.ROOT, byte).uppercase())
if (index < bytes.size - 1) {
builder.append(":")
}
}
return builder.toString()
}

fun getAppSignatureHash(context: Context): String? = kotlin.runCatching {
val md = MessageDigest.getInstance("SHA-256")
val sig = context.getApkSignaturesCompat().firstOrNull() ?: return null
md.update(sig.toByteArray())
val digest = md.digest()
bytesToHex(digest)
}.getOrNull()

//...
val signature = getAppSignatureHash(context)
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.