From 6d6b4d845a7de9f0a9f51977485a73225dd189f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Gerlei?= Date: Thu, 23 May 2024 07:51:57 +0200 Subject: [PATCH] Add SHA-1 signature to App Details screen --- .../certificate/AppCertificateDetailsFragmentViewModel.kt | 5 +++++ app/src/main/res/values-ja/strings.xml | 2 ++ app/src/main/res/values-zh-rTW/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ .../apkanalyzer/core/appanalysis/CertificateManager.kt | 2 ++ .../apkanalyzer/core/appanalysis/model/CertificateData.kt | 2 ++ .../martin/apkanalyzer/core/common/digest/DigestManager.kt | 4 ++++ 7 files changed, 19 insertions(+) diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/ui/appdetail/page/certificate/AppCertificateDetailsFragmentViewModel.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/ui/appdetail/page/certificate/AppCertificateDetailsFragmentViewModel.kt index 6eebbd0c..23e3a6a8 100644 --- a/app/src/main/java/sk/styk/martin/apkanalyzer/ui/appdetail/page/certificate/AppCertificateDetailsFragmentViewModel.kt +++ b/app/src/main/java/sk/styk/martin/apkanalyzer/ui/appdetail/page/certificate/AppCertificateDetailsFragmentViewModel.kt @@ -43,6 +43,11 @@ class AppCertificateDetailsFragmentViewModel @AssistedInject constructor( TextInfo.from(data.certificateHashMd5), TextInfo.from(R.string.cert_md5_description), ), + DetailInfoAdapter.DetailInfo( + TextInfo.from(R.string.cert_sha1), + TextInfo.from(data.certificateHashSha1), + TextInfo.from(R.string.cert_sha1_description), + ), DetailInfoAdapter.DetailInfo( TextInfo.from(R.string.cert_sha256), TextInfo.from(data.certificateHashSha256), diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index a278ac24..0641aaf7 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -126,6 +126,7 @@ 開始 : 有効期限 : MD5証明書 + SHA-1証明書 SHA-256証明書 発行者名 発行組織 @@ -138,6 +139,7 @@ 証明書の有効期間の開始 証明書の有効期間の終了 証明書のMD5ハッシュ + 証明書のSHA-1ハッシュ 証明書のSHA-256ハッシュ 証明書の発行者の名前 証明書の組織の名前 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index df818ac4..8775ea33 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -190,6 +190,7 @@ 有效日期 截止日期 MD5 憑證 + SHA-1 憑證 SHA-256 憑證 發行者名稱 發行機構 @@ -203,6 +204,7 @@ 憑證生效起始日期。 憑證效力截止日期。 憑證的 MD5 雜湊值。 + 憑證的 SHA-1 雜湊值。 憑證的 SHA-256 雜湊值。 憑證發行者名稱。 憑證發行機構名稱。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1cc1eb5b..a360d7ad 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -154,6 +154,7 @@ Valid from Valid to Certificate MD5 + Certificate SHA-1 Certificate SHA-256 Issuer name Issuer organization @@ -166,6 +167,7 @@ Start of validity period of the certificate. End of validity period of the certificate. MD5 hash of the certificate. + SHA-1 hash of the certificate. SHA-256 hash of the certificate. Name of issuer of the certificate Name of organization of issuer of the certificate diff --git a/core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/CertificateManager.kt b/core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/CertificateManager.kt index ec26e8d3..16052106 100644 --- a/core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/CertificateManager.kt +++ b/core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/CertificateManager.kt @@ -24,8 +24,10 @@ class CertificateManager @Inject internal constructor(private val digestManager: CertificateData( signAlgorithm = certificate.sigAlgName, certificateHashMd5 = digestManager.md5Digest(certificate.encoded), + certificateHashSha1 = digestManager.sha1Digest(certificate.encoded), certificateHashSha256 = digestManager.sha256Digest(certificate.encoded), publicKeyMd5 = digestManager.md5Digest(digestManager.byteToHexString(certificate.publicKey.encoded)), + publicKeySha1 = digestManager.sha1Digest(digestManager.byteToHexString(certificate.publicKey.encoded)), publicKeySha256 = digestManager.sha256Digest(digestManager.byteToHexString(certificate.publicKey.encoded)), startDate = certificate.notBefore, endDate = certificate.notAfter, diff --git a/core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/model/CertificateData.kt b/core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/model/CertificateData.kt index 8a240155..04d1df08 100644 --- a/core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/model/CertificateData.kt +++ b/core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/model/CertificateData.kt @@ -11,8 +11,10 @@ import java.util.Date data class CertificateData( val signAlgorithm: String, val certificateHashMd5: String, + val certificateHashSha1: String, val certificateHashSha256: String, val publicKeyMd5: String, + val publicKeySha1: String, val publicKeySha256: String, val startDate: Date, val endDate: Date, diff --git a/core/common/src/main/java/sk/styk/martin/apkanalyzer/core/common/digest/DigestManager.kt b/core/common/src/main/java/sk/styk/martin/apkanalyzer/core/common/digest/DigestManager.kt index 22b5ace5..8e8ada3e 100644 --- a/core/common/src/main/java/sk/styk/martin/apkanalyzer/core/common/digest/DigestManager.kt +++ b/core/common/src/main/java/sk/styk/martin/apkanalyzer/core/common/digest/DigestManager.kt @@ -12,6 +12,10 @@ class DigestManager @Inject constructor() { fun md5Digest(input: String): String = md5Digest(input.toByteArray()) + fun sha1Digest(input: ByteArray): String = computeHash(algorithm = "SHA-1", input) + + fun sha1Digest(input: String): String = sha1Digest(input.toByteArray()) + fun sha256Digest(input: ByteArray): String = computeHash(algorithm = "SHA-256", input) fun sha256Digest(input: String): String = sha256Digest(input.toByteArray())