feat(pki): log keybox attestation cert serials
Emit each loaded keybox's certificate-chain serials (lowercase hex) at parse time. A revoked or leaked keybox is then visible from logcat alone, since Google's CRL and Duck Detector's "mass abuse" check both match by certificate serial. Diagnostic aid for the revoked-keybox danger in #28; the actual fix is rotating to a non-revoked keybox.
This commit is contained in:
@@ -3,6 +3,7 @@ package org.matrix.TEESimulator.pki
|
||||
import android.security.keystore.KeyProperties
|
||||
import java.io.File
|
||||
import java.io.StringReader
|
||||
import java.security.cert.X509Certificate
|
||||
import java.security.interfaces.ECPrivateKey
|
||||
import java.security.interfaces.RSAPrivateKey
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
@@ -232,6 +233,15 @@ object KeyBoxManager {
|
||||
eventType = parser.next()
|
||||
}
|
||||
SystemLogger.info("Finished parsing, found ${foundKeys.size} valid keys.")
|
||||
// Surface attestation cert serials so a revoked/leaked keybox is obvious from
|
||||
// logcat alone -- Google's CRL and Duck's "mass abuse" check both match by serial.
|
||||
foundKeys.forEach { (alg, keyBox) ->
|
||||
val serials =
|
||||
keyBox.certificates.joinToString(", ") { cert ->
|
||||
(cert as? X509Certificate)?.serialNumber?.toString(16) ?: "?"
|
||||
}
|
||||
SystemLogger.info("$alg keybox attestation cert serials (hex): $serials")
|
||||
}
|
||||
return foundKeys
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user