Skip to content

Commit 2d62054

Browse files
authored
Merge pull request #68 from balazsgerlei/display-sha256-signatures
Add SHA-256 signature to App Details screen
2 parents 67b0145 + ba3e25e commit 2d62054

File tree

7 files changed

+30
-3
lines changed

7 files changed

+30
-3
lines changed

app/src/main/java/sk/styk/martin/apkanalyzer/ui/appdetail/page/certificate/AppCertificateDetailsFragmentViewModel.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,14 @@ class AppCertificateDetailsFragmentViewModel @AssistedInject constructor(
4040
),
4141
DetailInfoAdapter.DetailInfo(
4242
TextInfo.from(R.string.cert_md5),
43-
TextInfo.from(data.certificateHash),
43+
TextInfo.from(data.certificateHashMd5),
4444
TextInfo.from(R.string.cert_md5_description),
4545
),
46+
DetailInfoAdapter.DetailInfo(
47+
TextInfo.from(R.string.cert_sha256),
48+
TextInfo.from(data.certificateHashSha256),
49+
TextInfo.from(R.string.cert_sha256_description),
50+
),
4651
data.issuerName?.let {
4752
DetailInfoAdapter.DetailInfo(
4853
TextInfo.from(R.string.issuer_name),

app/src/main/res/values-ja/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
<string name="start_date">開始 : </string>
127127
<string name="end_date">有効期限 : </string>
128128
<string name="cert_md5">MD5証明書</string>
129+
<string name="cert_sha256">SHA-256証明書</string>
129130
<string name="issuer_name">発行者名</string>
130131
<string name="issuer_organization">発行組織</string>
131132
<string name="issuer_country">発行国</string>
@@ -137,6 +138,7 @@
137138
<string name="start_date_description">証明書の有効期間の開始</string>
138139
<string name="end_date_description">証明書の有効期間の終了</string>
139140
<string name="cert_md5_description">証明書のMD5ハッシュ</string>
141+
<string name="cert_sha256_description">証明書のSHA-256ハッシュ</string>
140142
<string name="issuer_name_description">証明書の発行者の名前</string>
141143
<string name="issuer_organization_description">証明書の組織の名前</string>
142144
<string name="issuer_country_description">証明書の発行国の名前</string>

app/src/main/res/values-zh-rTW/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@
190190
<string name="start_date">有效日期</string>
191191
<string name="end_date">截止日期</string>
192192
<string name="cert_md5">MD5 憑證</string>
193+
<string name="cert_sha256">SHA-256 憑證</string>
193194
<string name="issuer_name">發行者名稱</string>
194195
<string name="issuer_organization">發行機構</string>
195196
<string name="issuer_country">發行國家</string>
@@ -202,6 +203,7 @@
202203
<string name="start_date_description">憑證生效起始日期。</string>
203204
<string name="end_date_description">憑證效力截止日期。</string>
204205
<string name="cert_md5_description">憑證的 MD5 雜湊值。</string>
206+
<string name="cert_sha256_description">憑證的 SHA-256 雜湊值。</string>
205207
<string name="issuer_name_description">憑證發行者名稱。</string>
206208
<string name="issuer_organization_description">憑證發行機構名稱。</string>
207209
<string name="issuer_country_description">發行憑證的國家代號。</string>

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@
154154
<string name="start_date">Valid from</string>
155155
<string name="end_date">Valid to</string>
156156
<string name="cert_md5">Certificate MD5</string>
157+
<string name="cert_sha256">Certificate SHA-256</string>
157158
<string name="issuer_name">Issuer name</string>
158159
<string name="issuer_organization">Issuer organization</string>
159160
<string name="issuer_country">Issuer country</string>
@@ -165,6 +166,7 @@
165166
<string name="start_date_description">Start of validity period of the certificate.</string>
166167
<string name="end_date_description">End of validity period of the certificate.</string>
167168
<string name="cert_md5_description">MD5 hash of the certificate.</string>
169+
<string name="cert_sha256_description">SHA-256 hash of the certificate.</string>
168170
<string name="issuer_name_description">Name of issuer of the certificate</string>
169171
<string name="issuer_organization_description">Name of organization of issuer of the certificate</string>
170172
<string name="issuer_country_description">Country of issuer of the certificate</string>

core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/CertificateManager.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ class CertificateManager @Inject internal constructor(private val digestManager:
2323

2424
CertificateData(
2525
signAlgorithm = certificate.sigAlgName,
26-
certificateHash = digestManager.md5Digest(certificate.encoded),
26+
certificateHashMd5 = digestManager.md5Digest(certificate.encoded),
27+
certificateHashSha256 = digestManager.md5Digest(certificate.encoded),
2728
publicKeyMd5 = digestManager.md5Digest(digestManager.byteToHexString(certificate.publicKey.encoded)),
29+
publicKeySha256 = digestManager.sha256Digest(digestManager.byteToHexString(certificate.publicKey.encoded)),
2830
startDate = certificate.notBefore,
2931
endDate = certificate.notAfter,
3032
serialNumber = certificate.serialNumber.toInt(),

core/app-analysis-core/src/main/java/sk/styk/martin/apkanalyzer/core/appanalysis/model/CertificateData.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ import java.util.Date
1010
@Parcelize
1111
data class CertificateData(
1212
val signAlgorithm: String,
13-
val certificateHash: String,
13+
val certificateHashMd5: String,
14+
val certificateHashSha256: String,
1415
val publicKeyMd5: String,
16+
val publicKeySha256: String,
1517
val startDate: Date,
1618
val endDate: Date,
1719
val serialNumber: Int = 0,

core/common/src/main/java/sk/styk/martin/apkanalyzer/core/common/digest/DigestManager.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@ class DigestManager @Inject constructor() {
2020
return getHexString(digest.digest())
2121
}
2222

23+
fun sha256Digest(input: ByteArray): String {
24+
val digest = getDigest("SHA-256")
25+
digest.update(input)
26+
return getHexString(digest.digest())
27+
}
28+
29+
fun sha256Digest(input: String): String {
30+
val digest = getDigest("SHA-256")
31+
digest.update(input.toByteArray())
32+
return getHexString(digest.digest())
33+
}
34+
2335
fun byteToHexString(bArray: ByteArray): String {
2436
val sb = StringBuilder(bArray.size)
2537
val var5 = bArray.size

0 commit comments

Comments
 (0)